6-5软件测试与测试优先的编程
1、Software Testing软件测试
1.1什么是测试
软件测试是提高软件质量的重要手段,是一种来发现程序或者应用程序中的bug的过程,来确认软件是否达到可用级别(用户需求)。它关注系统的某一侧面的质量特性。
即使是最好的测试, 也无法达到100%的无错误
残留缺陷率:1-10%典型的行业软件
0.1-1%高质量的测试,Java库可能达到这种正确性
0.01-0.1%非常好、安全的测试。NASA和Praxis这样
的公司可以达到
1.2测试的特点
测试的目的是发现错误。
再好的测试也无法证明系统里不存在错误。
什么样的测试是好的测试:
1、能发现错误
2、不冗余
3、最佳特性
4、不太复杂也不太简单
1.3测试的层次
单元测试:测试特定的代码段的功能
集成测试:由多个程序员或编程团队创建的多个类、包、组件、子系统的联合执行
系统测试:对一个完全集成的系统进行测试,以验证该系统满足其要求,从而在其最终配置中执行软件
回归测试:
验收测试:
1.4其他的测试类型
Installantion testing、Compatibility testing等
1.5静态测试VS动态测试
静态测试:不执行程序。Reviews, walkthroughs, inspections。
动态测试:描述对代码的动态行为的测试,该测试实际上使用给定的一组测试用例执行已编程代码。
动态测试可以在程序100%完成之前开始,以便测试特定的代码段,并应用于离散的函数或模块。
1.6测试VS调试Testing vs Debugging
测试:发现是否存在错误
调试:识别错误根源,消除错误
1.7白盒测试VS黑盒测试
白盒测试:对程序内部代码结构的测试
黑盒测试:对程序外部表现出来的行为的测试