[读书笔记]软件测试的艺术 Glenford Myers
软件测试的原则:
1、测试用例的预期结果必须预先定义。2、彻底检查每个用例的结果而不中途放弃。3、用例应包含无效和未预料的状况。4、不但测试软件是否做了应做的,还要测试有没做不应该做的。5、测试用例使用完后应当保存,方便做“回归测试”。6、在已发现错误部分很有可能发现更多错误。7、应默认软件存在缺陷。
发现软件缺陷的方法:
1、代码检查:由开发人员向几个非开发本软件的程序员和测试员讲解代码。缺陷往往由非开发人员提出。
代码检查不是对程序员的批判。
用于错误检查的常用错误列表
1、数据引用错误:1-数据未初始化 2-数组越界、数组下标非整数 3-指针所引用的内存是否已经分配、是否内存已被释放而指针还在使用 4-指针被重新赋值时类型是否出错 5-是否所有继承需求都在类的实现中满足
2.数据声明错误:1-数据的默认声明是否符合要求(尽量所有的数据是人工初始化而不使用默认初始化) 2-变量(一般是数组)的长度和类型是否正确 3-是否存在名称相似的变量(非常容易导致出错)
3.运算错误: 1-是否存在类型不一致数据之间的运算 2-是否有类型相同而字长不同的数据运算 3-赋值目标变量的长度和精度是否小于等号右面的表达式(截断、溢出) 4-赋值号左右两边的类型是否相等 5-除法中除数表达式是否可能为0 6-特定场合下变量值是否超出了有意义范围 7-混合运算的操作符优先级错误 8-
4.比较错误:1-有否不同类型之间的比较如字符串与地址等 2-布尔表达式是否存在逻辑错误 3-是否存在布尔与整形的比较 4-布尔运算符的优先级错误
5.控制流错误: 1-是否所有循环都得到终止(while) 2-循环执行条件是否从不满足 3-循环是否多一次少一次(for)
6.接口错误: 1-实参数量和类型是否跟形参一致 2-
7.输入输出错误 1-是否有足够大的内存读取文件 2-是否所有文件都在使用前被打开 3-是否所有文件都在使用后被关闭 4-IO出错情况时候被处理 5-打印文本信息中是否存在语法、拼写错误
2、代码走查:与代码检查类似,用简单的测试用例走一篇程序,在讨论和提问中发现问题。
3、桌面检查:单人进行代码检查。
4、同行评分:
测试用例的设计:
1、白盒测试
白盒测试关注的是测试用例覆盖源代码逻辑机构的程度。更强的是条件覆盖,用例应覆盖每个判断条件的两条分支。所有的函数入口都是用一次。
等价划分:1、每个测试用例都尽可能地代表更多的状态 2、将输入划分为几个等价类
边界值分析:1、考虑输入输出中,恰好是边界和边界往前和往后三个部分的用例。
因果图: