软件测试-测试用例
1.什么是测试用例
为了实施测试而向被测系统提供的一组集合。这组集合包括测试环境、操作步骤、测试数据、预期结果等要素。
举例:对一个垃圾桶设计测试用例
2.设计测试用例的万能公式
设计测试用例的万能公式:功能测试+性能测试+界面测试+兼容性测试+易用性测试+安全测试
功能测试:对产品的功能设计测试用例(根据需求文档、经验)
性能测试:对各种参数进行校验等等,涉及比较广。
界面测试:对每个元素的大小、颜色、形状、跳转等都需要进行测试。
兼容性测试:软件是否否兼容不同浏览器、不同系统版本、数据兼容性等。
易用性测试:产品或软件是否具备简单易上手的特性。
安全测试:用户的隐私数据是否加密(接口返回值,请求参数),越权问题(垂直越权、水平越权)。
使用万能公式对垃圾桶设计测试用例:
对登录功能设计测试用例:
兼容性测试的注意事项:
- 测试后台用户使用大多数使用的浏览器和系统。
3.设计测试用例的具体方法
3.1基于需求的测试方法
首先要分析需求是否正确、完整、不矛盾,并且逻辑恰当。确认无误后,在对需求进行进一步的细化,提炼出测试点或者测试项。对每一个测试点/测试项进行测试样例的设计。
3.2等价类
根据需求将输入数据划分为若干个等价类,从等价类中选出一个测试用例,如果一个用例通过,则认为该等价类类测试通过。等价类又分为有效等价类和无效等价类。这样可以达到用较少测试用例尽量多的功能覆盖。
例如注册时密码的长度要求为6-16位,如何根据等价类来设计测试用例呢?
1.明确等价有效类和无效等价类
- 有效等价类:密码长度位6-16位
- 无效等价类:密码长度小于6位,密码长度大于16位
2.编写测试用例
- 输入长度位6-16的密码,具体为10位。
- 输入长度位小于6位的密码,具体为3位。
- 输入长度大于16位的密码,具体为18位。
3.3边界值
对输入/输出数据的边界值进行测试的一种黑盒测试方法,最长、最短或者最小、最大,边界值右分为有效边界和无效边界。
有效边界:有效等价类中的边界。
无效边界:无效等价类中的边界。
例如注册时密码长度位6-16位,如何对边界值测试用例呢?
1.明确有效边界和无效边界
- 有效边界:密码长度为6、16位时。
- 无效边界:密码长度为5、17位时。
3.设计测试用例
- 当密码长度位6、16位时是否能注册成功。
- 当密码长度位5、17位时是否能注册成功。
3.4因果图
因果图是一种简化了的逻辑图,能直观地表明程序输入条件(原因)和输出动作(结果)之间的相互关系。因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、程序的输出又依赖于输入条件的各种情况
需求:是否是优惠订单,订单金额超过200、无门槛红包,当订单金额超过200或使用无门槛红包为优惠订单,否则为非优惠订单。
1.确认输入条件和输出条件
- 输入条件: 订单支付>200 使用红包 支付订单。
- 输出条件:优惠订单、非优惠订单。
2.找出输入条件和输出条件的关系
对输入条件进行组合:A B C AB AC BC ABC 非ABC
3.绘制判定表
4.根据测判定表编写测试样例
- 当订单金额>200元,无红包,不提交订单,则该订单为无优惠订单。
- …
3.5场景设计法
思路引导作用,场景测试通常用于测试一个应用程序的主要功能或业务流程。它们可以帮助测试人员理解用户如何与软件进行交互,以及当出现错误或异常情况时的用户体验。
3.6正交法
主要解决判定表如果输入条件过多,穷举的情况太多,测试用例会很多。正交法是从大量的实验中挑选出有代表性的的点,合理的设计测试用例。是一种基于正交表的、高效率、快速、经济的试验。
正交表:L=行数(水平数^因素数)
正交表特性:
- 在每一列中,每种水平出现的次数相同。
- 任意两列中的水平组合排列方式是齐全且均衡。
因素:表示我们的输入条件(预考察的的变量)
水平:表示输入的可能选项(因素的取值)
实验:表示总实验次数。
举例:对订单是否是优惠订单设计测试用例
1.找出因素数和水平数。
因素数:支付、支付>200元、使用红包
水平数:是、不是
2.生成正交表
使用allpairs工具生成正交表。
3.根据正交表编写测试用例
- 支付、订单金额大于200元,使用红包。
- 支付、订单金额小于200,不使用红包。
- 不支付、订单金额大于200、不使用红包。
- 不支付、订单金额小于200,使用红包。
4.补充可能存在遗漏和非常重要的测试用例。
- 支付、金额大于200,不使用红包。
- 支付、金额小于200,使用红包。
3.7错误猜测法
根据需求中给出的范围,凭借个人的经验和直觉设计测试用例
4.测试的分类
4.1可靠性测试
可靠性=(正常运行时间)/(正常运行时间+异常运行时间)* 100%,基本至少要达到4个9要求,也就是99.99%。
4.2容错性测试
程序中某个功能出现错误,但是它不会影响整个系统的整体运行。
4.3内存泄漏测试
- 人工检查,查看代码查找未被回收的内存。
- 自动工具法:借助相应的测试内存泄漏工具,如Visual Leak Detector,记录每一次的内存分配,便以观察内存泄漏情况。
4.4弱网测试
设定在特定的网络下、程序功能是否正常。使用一些工具将网络调整到2G或3G的状态。
调整原理:如果调整到2G,2G的上行速率是2.7Kb/s,通过控制发送1KB的时间,将网络速率调整的2G的速率。
设发送1KB的时间为Xms
(2.7Kb/8)*X = 1KB
X = 1KB*1000/(2.7Kb/8)
4.5按照是否关系代码的具体实现进行测试
1.黑盒测试
黑盒测试指的是不关心程序的内部逻辑和结构,也就是不关心代码,检查系统的功能是否正常。只注重软件的功能。
优点:
- 从用户的角度出发设计测试用例,更好地满足用户的需求。
- 基于软件需求文档,不容易遗漏软件需求文件中需要测试的功能。
2.白盒测试
又称为结构测试或逻辑测试,它一般用例分析程序的内部结构,针对程序的逻辑结构设计测试用例。
主要包含:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
3.灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输
出、输入的正确性,同时也关注程序内部的情况。
4.6按照开发阶段进行划分
- 单元测试:此单元是程序员自己定义的,可以是一个方法、也可以是多个方法。
- 集成测试:对多个单元同时进行测试。
- 回归测试:对历史的版本、历史功能进行测试,保证更新后的功能不影响原来版本功能的使用。
- 系统测试:对完整的系统进行全方面测试
- 冒烟测试:开发任意完成任务之后,交给测试人员进行测试的第一步,评估软件系统是否具备可测试的条件。
- 验收测试:部署软件前的最后一次测试操作,也称为交付测试。
4.7安装卸载测试
软件能够正常安装,卸载之后也能正常安装。
5.面试题
- 为何不能用灰盒测试替代白盒和黑盒测试。
测试:对历史的版本、历史功能进行测试,保证更新后的功能不影响原来版本功能的使用。 - 系统测试:对完整的系统进行全方面测试
- 冒烟测试:开发任意完成任务之后,交给测试人员进行测试的第一步,评估软件系统是否具备可测试的条件。
- 验收测试:部署软件前的最后一次测试操作,也称为交付测试。
4.7安装卸载测试
软件能够正常安装,卸载之后也能正常安装。