新手区 一起来聊聊测试用例设计

infy001 · 2016年04月06日 · 最后由 lvchongen 回复于 2016年04月07日 · 2678 次阅读

刚开始学习自动化测试的时候,基本是直接将功能测试用例翻译成自动化脚本,后期基本是平台建设方面,最近又回到了测试开发上。所以一直对测试用例设计这个课题很好奇,如何才能保证自己的测试案例根据需求全覆盖呢。
我自己总结了一点,希望大家能够帮我补充一下吧。
1:需求上要求的功能点
2:异常情况
3:各种边界值考虑
4:兼容性考虑
5:安全性能方面

那假设我要测试 window 远程服务应该怎么设计呢?

共收到 11 条回复 时间 点赞

一起来聊聊 XXX,这是潮流吗

比如充值的输入框,必须大于等于 5,小于等于 50。小于 5 的自动变成 5,大于 50 的自动变成 50。

开发用 javascript 做了实现:下面是伪代码:

var min = 5;
var max = 50;

if($("#input").value <min )
$("#input").value = min

if($("#input").value >max )
$("#input").value = max

现在我把等价类变成 1 和 10,然后 js 代码的 min 和 max 相应也修改成 1 到 10。 请问对吗?

#2 楼 @lihuazhang 1,10 和 5,50 有何区别。。

#3 楼 @jet 1 和 10 你可以输入 10,但是在 5,50 里面,有可能就输入不了 10。代码对你是黑盒的。不要看这个代码。

边界值内的是 1 到 10
边界真外的是小于 1 或大于 10
等价类的话是不是 0.5 5 15 之类的

#5 楼 @huanzhijin 等价划分不是只是用来做穷举的吗;
感觉你这样就把等价划分和边界值混一起用了。

我是这样做的用例设计的,先运用软件质量模型,提取需求中每一个可能的测试项,针对提取的测试项,用一些常用的测试用例设计方法设计用例(等价类、边界值、流程图、正交试验、因果图等),再从不同的测试类型角度进行用例补充(性能、压力、极限、用户场景、兼容等等)。

#6 楼 @sziitash 一般都是一起用的吧???

#6 楼 @sziitash 是等价类啊,只是我所有的用例设计在 1 到 10 的范围内,而不是在 5 到 50 间。

#2 楼 @lihuazhang
正好上个版本碰到个 bug:

需求:
界面上有一个商品数量编辑框,还有一个显示总价的标签,用户修改商品数量后自动更新总价,如果商品数量小于 1,重置数量为 1

场景1:
想把商品数量从 1 改成 9
重现步骤:
1、点击商品数量编辑框,点 backspace 删除 1
结果:
请求后端更新总价,因为商品数量小于 1,重置数量为 1
2、点击商品数量编辑框,点 backspace 删除 1
结果:
请求后端更新总价,因为商品数量小于 1,重置数量为 1

场景2:
想把商品数量从 1 改成 1111
重现步骤:
1、点击商品数量编辑框,弹出键盘,输入1
结果:
请求后端更新总价,收起了键盘
2、点击商品数量编辑框,弹出键盘,输入1
结果:
请求后端更新总价,收起了键盘

容易想到的实现是在编辑框失去焦点时再触发更新,但 Android 上貌似没什么好办法。
淘宝、京东的购物车会再弹出一个窗口用于修改数量。
不考虑 Android ,如果请求的时候断网了,数量和总计还是会不匹配。

另一种常见的 bug

需求:
用户名不能包含特殊字符

测试结果:
前段有做验证,但用户名包含特殊字符的 http 请求可以注册成功

没有相关知识,这里是盲点
技术实现、业务场景、用户体验……知道的越多,越能想到更多的测试场景
不过现实世界总是那么多的可能性没办法去穷举,如果知道代码里是大于小于整型,可以把 1 到 9 当等价类
如果知道是企业内部办公系统,不做这种测试也可以
知道越多,也越能去分类,去判断优先级

我的做法是模拟一个用户连进行远程连接的设置和操作,在每个步骤中进行用例的设计。在用例的设计中去考虑不同的方向,就像你说的兼容,安全,需求层面。 如果有时间可以使用探索测试的一些方法进行针对的测试用例构思。传统的测试用例方法也要熟悉,设计 case 中也会用到,这些方法帮助我们在设计中将有效 case 尽可能覆盖。
测试用例覆盖率我觉得真的是衡量不了的, 不同的经验不同的背景考虑的角度是不同的,比如 windows 的远程连接,很多人考虑的是功能, 有丰富网络经验的人可能会优先考虑网络质量对功能的影响等等, 所以我觉得一个复杂的功能,让其他的测试工程师进行用例评审是能够提高覆盖率的。一个功能,10 条 case 如果不漏 bug 就是高覆盖,100 条 case 如果漏 bug,就是覆盖不全,所以太难衡量。

用例设计其实更依赖于经验,对业务的理解,尽管方法可以传授,还是需要你自己多多积累。有一个非常重要的方法就是你一定要多了解多使用。上至编写代码,下至组装电脑,很多看似不相关的技术,都能帮助扩展思路,设计更多的有效 case。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册