本文以最多见的几种测试场景来展开讨论如何设计出更为高效且覆盖面更为全的测试用例。前端
在讨论前,咱们先来大概了解下目前行业里经常使用到的几种测试用例的设计方法,目前主流的测试用例设计方法有以下几种程序员
此设计方法算是黑盒测试中用得最多的一个了,并且此方法经常与其余方法一块儿来设计测试用例,经常使用的组合就是与边界值划分法;web
定义:等价类划分法是把全部可能输入的数据划分红若干部分,而后从每个部分选取少数具备表明性的数据做为测试用例。数据库
划分标准:windows
划分方法:浏览器
此方法根据也是特别经常使用的一种设计方法了,写过代码或者有丰富测试经验的同窗应该知道,代码中的判断逻辑是很是多的,越是复杂的业务流程,判断逻辑就越多。就算有丰富经验的开发者,在进行判断逻辑代码的时候也会有所疏忽,尤为是哪些欠缺开发经验的同窗来讲,就更容易忽略某些边界问题了。缓存
定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。一般边界值分析法是做为对等价类划分法的补充,这种状况下,其测试用例来自等价类的边界。安全
分析:大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。所以针对各类边界状况设计测试用例,能够查出更多的错误。使用边界值分析方法设计测试用例,首先应肯定边界状况。一般输入和输出等价类的边界,就是应着重测试的边界状况。应当选取正好等于,刚刚大于或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。cookie
随着系统功能愈来愈多,业务愈来愈复杂,这时候为了更好的进行测试,确保全部业务流程都能被覆盖测试到,这时候引入场景分析法就很是有必要了。网络
定义:如今的软件几乎都是用事件触发来控制流程的,事件触发时的情景便造成了场景,而同一事件不一样的触发顺序和处理结果就造成事件流。
随着测试人员对系统的不断熟悉,对业务的理解不断加深,对程序员的不断了解,有时候就能够有针对性的去验证是否存在某个问题。
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各类组合、输入条件之间的相互制约关系。这样虽然各类输入条件可能出错的状况已经测试到了,但多个输入条件组合起来可能出错的状况却被忽视了。
若是在测试时必须考虑输入条件的各类组合,则可能的组合数目将是天文数字,所以必须考虑采用一种适合于描述多种条件的组合、相应产生多个动做的形式来进行测试用例的设计,这就须要利用因果图(逻辑模型)。
定义:因果图法是一种利用图解法分析输入的各类组合状况,从而设计测试用例的方法,它适合于检查程序输入条件的各类组合状况。
其余几种方法不经常使用,就不介绍了,若有须要再去学习了解便可。
上面咱们大概了解了下各个测试用例设计方法,接下来就开始以实际例子来讲明如何更高效的设计测试用例了。
分析:首先咱们能够分析一下,该界面都有哪些哪些元素,每一个元素又具有哪些规则要求,是否有其余特殊化要求,好比缓存,加密等;分析完毕后,咱们就能够根据了解到的去选择合适的测试用例设计方法,对这个页面进行用例的编写。
原型图:
需求:
拿到上述需求和原型图后,咱们就能够开始着手分析而后去设计测试用例了。
首先对于用户来讲,对一个系统的评价,首先从界面视觉方面去判断,就比如男女之间的第一次见面,嗯,你想的没错,就是相亲,第一印象基本上是从我的长相,精神面貌来的,咱们都知道第一印象很重要,尤为是在现在这个快节奏的社会;
对于一个用户来讲,界面的风格,人机交互性,易理解性,易操做性等将直接印象用户的第一使用体验,假如第一使用体验都很差了的话,假如该产品不是不可替代性的产品的话,用户颇有可能就此流失掉,假如该系统是用户已经付费了的,虽然很差看的页面,难于操做的页面,难于理解的页面不会立刻致使客户退货,但起码会使该用户产生一种一点都不专业的感受,接下来用户极可能带着一种不愉快的心情去操做了,这就颇有可能致使各类各样的刁难挑刺,最终致使完全对该产品失去兴趣,要不就是打回要求从新调整,要不就是退回退款。
大部分产品开发过程当中,在前期需求肯定及评审过程当中就会这方面进行必定讨论研究,因此建议测试同窗在需求阶段就要介入进去,从界面风格,人机交互性,易理解性,易操做性等几方面去进行审视,给出比较不错的建议。
而后接下来就是对系统的业务功能进行测试了,业务分析了下,就是个登陆功能,二种登陆模式,其中工号登陆页面上有三个输入框,一个下拉框,一个图片按钮,一个文字按钮,一个登陆按钮;扫一扫登陆页面就上面就一个二维码。
根据通常的测试套路,咱们先是进行基本的功能测试,只有基本的功能实现了,咱们才有意义去进行其余方面的测试。
备注:扫一扫登陆页面因为过于简单就不在此进行阐释了
结合咱们所掌握到该页面的相关需求知识以及咱们后期拓展到的隐性需求(最好在需求阶段就提出来),提炼出咱们所须要的测试点,而后再结合咱们所掌握的测试用例设计方法进行测试用例的编写。
如下就是提炼出的测试点:
1.输入框的空值登陆
2.输入框的空格测试
a.帐号密码输入框先后中间有空格是否有过滤处理处理
3.有效帐号密码等信息登陆
4.无效帐号密码信息登陆
a.正确帐号,错误密码
b.不存在的帐号,A帐号的密码
c. A帐号,B帐号的密码
5.密码特殊要求测试
a.在输入框内是否密文展现
b.是否可从外部复制到输入框
c.是否可从密码输入框复制密码出去
d.密码防破解机制验证
e.密码在传输过程当中及日志信息中是否作了加密处理
f.密码在数据库表中是否以加密形式保存
g.密码信息是否会被浏览器所记住并保存
6.验证码测试
a.输入正确的验证码登陆
b.验证码输入框置空登陆
c.输入错误的验证码登陆
e.输入过期的验证码登陆
f.图片刷新机制是否合理
7.帐号密码记忆保存测试
a.正确帐号密码登陆成功后记忆保存
b.正确帐号错误密码登陆失败后是否只保存帐号信息
c. 错误帐号登陆错误密码登陆失败是否会保存
d. 正确帐号,密码置空登陆,是否会保存帐号信息
f. 记忆保存有效时间验证
g. 手动清除缓存是是否仍然保留登陆信息
8.同时登陆测试
a.一个帐号可否在同一浏览器上同时登陆
b.一个帐号可否在同一台机器上不一样浏览器同时登陆
c.一个帐号可否在不一样机器上同时登陆
d.一个帐号可否在web端和移动app端同时登陆
e.二个帐号可否在同一浏览器上同时登陆
f.二个帐号可否在同一台机器上不一样浏览器同时登陆
9.默认语言的记忆测试
a.修改界面语言选项,成功登录后,下次登陆是否会记忆上次保存的语言
b.修改界面语言选项,登陆失败后,当前页面是否会保存修改的语言
c.修改界面语言选项,登陆失败后,关闭浏览器,下次打开登陆是否保存上次的语言选项
10.输入框长度限制测试
11.输入框可输入类型测试
1.在输入框内可否使用windows经常使用快捷键,好比复制粘贴,tab切换,回车等
2.在输入框内可否切换大小写,输入法,且切换后是否有相应提示
3.网络异常时,是否有友好加载页面提示
4.各类登陆失败状况下的提示是否友好,清晰,易懂。
1.对浏览器程序进程杀死,从新打开浏览器,已输入的登陆信息是否还在
2.登陆页面与其余页面页签之间的切换以及缩小到后台,已输入的登陆信息是否还在
3.假如快速屡次点击登陆按钮界面是否仍然正常显示及提示
4.假如快速进行屡次刷新操做,界面是否仍然显
1.帐号密码框是否屏蔽SQL注入攻击
2.帐号密码输入框是否禁止脚本输入(避免XSS攻击)
3.登陆是否有防破解机制
4.密码的缓存信息是保存在cookies中仍是session中
5.密码在任何场所是否都是加密形式展现的
1.打开登陆页面所花的时间是否知足要求
2.点击登陆按钮进入到登陆成功后的页面所花时间是否知足要求
3.支持多少人同时正常打开,同时正常登陆操做
1.主流的浏览器及各版本,是否很好的兼容该页面
2.不一样的操做平台及各版本是否正常使用
3.不一样屏幕分配率是否合理的显示该页面
4.放大缩小状态下界面显示是否正常
以此例子来讲明,通常咱们的测试思路能够怎么展开,其实和上个例子同样的思路,再举例说下这个例子,是用来讲明做为测试同窗来讲,具有很强的逻辑概括能力,很强的发散思惟能力,及很强的产品用户思惟能力是很重要的。
1.总体形状外观是否符合用户审美观
2.杯身图案是否符合用户需求,是否涉及到民族,伦理道德,商业侵权等会引发纠纷的标识
1.可否正常装水
2.可否正常喝水
1.杯子是否容易装水
2.杯子是否容易出水
3.杯子是否很方便的拿放(体积质量是否合理)
1.当水装过满的时候,是否有预防水漫出的机制
2.当水喝的几乎没有的时候,剩下的一点点水是否可以顺利的喝到
3.当水杯不当心打翻时候,是否很好的避免水流出
4.当用户手湿滑时候,是否也可以顺利拿起放下杯子
1. 制做杯子的材料是否会对用户形成损害
2. 当杯子不当心打碎的时候,碎片是否会伤害到用户
3. 当装的水过热或者过冷的时候,是否会对用户形成伤害
4. 当杯子因为外部缘由被加热过或者被冰冻过,是否会对用户形成伤害
5. 当杯子长时间装水状态下,是否会滋生细菌或产生危害到用户的事务
6. 当杯口以及杯身出现裂痕的时候,是否会对用户形成割伤
7. 当杯子放进微波炉时,杯子是否会发生爆炸或融化
1. 杯子在长时间震动下是否会破碎
2. 杯子在长时间装水状态下是否发生漏水
3. 当用户使用杯子时用力过猛状况下,杯子是否会破碎
4. 当杯子不当心摔下的时候,是否会发生破碎变形现象
5. 当杯子装入过热或过冷的水时,杯子是否会发生破裂等事故
7. 当杯子用久了,杯身是否会掉色,杯体是否会发生变形,褪色等
1. 杯子除了装水外,是否还能装其余液体。
2. 杯子除了装液体外,是否还能装固体
3. 杯子是否能液体和固定的混合物
4. 杯子是否能够在一些特殊场合使用
欢迎各位大佬补充进来补充, 后续再慢慢补充……