一个可运行的软件由四个部分组成
1. 可执行的代码
2. 配置
3. 运行环境
4. 数据
任何一个部分发生变化都会软件的行为发生变化
在很多团队中往往他们只测试代码;而忽略了,或者没有完整的测试其他几个因素,因此在之后的部署过程中会遇到不少的问题
频繁的小规模测试(一般是每次check-in都会触发一次测试)可以较好的保证代码的质量
这里就需要AAT(Automatic Acceptance Test) 和一个持续 集成/构建/测试 的过程
再结合以适当的手动测试,可以较好的保证软件的质量
我们的测试一般要覆盖到以下的环节
1.成功的编译
2.成功的单元测试
3.满足软件质量标准,如代码覆盖率,或者其他的技术度量项
4.通过功能测试,主要包括和业务相关的功能
5.通过非功能测试,主要包括性能,安全性等方面的特征
6.通过探索性测试,以期待发现更多的问题并且反馈和改进
备注:所有的测试应该与生产环节尽可能的接近,包括文章开头的4点
其中能应用自动化测试的部分一般包括1-5. 如果可以的话,应该尽可能自动化(每当你开始做重复的事情的时候,你就要想想如何优化了)
其次 对每次Check-in做自动化测试,减少了两次测试之间的版本差距,每次只测试一小部分改动 将有助于准确的定位问题
自动化测试的报告将在你签入代码后不久自动发送到你的邮箱,你可以快速的看到测试反馈并决定下一步的工作(是修复bug还是继续?)
一般来说我们都强制要求用户对某些反馈作出反应,例如编译失败是一个很大的问题,他会阻止其他其他人的开发和自动测试(例如用户获取到最新的代码以后他也编译不过了)