软件测试篇---测试用例设计方法

软件测试设计方法
  • 总体的设计方法
    基于需求的设计方法:
    基于需求的设计方法是最根本的软件测试,重点关注:
    (1)验证需求是否正确、完整、无二义性,并且逻辑一致;
    (2)从“黑盒”的角度,设计出充分并且必要的测试集,保证设计和代码都能完全符合需求;
  • 具体的设计方法 (以下都为黑盒测试测试用例的设计方法)
    1、等价类
    基于输入(特殊情况考虑输出),将输入划分为若干个等价类,从每一个等价类中找出一个测试用例,如果该测试用例测试通过,该用例代表的等价类测试通过;(因材施教的例子)
    等价类分为有效等价类和无效等价类,有效等价类就是符合需求规格说明书的测试用例,无效等价类就是不满足需求的集合
    例如对手机号码的位数进行等价划分,可以划分三个,因为手机号位数为11位,则等价类可以划分为小于11位(无效等价类),等于11位(有效等价类),大于11位(无效等价类)
    又例如只能输入A到Z的字符或者a到z的字符,则设计有效等价类为A-Z,a-z,大小写混用;无效等价类为数字、特殊字符(汉字,@,# ,¥,%等)
    2、边界值
    对输入和输出的边界值进行测试,它的测试用例来自等价类的边界;
    例如输入密码的长度为1-11位,则边界值应为0、1、2、10、11、12;
    运动员的参赛项目为1-3项,则边界值为0、1、2、3、4;
    这两个都是输入的边界值;
    查询页面有999行,每50行为一页,则针对某一页的边界值为:输出0行,1行,2行,49行,50行(刚好一页),51行(第二页);
    例题:
    要求姓名为1-20个字符,不能包含数字,不能为空,年龄为18-60之间的整数,不能为空,设计等价类和边界值
    解:
    姓名:
    有效等价类:【1,20】个非数字,且不为空的字符(包括汉字,特殊字符,大小写字母)
    无效等价类:0,>=21,全部输入数字,部分数字;
    边界值:0,1,2,19,20,21
    年龄:
    有效等价类:【18,60】整数
    无效等价类:空,【1,17】,【61,无穷),非整数的字符(字母,特殊字符)
    边界值:0,1,2,16,17,18,19,59,60,61;
    3、因果图
    因果图表示输入各种组合和输出之间的关系;
    我们可以看一下有哪几种输入和输出的相互关系:
    (1)恒等关系,如图:
    软件测试篇---测试用例设计方法_第1张图片
    如果条件为真,结果就为真;
    (2)与关系,如图:
    软件测试篇---测试用例设计方法_第2张图片
    如果两个条件都为真,那么结果就为真;
    (3)或关系,如图:
    软件测试篇---测试用例设计方法_第3张图片
    两个条件有一个为真,结果就为真;
    (4)非关系,如图:
    在这里插入图片描述
    当条件为假,结果为真;
    因果图设计测试用例的步骤:
    (1)分析所有的输入和输出;
    (2)找到输入和输出对应的关系;
    (3)画因果图;
    (4)将因果图转换为判定表;
    (5)将因果图对应到每一个测试用例;
    例题1:淘宝的618活动,订单已提交,订单合计金额大于300元或者有红包,则有优惠,设计测试用例;
    解:使用因果图法设计测试用例:
    第一步:找到输入和输出:
    输入:订单已提交,订单金额大于300元,有红包;
    输出:优惠,不优惠;
    第二步:找到输入和输出对应的关系:
    订单已提交,订单合计金额大于300元,则优惠;
    订单已提交,订单金额小于等于300元并且没有红包,则不优惠;
    订单已提交,有红包,则优惠;
    订单已提交,订单金额大于300元并且有红包,则优惠;
    订单未提交,则不优惠;
    第三步:画出因果图:
    如图:
    软件测试篇---测试用例设计方法_第4张图片
    第四步:画出判定表:
    3个输入,两个输出,每个输入有两种可能,因此共有222=8种组合,因此需要8组数据,如图:
    软件测试篇---测试用例设计方法_第5张图片
    第五步:写出对应的测试用例
    这里我就不使用文字描述了,写出1 2 3 4 5(6 7 8已经包含)对应测试用例即可;
    例题2:有一个处理单价为1元5角钱的盒装饮料售货机,若投入1元5角硬币,按下“可乐”,“雪碧”,“红茶”按钮,相应的饮料就送出来,若投入的是2元硬币,在送出饮料的通水退还5角硬币,设计测试用例;
    解:使用因果图法设计:
    第一步:确认需求的所有输入和输出:
    输入:1.5元,2元,按下“可乐”,按下“雪碧”,按下“红茶”;
    输出:可乐,雪碧,红茶,5角;
    第二步:确认输入和输出之间的对应关系:
    1.5元,按下“可乐”—>可乐
    1.5元,按下“雪碧”—>雪碧
    1.5元,按下“红茶”—>红茶
    2元,按下“可乐”—>可乐,5角
    2元,按下“雪碧”—>雪碧,5角
    2元,按下“红茶”—>红茶,5角
    第三步:画出因果图:如图:
    软件测试篇---测试用例设计方法_第6张图片
    第四步:画出判定表
    共有六组组合,因为当输入1.5元时,可以按3种按钮,输入2元的时候,也可以按3种按钮,因此共有6组组合,如图:
    软件测试篇---测试用例设计方法_第7张图片
    第五步:写出对应测试用例即可(1 2 3 4 5 6)使用文字描述即可;
    4、正交法
    当我们使用因法设计用例太多时,其实效率是很低的,这时我们就可以使用正交法来设计测试用例,研究多因素多水平,利用正交性,取出最优的水平组合,通过研究这些水平组合的试验结果,来分析整个试验的情况;
    正交表有两个性质
    (1)每一列出现的数字的个数一致;
    (2)不同两列中数字出现的有序对数一致;
    这两条性质的意思就是例如有一列是ABCABC,A出现了两次,B也出现了两次,C也出现了两次,也就是每一个数字都出现了两次,次数是一致的,这就是性质1;又例如第一列是ABCABC,第二列是AACCBB,第三列是ACBACB,第一列ABC一共有两对,第二列ABC也有两对,第三列也是,这就是性质2;
    注意:正交表要满足变量的值取值一样并且数量一致;
    正交法设计测试用例的步骤是:
    (1)看有哪些因素(因素就是考察的变量)
    (2)每个因素有哪几个水平(水平就是变量的取值)
    (3)确定一个合适的正交表(根据因素数和水平数)
    (4)画出正交表;
    (5)在表中补充测试人员认为没有出现但是比较合理的测试用例;
    ==注意:==确认正交表时,正交表由因素和水平构成,因素数用T表示,水平数用C表示,则正交表的行数N=(C-1)*T+1;则正交表的表示使用L=N(TC)表示;
    例如:进行注册时,要将姓名,邮箱,密码,确认密码,验证码必须全部输入,才能注册,设计测试用例。
    解:
    使用正交法设计;
    第一步:看有哪些因素,因素:姓名,邮箱,密码,确认密码,验证码;
    第二步:确认水平:填写,不填写;
    第三步:确认正交表:T=5,C=2,则N=(2-1)*5+1=6行;正交表为L=6(25);
    第四步:画出正交表:如图:(注意:在画正交表时要满足两个性质,并且在进行水平的填充时要按照一定的规律使之尽量匀称,比如我这里按照先填前三行,按照规律填好之后补充后三行)
    软件测试篇---测试用例设计方法_第8张图片
    第五步:增添测试用例:
    我们认为正交表中没有水平全为填写或者不填写的情况,这两种也是合理的情况,因此应该添加上,如图:
    软件测试篇---测试用例设计方法_第9张图片
    当然,在实际的应用中,如果因素太多,我们可以使用微软的PICT工具来进行测试用例的设计;
    5、场景设计法
    使用事件触发来控制流程,事件触发时的情景就形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流;
    这里分为基本事件流和备选事件流,基本事件流就是每个操作都正常完成,没有异常情况发生,直到操作完成;
    备选事件流就是:
    (1)操作异常,这个流程不能继续进行下去(流程中断);
    (2)操作有错误,但是经过反复修改后,流程可以继续正常执行下去;
    例题1:
    我们在自助取款机取钱时,要经过的流程是插卡、输入密码,输入取款金额,取钱,退卡,请设计测试用例;
    解:第一步:
    基本事件流:插入银行卡,正确输入密码,正确输入取款金额,成功取出钱,退卡;
    备选事件流:
    第一种:插卡不能识别,ATM机钱不够,密码三次输入错误吞卡,操作超时吞卡,机器故障;
    第二种:卡插反,密码第一次输入错误,第二次输入正确,取款金额大于卡余额,取款金额不是整百,用户已经达到每日取款金额上限,卡被冻结不能进行操作,卡被挂失,卡未激活;
    第二步:总结测试用例:
    (1)插入银行卡,正确输入密码,正确输入取款金额,成功取出钱,退卡;
    (2)插卡,输入密码,输入取款金额,ATM机金额不够,无法取款;
    (3)插卡,输入密码,三次输入密码错误,吞卡;
    (4)任何一环节超时,吞卡;
    (5)机器故障,无法取款;
    (6)卡插反了,重新插入,输入密码,输入金额,取钱,退卡;
    (7)插卡,第一次输入密码错误,第二次输入正确,输入金额,取钱,退卡;
    (8)插卡,输入密码,输入金额大于银行卡余额,重新输入金额,取钱,退卡;
    (9)插卡,输入密码,输入金额,取款金额不是整百,重新输入金额,取钱,退卡;
    (10)插卡,输入密码,输入金额,用户已经到达每日取款上限,无法取款;
    (11)插卡,输入密码,卡被冻结不能进行操作;
    (12)插卡,输入密码,卡被挂失,无法取款;
    (13)插卡,输入密码,卡未被激活,无法取款;
    例题2:我们在当当网上买书时,操作的流程是:
    登录账户、选书、加入购物车、在购物车处选择结算、支付,使用场景设计法设计测试用例;
    解:
    第一步:
    基本事件流:成功登录账户,期望购买的书都有,加入购物车成功,成功结算,支付成功;
    备选事件流:
    账户不存在,密码错误,网络故障,购物车已满,银行卡余额不足,未绑定银行卡支付失败,支付密码错误,没有在规定时间完成支付,库存不足,没有找到相应书籍,书籍下架,收货地址不在配送范围,使用优惠券支付,减满;
    第二步:总结测试用例
    (1)成功登录账户,期望购买的书都有,加入购物车成功,成功结算,支付成功;
    (2)账户不存在,登录失败;
    (3)密码错误,登录失败;
    (4)网络故障,APP无法使用;
    (5)成功登录账户,期望购买的书都有,加入购物车,购物车已满,给出相应提示;
    (6)成功登录账户,期望购买的书都有,加入购物车成功,成功结算,银行卡余额不足,无法购买;
    (7)成功登录账户,期望购买的书都有,加入购物车成功,成功结算,未绑定银行卡,无法购买;
    (8)成功登录账户,期望购买的书都有,加入购物车成功,成功结算,支付密码错误,重新输入支付密码进行支付;
    (9)成功登录账户,期望购买的书都有,加入购物车成功,成功结算,没有在规定时间完成支付,订单失效;
    (10)成功登录账户,书籍库存不足,无法加入购物车;
    (11)成功登录账户,没有找到想要的书籍,无法购买;
    (12)成功登录账户,想要的书籍下架,无法购买;
    (13)成功登录账户,期望购买的书都有,加入购物车成功,成功结算,在进行结算时,发现收货地址不在配送范围内,支付失败,无法购买;
    (14)成功登录账户,期望购买的书都有,加入购物车成功,成功结算,在进行结算时,如果有优惠券和满减活动,按照规则进行结算,进行支付;
    6、错误猜测法
    错误猜测法是经验丰富的测试人员善于使用的一种测试方法,基于经验和直觉,找出程序中认为可能出现的错误,有针对性地设计测试用例,经验可能来自于在某项业务的测试较多,也可以来自于售后用户的反馈意见,或者从故障管理库中整理bug,梳理出产品以往哪些地方容易出现问题,问题越多的地方,潜在的bug也就越多;
测试用例的粒度和评价

1、粒度:测试用例编写详细的程度,一般如果测试用例如果过于详细,可能会造成效率低,并且测试执行人员可能没有发挥的余地,如果测试用例编写太简单,就失去了测试用例的意义,大多数测试团队编写的测试用例的粒度介于两者之间,如何把握好测试用例的粒度是测试用例设计的关键,也将影响测试用例设计的效率和效果,应该根据项目的实际情况、测试资源情况来决定设计出怎样粒度的测试用例;
2、评价:(同行评审,用户检查,项目组评审)

你可能感兴趣的:(#,软件测试)