目录
- 一、测试用例的万能公式
- 二、对登录页面设计测试用例
- 三、测试用例的设计方法
- 3.1 基于需求的设计方法
- 3.2 等价类
- 3.3 边界值
- 3.4 判定表
- 3.5 正交排列
- 3.6 场景设计法
- 3.7 错误猜测法
- 四、面试真题
一、测试用例的万能公式
首先,为"水杯"设计一个测试用例,我们可能会想到水杯是否可以盛水、水杯是否漏水、水杯携带是否方便、水杯是否保温、水杯的形状和外观是否符合用户预期…但这些用例是我们想一个写一个的,并不是按照某个具体步骤详细而全面的来设计测试用例。因此学会万能公式对我们设计测试用例将很有帮助
测试用例的万能公式:功能测试+性能测试+界面测试+兼容性测试+易用性测试+安全测试
- 功能测试:对产品的功能设计测试用例(来源是需求文档/日常生活经验)
- 性能测试:功能测试没有问题不代表性能好,考虑极端情况(高并发量、响应时间等)
- 界面测试:界面中每个元素的大小、颜色、材质、形状、页面跳转、文字错别字…都需要进行测试(以界面设计图为依据)
- 兼容性测试: 软件的不同版本是否兼容、不同浏览器、不同的系统版本、数据兼容性…
- 易用性测试:产品是否具备简单易上手的属性
- 安全测试:用户的隐私数据是否加密(注册账号时账号和密码在接口传输时是否加密)、是否存在SQL注入问题、越权问题
【SQL注入问题】
select * from info where id=1 or 1=1; 这条SQL语句的结果是返回所有的用户信息
【越权问题】
越权又分为垂直越权和水平越权
垂直越权是指,比如在一个教务系统中,有教师和学生不同的身份,教师可能有布置作业的功能,学生没有作业的功能,但如果学生也能进行布置作业,那么这就属于是垂直越权
水平越权是指,学生有张三和李四,张三不能进入到李四的界面中进行操作,但如果张三可以操作李四的界面,那这就是水平越权
在学完万能公式之后,借助万能公式对"水杯"进行设计测试用例
【设计测试用例一定是越多越好吗?】
不是的,测试用例能够提高质量覆盖率才是最好的
二、对登录页面设计测试用例
对下面的这个登录页面设计测试用例:
三、测试用例的设计方法
根据万能公式我们设计出的测试用例是比较笼统的,例如对登录页面设计的测试用例,其中一个是测试账号和密码的长度是否符合规则,但是"长度"我们并没有真正的指定,但当我们需要具体的测试数据时,就应该给出具体的数值,此时就要用到测试用例的设计方法
3.1 基于需求的设计方法
基于需求文档来设计测试用例,和根据万能公式设计类似
3.2 等价类
比如,有一个需求是用户的密码是6-12位,测试的时候该如何设计测试数据呢?
有的同学可能会说,穷举6,7,8,9,10,11,12都测试一下,但如果当我们的需求变为用户的密码是6-1000000位,此时使用穷举法就不现实了。使用等价类的方法可以很好的解决这个问题。
依据需求将输入划分为若干个等价类,从等价类中选出一个测试用例,如果该用例通过,就认为其所属的等价类测试都通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了穷举不过来的问题
- 有效等价类:对于程序规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验证程序是否实现了说明书中所规定的功能和性能
- 无效等价类:根据需求说明书,不满足需求的集合
使用等价类设计测试用例的步骤:
- 划分等价类
需求是用户的密码是6-12位,有效等价类是:6-12,无效等价类是小于6位和大于18位
- 编写测试用例
输入长度是6-12的密码,具体数据选为10位
输入长度小于6位的密码,具体数据为3位
输入长度大于12位的密码,具体数据为30位
对于需求是到超市购买水果,包括苹果、桃子、梨
- 有效等价类:有三个,分别时苹果、桃子、梨,也就是说要分别测试这三个
- 无效等价类:香蕉、橘子、水、啤酒…
3.3 边界值
边界值法是在等价类的基础上,衍生出的一种设计测试用例的方法
对于用户的密码是6-12位这个需求来说:
- 有效边界值是:6,12
- 无效边界值是:5,13
对于成绩大于90可以获奖这个需求来说:
- 有效边界值是:91
- 无效边界值是:90
对于长度时6-10位的单精度浮点型数据的需求来说:
- 有效边界值:
- 无效边界值:
3.4 判定表
对于判定表来说,使用的场景比较少
判定表(Decision table)是另一种表达逻辑判断的工具。与结构化语言和判断树相比,判断表的优点是能把所有条件组合充分地表达出来;其缺点是判定表的建立过程较烦杂,且表达方式不如前两种简便。判定表在用于知识表达中,有许多其他方式所达不到的作用。
使用场景:输入条件的组合对应不同的结果
判定表设计测试用例的步骤:
- 确认输入条件和输出条件
- 找出输入条件和输出条件之间的关系
- 画判定表
- 根据判定表编写测试用例
现有需求:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优惠”。
-
确认输入和输出条件
输入条件:金额大于300(A)、红包(B),订单已提交(C)
输出条件:有优惠(1)、无优惠(2) -
找出输入和输出条件之间的关系
- 画判定表
- 根据判定表编写测试用例
- 有红包并提交订单,该订单为优惠订单
- 金额大于300并提交订单,该订单为优惠订单
- 金额大于300且有红包,同时提交订单,该订单为优惠订单
…
在大部分书籍或文章中给的都是因果图法,因果图法和判定表法的步骤几乎相同,只不过因果图法必判定表法多了一步画因果图
3.5 正交排列
正交试验设计是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。当因素过多时,如果使用判定表法设计测试用例就变的不现实了,而正交法的目的是为了减少用例数目,用尽量少的用例覆盖输入的两两组合。
最简单的正交表是L4(2^3),含意如下:“L”代表正交表;L 下角的数字“4”表示有 4 横行,简称行,即要做四次试验;括号内的指数“3”表示有3 纵列,简称列,即最多允许安排的因素是3 个;括号内的数“2”表示表的主要部分只有2 种数字,即因素有两种水平1与2。正交表的特点是其安排的试验方法具有均衡搭配特性
举例理解试验、因素、水平的含义,一次试验代表一次测试用例,一辆车从出发地到目的地耗时多久这件事,受到很多因素影响,有下班的高峰期、限号、天气、地段、道路施工、行驶人的驾车技能、车况等,对于下班高峰期这个因素来说,是高峰期与不是高峰期是两个水平
正交表的性质:
- 每一列中,不同的数字出现的次数相等。例如在两水平正交表中,任何一列都有数码“1”与“2”,且任何一列中它们出现的次数是相等的;如在三水平正交表中,任何一列都有“1”、“2”、“3”,且在任一列的出现数均相等。
- 任意两列中数字的排列方式齐全而且均衡。例如在两水平正交表中,任何两列(同一横行内)有序对子共有4种:(1,1)、(1,2)、(2,1)、(2,2)。每种对数出现次数相等。在三水平情况下,任何两列(同一横行内)有序对共有9种,1.1、1.2、1.3、2.1、2.2、2.3、3.1、3.2、3.3,且每对出现数也均相等。
根据正交表设计测试用例的步骤:
- 找出因素数和水平数
- 生成正交表(借助工具allpairs)
- 根据正交表来编写测试用例
- 补充可能存在遗漏但非常重要的测试用例
案例:
- 因素数:姓名、电子邮箱、密码、确认密码、验证码
- 使用allpairs生成正交表:
(1)使用excel进行编写
(2)保存到一个txt文件中
(3)将该txt文件保存到paris目录下
(4)输入命令
- 根据正交表生成测试用例
- 补充可能遗漏但很重要的测试用例:全都不填写
3.6 场景设计法
场景设计法中涉及到两个概念:基本事件流和备选事件流。用下面的一个例子进行解释,以去ATM取款机取款的流程为例:
除了基本事件流以外,可能出现的以外情况称之为备选事件流
根据上图编写测试用例:
- 基本事件流用例:插卡、输入密码、输入金额、取钞、退卡
- 备选事件流的用例:
(1)插卡、输入密码、密码错误、重置密码、输入金额、取钞、退卡
(2)插卡、输入密码、输入金额、金额不是整数、重新输入、取钞、退卡
…
3.7 错误猜测法
错误猜测法是对被测软件设计的理解,过往经验以及个人直觉,推测软件可能存在的缺陷,从而针对的设计测试用例的方法,更依赖测试人员的工作经验和积累。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应运于测试。
这个方法的缺点是难以系统化,并且过度依赖个人能力。
四、面试真题
某公司招聘测试工程师时,有一道这样的笔试题:”某手机软件有用TF卡导出数据的功能,请写出测试此功能点的思路”