软件测试用例的设计心得

软件测试用例的设计心得

20xx-4-21 11:43| 发布者: | 查看: 160| 评论: 0|原作者: 张兴凤|来自:

摘要: 1、了解软件的原始需求(测试目的) 在编写一个软件或者模块的测试用例时候,一定要明白这个功能的原始需求,也就是软件的使用者(客户)的需求。理解原始需求后,编写的测试用例才更有目的性。 2、熟悉软件的 ...

1

在编写一个软件或者模块的测试用例时候,一定要明白这个功能的原始需求,也就是软件的使用者(客户)的需求。理解原始需求后,编写的测试用例才更有目的性。

2、熟悉软件的功能需求(测试点)

这个功能需求是指软件的细化需求点,这个一般在需求文档里面都会体现。这里要做的是把 “粗略”的需求,细化成一个个小需求点。熟悉功能需求后,要知道软件是怎么使用的,这也才能覆盖到各种操作。

总之,测试用例一定要全部覆盖所有的需求点,这是最基本的一点。

3、熟悉软件的实现原理(测试点)

在理解原始需求和软件的功能需求后,根据需求编写的测试用例,基本上都能覆盖得比较全面了。

在此基础上,熟悉软件的实现原理,理解软件的内部处理。

(1)熟悉原理的过程是进一步深入熟悉软件的过程。如果单单是从需求点上面覆盖案例,测试用例只能覆盖“表面”的一层。一些内部的处理流程也许没有覆盖到,而这些没有覆盖到的代码很可能就是一个风险点。

(2)熟悉模块原理后,还有一点就是易于分析软件模块的关联性。一个大型的软件,都是一些小模块的组合而成。软件越是大型,耦合就越大,“互相影响”就会越多,若设计用例单单从模块本身考虑的话,很可能就会对其他模块造成风险。

4、用户场景和网上问题(测试点)

从用户的使用场景考虑,这在一些网络设备比较重要,比如软件后期在一些真实的使用环境中使用。

还要就是从一些网上问题总结出来的,那些地方容易出错,在设计案例的时候需要考虑进去。

5、测试用例的框架

一个测试用例的框架体现了一个测试人员在设计测试用例的整体思路。框架也是从大到小划分下来,可以是:

UI界面,功能,容错,兼容,性能等几大类,每个大类在根据软件的逻辑等进行划分成小类,最后细分到测试点。

6、测试步骤(测试技巧方法)

前面4点都是从测试点的角度考虑,测试用例在完成测试点外,接下来就是测试步骤和测试结果啦。

测试用例可以写的很详细,也可以写的比较简单。这要看公司的要求,有些公司要求测试步骤很细很细,包括测试结果和测试步骤一一对应。

要求测试步骤写的很详细的公司,一般是怕执行人员的执行力不到位,导致没有理解案例的目的,导致漏测。一般出现在新员工对软件系统的不熟悉。

如果测试步骤写的很详细的话,会很耗时间,而且过于详细的会限制执行人员的思维。个人认为测试用例的重点在于测试点上。

7、测试用例的一些思路

在设计测试用例中,通常较多使用的是边界值,等价类,通过和不通过测试。下面从单

个模块或者单个功能点考虑:(结合一些网上文章的观点)

(1)UI界面:易用性,提示信息,整体布局,按钮图标,色彩,中英文标点错别字。

(2)数据的多样性:有效数据,合法的无效数据(边界值),非法的异常数据,产生错误输出的合法数据组合等各种数据的组合。

(3)操作多样性:添加删除编辑查询,多用户的操作。

(4)容量测试

(5)用户权限:使用权限,各种操作的权限。

(6)升级安装卸载:平滑升级

(7)日志相关(包括调试日志)

(8)软件功能的逻辑划分:功能上划分未能覆盖的代码逻辑,可以添加白盒灰盒用例。

(9)可靠性,容错性

(10)兼容性:浏览器,系统,支撑软件。

(11)安全性

(12)性能(这里的性能是指,单个模块或者子系统的性能)

总之测试用例首先要能覆盖所有功能需求点,然后搞懂软件处理逻辑,可以找开发一起看测试用例,把没有覆盖到的代码流程相应的用例补充,至此,用例基本不会出现基本功能的问题。

在此基础上,可以进行一些可靠性,容错性,兼容性等用例的设计,测试下软件的稳定性。

 

第二篇:软件测试用例的设计心得

1、了解软件的原始需求(测试目的)

在编写一个软件或者模块的测试用例时候,一定要明白这个功能的原始需求,也就是软件的使用者(客户)的需求。理解原始需求后,编写的测试用例才更有目的性。

2、熟悉软件的功能需求(测试点)

这个功能需求是指软件的细化需求点,这个一般在需求文档里面都会体现。这里要做的是把 “粗略”的需求,细化成一个个小需求点。熟悉功能需求后,要知道软件是怎么使用的,这也才能覆盖到各种操作。

总之,测试用例一定要全部覆盖所有的需求点,这是最基本的一点。

3、熟悉软件的实现原理(测试点)

在理解原始需求和软件的功能需求后,根据需求编写的测试用例,基本上都能覆盖得比较全面了。

在此基础上,熟悉软件的实现原理,理解软件的内部处理。

(1)熟悉原理的过程是进一步深入熟悉软件的过程。如果单单是从需求点上面覆盖案例,测试用例只能覆盖“表面”的一层。一些内部的处理流程也许没有覆盖到,而这些没有覆盖到的代码很可能就是一个风险点。

(2)熟悉模块原理后,还有一点就是易于分析软件模块的关联性。一个大型的软件,都是一些小模块的组合而成。软件越是大型,耦合就越大,“互相影响”就会越多,若设计用例单单从模块本身考虑的话,很可能就会对其他模块造成风险。

4、用户场景和网上问题(测试点)

从用户的使用场景考虑,这在一些网络设备比较重要,比如软件后期在一些真实的使用环境中使用。

还要就是从一些网上问题总结出来的,那些地方容易出错,在设计案例的时候需要考虑进去 。

5、测试用例的框架

一个测试用例的框架体现了一个测试人员在设计测试用例的整体思路。框架也是从大到小划分下来,可以是:

UI界面,功能,容错,兼容,性能等几大类,每个大类在根据软件的逻辑等进行划分成小类,最后细分到测试点。

6、测试步骤(测试技巧方法)

前面4点都是从测试点的角度考虑,测试用例在完成测试点外,接下来就是测试步骤和测试结果啦。

测试用例可以写的很详细,也可以写的比较简单。这要看公司的要求,有些公司要求测试步骤很细很细,包括测试结果和测试步骤一一对应。

要求测试步骤写的很详细的公司,一般是怕执行人员的执行力不到位,导致没有理解案例的目的,导致漏测。一般出现在新员工对软件系统的不熟悉。 如果测试步骤写的很详细的话,会很耗时间,而且过于详细的会限制执行人员的思维。个人认为测试用例的重点在于测试点上。

7、测试用例的一些思路

在设计测试用例中,通常较多使用的是边界值,等价类,通过和不通过测试。下面从单个模块或者单个功能点考虑:(结合一些网上文章的观点)

(1)UI界面:易用性,提示信息,整体布局,按钮图标,色彩,中英文标点错别字。

(2)数据的多样性:有效数据,合法的无效数据(边界值),非法的异常数据,产生错误输出的合法数据组合等各种数据的组合。

(3)操作多样性:添加删除编辑查询 ,多用户的操作。

(4)容量测试

(5)用户权限:使用权限,各种操作的权限。

(6)升级安装卸载:平滑升级

(7)日志相关(包括调试日志)

(8)软件功能的逻辑划分:功能上划分未能覆盖的代码逻辑,可以添加白盒灰盒用例。

(9)可靠性,容错性

(10)兼容性:浏览器,系统,支撑软件。

(11)安全性

(12)性能(这里的性能是指,单个模块或者子系统的性能)

总之测试用例首先要能覆盖所有功能需求点,然后搞懂软件处理逻辑,可以找开发一起看测试用例,把没有覆盖到的代码流程相应的用例补充,至此,用例基本不会出现基本功能的问题。

在此基础上,可以进行一些可靠性,容错性,兼容性等用例的设计,测试下软件的稳定性。

 

第三篇:软件测试心得

软件测试心得体会

软件测试工作是一个系统而复杂的工程,软件测试的目的就是确保软件的质量、确认软件以正确的方式做了你所期望的事情,所以工作的主要任务是发现软件的错误、有效定义和实现软件成分由底层到高层的组装过程、验证软件是否满足规格书要求和系统定义文档所规定的技术要求、为软件质量模型的建立提供依据。

而且软件的测试不仅是要确保软件的质量,还要给开发人员提供信息,以方便其为风险评估做相应的准备,以及为其提供分析依据,重要的是要贯穿在整个软件开发的过程中,保证整个软件开发的过程是高质量的。

软件测试对测试工程师来讲,要求具备较强的专业知识,严谨细心耐心的测试态度,良好的反向思维、发散思维能力、沟通能力等等。

以下是就自己的个人工作经历谈一些浅见:

1.  标准文档的制定:

1.1.任何一个公司要让自己的产品面市,都要有自己的一     套完整的品质标准,这个标准一定是在符合国标及客户标准的基础上形成的企业标准,系统而全面地描述一款产品的功能、性能、可靠性、健壮性、安规要求等一系列的产品标准,并根据客户特定要求相应调整。

1.2.测试仪器的作业指导书(SOP)及保养说明等。定义仪器            的使用步骤、操作指南和保养细则等。

2.  测试资料的归档:

标准媒体文件、测试报告、BUG LIST库(电子类问题、结构类问题、软件类问题:方案自存问题、品证测试问题、生产测试问题、客户反馈问题、终端消费者反馈问题等)、认证测试文档归纳总结(认证公司培训资料、认证过程中出现并改善的问题)、测试工程师经验分享、常见问题解答FAQ等。

3.  功能测试:

3.1.这是软件测试工作中最核心和最基本的一项测试,该测试的主要内容是检查软件是否符合需求定义,并通过构造正常的操作来检查的动作是否正确;在这个测试里,正确性是最最重要的软件质量要素。

3.2.功能测试按照可见性可以分为两类:显性功能和隐性功能。

显性功能:指在菜单里可以看得到的功能。

隐性功能:指在菜单里看不到的功能。

例如,电话本的显性功能有增加、编辑、删除、拨打等,这些功能可以在电话本的菜单里面看得到,姓名列表排序则属于一个隐性功能,因为在电话本的菜单里没有这样一个子菜单,但它却是一个实实在在的功能。

如以下这些隐性功能都测试中都需重点关注:

a. 电话本上下页切换,是否有遗漏联系人信息?

b. 是否支持手机内存、SIM卡电话本的同时下载?还是支持从一种介质里下载?

c. 断电后再上电,系统设置的时间是否有记忆功能?

d. GPS信号正常时,导航地图中时间是否有更新?

e. TFT屏在Power off→on, ACC off→on时,屏的角度是否有记忆?

f. 模拟导航时,是否有双工功能?后台源声音输出是否正常?

g. 路试语音产品外置麦克风使用效果时,考虑车速、风声、车内讲话噪声、汽车底盘/发动机噪声等对麦克风录音效果的影响,软件多线程开启时导致的资源占用/系统繁忙对后台录音系统的影响。(也可从结构方面考虑:外置麦克风型腔开孔的接触面积,是否360度可旋转等来增加录音的路径等。)

h. 地图上的POI信息通过后台语音搜索获取不到,解决措施:要求方案商讯飞完善后台语音库。

3.3.在实际的测试过程中,显性功能通过菜单遍历可以很容易地进行无遗漏的测试,但是隐性功能却很容易为我们所忽略!一个有效的解决办法是去检查软件的功能定义列表(Feature List),从这个列表里面找出那些隐性的功能。

3.4.制定测试用例时,要充分考虑各功能模块软件的显性功能和隐性功能。

4.  健壮性测试:

       橘生淮南则为橘,生于淮北则为枳。是说明橘的健壮性太差。该成语充分说明了我们对产品进行健壮性测试的必要性。

4.1.健壮性是指在异常情况下,软件还能正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力。

健壮性测试主要包括:电子硬件健壮性(如:遥控距离测试、高低电压适应性测试、插拔电及开关机测试、静电抗扰度测试、热插拔测试)和机械健壮性(如:整机结构设计基准测试、模拟运输测试、常温包装跌落测试)。

4.2.这项测试主要是检查软件对异常操作的容错能力,异常操作通常要考虑异常输入操作及异常条件两个方面。

例如:测试蓝光媒体播放器时,反复把HDMI连接线拔掉,造成通信异常中断,再接上复合视频(CVBS)信号输出,即由数字信号输出转为模拟信号输出。恢复测试重点考察一下几项:(1)系统能否重新运行;(2)有无重要的数据丢失;(3)是否毁坏了其它相关的软件或硬件;(4)若软件出现系统报错,是否有自恢复能力。

4.3.软件的很多功能的实现是有很多隐含的条件的,在健壮性测试中,要检查当这些条件不满足的时候的反应。

例如:目前大多数3G智能手机,与各电信运营商形成利益捆绑,每款手机支持特定的电信运营商提供的通信服务,其它运营商提供的服务则被拒之门外。当使用移动SIM卡安装在只支持联通通信服务的3G手机上,关注该手机表现:是否在执行自动更新时重启?还是执行自动更新后提示不支持移动运营通信服务:SIM card not supported, emergency calls only?

例如:在做完常温包装跌落测试后,再测试机芯的读碟能力,读取偏芯碟、面振碟、偏重心碟、刮痕碟、指纹碟等等碟片,与未做跌落测试前读碟能力进行比较。如果读碟能力比以前更差,则考虑改进措施:软件适当增加录轨时间或机芯托盘加固等。

5.  矩阵测试

5.1.矩阵测试是使处于一个特定的状态,然后构造一个异步事件,检查当这个异步事件发生时软件的性能。

5.2.根据事件的来源,异步事件分为外部事件和内部事件                          两种。

外部事件举例:蓝牙模式下来短信、来电话、各种介质(U盘、iPod、导航卡、收音天线)接入等。如接入导航盒后,导航不运行,看是否会对其它模式的运行产生影响?最近测试的Mazda J53R就是在接入导航盒后,产生系统不稳定,长时间播放蓝牙音乐、iPod曲目等会出现系统报错。

内部事件举例:车载DVD蓝牙自动连接、自动接听、音乐下载流量使用提醒, 手机低电警告、自动关机等。如带在线音乐功能的车载DVD,插上3G dongle时,下载歌曲时是否有流量提醒:该歌曲占用多少容量、目前已用多少流量、还剩余多少流量。

6.  UI测试

好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由、充分体现软件的定位和特点。     

UI测试遵循的原则:

6.1.易用原则:如主菜单icon的排列布局:横纵向、环形、椭圆形。

6.2.友好原则:歌曲列表中的drag bar是否太窄,导致不方便拖动?

6.3.求美原则:检查在UI的布局里,各种要素是否能传达一种美感,布局是否合理,色彩是否合谐。

如拖动列表的动态效果、刷新列表的沙漏效果等。

6.4.一致性原则:同样的一个功能的UI在不同的情景(scenario)所呈现的方式应该保持一致。

例如:在设置菜单选择DSP模式,退出后在各放音源下检查DSP模式与设置菜单中是否一致;将系统语言改为英语等其它语言,播放界面及菜单等,拼写是否正确,显示是否一致、是否越界等。

6.5.普遍性原则:即遵循约定俗成的规定。蓝牙icon一般遵照蓝牙认证协会标识,如果自己另外搞一种icon设计,反而弄得不伦不类。

测试用户界面的色彩搭配、整体布局、行距、对齐,样式统一等等。还有就是一些控件是否合理,提示信息和页面信息是否有语法错误等等一系列问题,都应考虑进去。

7.用户体验:

  用户体验:一种纯主观在用户使用产品过程中建立起来的感受。对于一个界定明确的用户群体来讲,其用户体验的共性是能够经由良好设计实验来认识到。例如:

  7.1.自然往往和人的本性相关的。微信的摇一摇是个以“自然”为目标的设计。设计“摇一摇”时,目标是和人的“自然”或者说“本能”动作体验做到一致。摇一摇的体验包括:动作:摇动;视觉:屏幕裂开并合上来响应动作; 听觉:有吸引力的声音来响应动作;结果:从屏幕中央滑下的一张名片。整个界面没有菜单和按钮。但几乎没有比它更简单的交互体验了。联想到车载DVD,如果能通过手势识别来实现上、下页菜单的切换也是不错的选择。

7.2.如Mazda J53R平台蓝牙电话本的下载,使用部分手机连接成功后下载时间超过2分钟并提示Time out,且电话本条目数量也不多,约200条,从用户角度来说此时长不合理且不易接受。例如建议软件增加电话本保存在内存中,需要调用时直接从主机菜单内导出即可,这样方便且快捷,而且下载时间快,不需再通过蓝牙传输。

7.3.主机主音量不变的情况下,通过切换模式,主观感觉不同模式下声音输出幅度不一致,即不同模式间切换感觉声音忽大忽小,这样就会给用户造成较差的听觉感受。此时我们可通过增益平衡(Gain Balance)来分析各源间的信号输出幅度:

a.将TCD-784碟第2曲1KHz 0dB信号作为标准信号通过Line out输出,再在信号发生器上定标准输出;

b.调节信号发生器参数为频率98.1MHz,调制率75KHz,信号强度66dB,比较与CD输出时的幅度差别;

c.调节信号发生器参数为频率999KHz,调制率80%,信号强度80dB,比较与CD输出时的幅度差别;

d.转到AUX,将输入设置为1KHz,500MV(-12dB), 比较与CD输出时的幅度差别。

通过不同模式下的输出幅度对比作为理论依据来改善, 如判定标准0+/-3dB。

8.兼容性测试:

主要测试不同介质对于被测设备的表现。包括:硬件兼容性测试(USB、SD、碟片、蓝牙手机等兼容性测试)和软件兼容性测试(音视频、图片、文本格式兼容性测试)。

如何在有限的成本和资源考虑下,针对此软件产品规划出适当的兼容性测试,是所有软件测试技术人员关注的重点。

8.1.评估软件应用环境,有针对性的制定测试计划。做多少设备投资?投入多少人力?要测试多少兼容性测试完全会影响到软件产品的最终成本。想要专心和投资在研发上,又想要节省成本的做好兼容性测试,只有评估软件应用环境,有针对性的制定兼容性测试计划,才能兼顾成本和产品的兼容性质量。

8.2.在多种平台/应用环境上测试一个软件产品的开发成功,不仅仅是编写完为使用者提供服务功能的程序而已,更重要的是能在用户环境中可靠的运行。因此,软件程序编写工作的完成,其实只是完成了开发任务中的一半,对软件进行模拟用户环境进行兼容性测试其重要性不亚于对程序本身的开发。因此在不同平台、不同版本软件上做对比测试很有必要。

9.性能测试

性能测试通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。

9.1.测试通道延迟和极性(Channel Delay and Polarity), 播放通道激励信号bd_8ch_delaypol_21,使用AP2700 扫描到的曲线图(如下),以此观察通道的延迟和极性是否符合要求。

9.2.音视频同步(A/V Synchronize),播放标准AV测试信号,使用AV同步测试仪接受信号,测试仪的另一端连接PC。如Dolby Digital Plus判定标准:视频先于音频10ms或视频后于音频15ms,为可接受范围。

10.临界测试

临界测试,就是指数据在保存、删除、传送、发送时或者这些动作即将发生时,考察软件对外部干扰事件的处理情况。

如文本文件容量大于或等于设计容量,关注读取时的表现;蓝牙通话/蓝牙音乐关注传输距离临界值附近的测试结果;蓝牙连接成功立即断开再连接等。

如MTK平台的某些机型在即将删除一条短信息时收到一条新信息,但删除的却不是刚刚选定的那条信息,而是刚刚收到的这条新信息!

11.可靠性测试

11.1.可靠性是指在一定的环境下、在给定的时间里,软件不发生故障的概率。

11.2.可靠性本来是硬件领域的术语,比如某个电子设备在刚开始工作时挺好的,但由于器件在工作中其物理性质会发生变化(如发热),慢慢地系统的功能或性能就会失常。

例如:高温工作试验:常温下将产品置于恒温恒湿试验箱中,按实际装车的状态连接输入设备,负载设备,电源,使样机为POWER OFF状态,逐步升温到+70℃,保持2小时后,使样机为POWER ON标准工作状态,分别设置为AM、FM电台收音/DVD、CD、SD卡播放/蓝牙/导航等工作模式下工作,若无电台则接收AM/FM信号发生器输出标准信号,音量开关置1W输出功率位置,试验中经常确认样机工作是否正常。样品工作72小时后,外观、功能应正常;试验后在常温下放置2小时以上,电性能指标测试应正常。

11.3.软件在运行过程中不会发生像硬件那样的物理变化,但是并不代表软件现在运行是正确的,那它一辈子运行也是正确的,说不定哪一天它就不正常了。软件中司空见惯的“内存泄漏”与”误差积累“等问题不是一时半会儿就能测试出来的,需要一个较长时间的观察。

例如:做完高温试验导致Flash坏块、或丢代码等,此时需要软件对该模块代码做双备份处理。

11.4.时隐时现的问题一般都属于可靠性问题,纠错的成本非常高。当工程师十万火急地感到问题现场时,问题消失了;等工程师离开后,问题又出现了,仿佛敌进我退一般!此种低概率现象一定要录好Trace和Video。

12.黑盒测试模型

12.1.黑盒测试不需要去关注软件的整体架构及其编码细则,只需要通过构造一些合理的输入(操作),来观察被测设备的实际结果或现象(输出),从而判定是否存在问题,需求文档是黑盒测试的主要依据。

12.2.在一个功能的实现过程中,可能存在这一些隐含的制约条件,它们影响着期望结果或者是输出。

“牛吃的是草,挤出的是奶”,这个命题有一个制约条件,鲁迅先生虽然没有说明,但我们应该明白,这里是特指母牛,你就是把公牛捏死了也挤不出奶来!

12.3.问题就是输出跟期望结果的差距,需要注意的是,当立场不同时,对问题的定性也可能不一样,开发人员站在研发的角度说这不是问题,测试人员站在质量的角度说这是问题。

13.实用的黑盒技术

13.1.输入的构造通常会采用穷举的思想,可是穷举的空间如果非常大,那将使人十分的沮丧,还不如回家象张恒一样数星星,说不定还能数出个天文学家来。有两种手段可以有效地缩小穷举空间:等价划分和边界值分析。

13.2.等价划分:等价区间的概念可以这样表述,设(A,B)是命题f(x)的一个等价区间,在(A,B)中任意取值x1进行测试:

如果f(x1)错误,那么f(x)在整个区间(A,B)上都将出错;

     如果f(x1)正确,那么f(x)在整个区间(A,B)上都将正确。

     等价划分思想的关键是找到一个合适的标准去划分等价区间!

新中国成立不久,有一位外国记者问周恩来总理:总理先生,请问你们中国有几个厕所?意思是新中国一穷二白,除了厕所多一点之外没有什么别的财富。周恩来回答说:记者先生,我们中国只有两个厕所,一个是男厕所,另一个是女厕所。这是周恩来总理等价划分的高超艺术。

13.3.边界值分析,“缺陷遗漏在角落里,聚集在边界上”,边界值分析是对等价划分的一种有效补充。

14.测试计划

制定一个完整、规范的测试计划对每一个测试管理人员来说是非常重要的!测试计划应该至少包括如下之内容:

14.1.概述(Overview): 文档通常都是以概述开头的,测试计划在概述里应该要写明该测试是做什么的,把测试的范围定下来,要测什么,不测什么。

14.2.测试目标(Test Goals)和发布标准(Release Criteria)

一般说来,测试计划以定要写明测试的最终目标(Test Goals),必须使自己和别人明白为什么必须做这个测试,该测试需要达到的目的是什么。

另外,测试计划还需要明确定义发布标准(Release Criteria)的范围,如果有需要,可能还需要定义每一个发布标准定义在DR2、DR3和DR4个阶段的目标。

14.3.测试方法描述(Testing Approach/Description)

从项目总体的角度定义软件的测试方法,如我们在前面讲过的单个功能测试、集成测试、系统测试,以及没有讲的附件测试、专项测试、外场测试(Field Trial)。

14.4.测试进度表(Testing Schedule)

定义在DR各个阶段的详细进度,该进度表依赖于项目总进度及软件开发进度。

14.5.测试资源(Testing Resource)。

相关推荐