第三章 软件测试基本方法
有敏捷开发就有敏捷测试。
基于直觉的测试
- 把自己当成客户。
- 错误猜测法。
基于输入域的方法
等价类划分
总共十个等价类
边界测试
我的答案:(不一定正确)
测试用例:
Username
1、jdksjf2_-
2、空
3、dsj1_- 8
4、8888
5、dkjK8
Password
1、空
2、7kfj7 五个字符
3、2eiw898 七个字符
4、2Eiw898
基于组合及其优化的方法
判定表方法
因为此方法测试用例比较多,一般不用人力去测。
因果图
一般也是有自动化测试工具,不要自己画,很容易错!
组合测试
Pairwise
基于逻辑覆盖的方法
语句覆盖比较浅
判定覆盖/分支覆盖
条件覆盖
分支覆盖和判定覆盖不一定同时满足。
判定-条件覆盖
基本路径覆盖
最后用8个左右的用例就可以满足所有覆盖。
1、A=-11,B=6 A=-(A+B)=5
2、A=,B=6 A=-(A+B)=12
1、A=-11,B=-1
2、A=-11,B=-1
1、A=-11,B=-1
2、A=-11,B=-1
1、A=-11,B=-1
2、A=-11,B=-1
1、A=-11,B=-1
2、A=-11,B=-1
基于模型的测试
MBT(基于模型的测试)
- 有限状态机
- 符号执行
- 定理证明
- 模型检验
- 随机/半随机模型
- 其他方法
模糊测试方法
- American fuzzy lop方法
- 变异测试(这是一个研究课题,是基于历史上容易犯错的地方,然后做微小改变),是用来测试测试用例的覆盖性的。
形式化方法(点到为止,现在很少有人做到)
基于数学的方法(数学表示、精确的数学语义)来描述目标软件系统属性的一种技术。
形式化的具体方法
Z语言、B语言(比较老了)
Hoare逻辑
形式化验证
形式化验证的具体方法
有限状态机或者扩展有限状态机
基于场景的测试方法
例如交通。
第四章 软件测试流程和规范
测试左移和测试右移
传统的软件测试过程
基于软件的生命周期,就是每一个过程找到缺陷。
敏捷测试过程
软件测试流派
- 分析流派
- 标准流派
- 质量流派
- 上下文驱动流派
- 敏捷流派
软件测试改进
CTP
软件测试标准与规范(这一点很重要)
CQM是我国做测试比较认的。
推荐去看GBT 15532-2008 《计算机软件测试规范》
第五章 单元测试与集成测试
代码评审与分析
国内有个阿里java规范。
GitEE是很快的。github有时候访问比较慢。
代码静态分析工具
首推sonarlint,几乎支持所有流行的语言和IDE
FindBugs虽然官方不开发了,但是有其他人开发去研究。
SourceMonitor检测代码复杂度