工作已近7年。一直从事软件测试的工作,做过功能测试、自动化测试和性能测试。最后还是觉得用例设计是工程师核心能力之一。因为不管任何类型的测试,都会涉及用例设计。软件测试的目的是发现bug,保证软件按照需求描述那样工作,提高团队人员对软件发布的信心。那测试的依据是什么,就是测试用例。测试用例的表现形式有exel表格形式、思维导图形式。两种形式都有各自的优缺点,和适合的项目团队。具体会在下篇里面详细讲解。本文主要想对软件用例设计方法做下总结。
我接触的很多测试人员,不知道怎么设计用例,他们设计用例没有方法,只是觉得我需要测试这个情况,至于为什么需要测试这个情况,他们就回答不出来了。其实任何一个技能都是有方法论和理论做支撑的。比如测试一个输入框,要求长度是6到12位字母或者数字, 测试用例如下:
1. 输入为空
2. 输入1到5位数字
3. 输入1到5位小写字母
4. 输入1到5位大写字母
5. 输入6位小写字母
6. 输入6位大写字母
7. 输入6位数字
8. 输入6位,包含数字、大小写字母
9. 输入大于6位,小于12位,小写字母
10. 输入大于6位,小于12位,大写字母
11. 输入大于6位,小于12位,数字
12. 输入大于6位,小于12位,包含数字、大小写字母
13. 输入12位小写字母
14. 输入12位大写字母
15. 输入12位数字
16. 输入12位,包含数字、大小写字母
17. 输入大于12位,小写字母
18. 输入大于12位,大写字母
19. 输入大于12位,数字
20. 输入大于12位,包含数字、大小写字母
21. 输入6到12位中文
22. 输入6到12位,包括字母和字符
23. 输入6到12位,包括字母、数字和空格
24. 输入js
25. 输入html标记语言
一个输入框,需要测试25种情况,会不会让人疯了。这25种情况使用了测试人员都很熟悉的等价类法、边界值法。对这25种情况,测试数据如下:
a. 输入为空,满足1
b. 输入Aa812,满足2、3、4
c. 输入aaaaaa,满足5
d. 输入ZZZZZZ,满足6
e. 输入888888,满足7
f. 输入aZ8888,满足8
g. 输入aZ8888Bc,满足9、10、11、12
h. 输入12位aaaaaaaZ8888,满足13、14、15、16
i. 输入13位aaaaaaaZ8888W,满足17、18、19、20
j. 输入ab@cde你,满足21、22
k. 输入ab cdef,满足23
l. 输入<script>document.write(date());</script>,满足24
m. 输入<p>123456</p>,满足25
共13组数据,相对25种情况减少了一半。使用越少的用例覆盖大部分的情况,这个就是测试用例设计的核心。测试用例设计和执行涉及时间成本,对于大部分的测试团队,测试时间都是不充足的。如何在较短的时间保证软件的质量,这个和测试用例的质量密切相关。当然,这个也涉及测试策略。
这个是一个输入框的用例设计。如果是两个输入框呢,会不会是13*13=169种情况?明天继续编写。