目录
1 解释
软件测试是提供有关被测产品或服务质量的信息而进行的一项调查。它是执行程序或应用程序的过程,目的是发现错误(错误或其他缺陷),并验证软件产品是否适合使用。测试的目标与其他开发活动的目标背道而驰。目标是找出错误。
2 测试水平
Unit testing 单元测试:它指的是验证特定代码的一部分功能的测试,通常在功能级别。
Integration testing 集成测试:由多个程序员或编程团队创建的两个或多个类、包、组件、子系统的组合执行。
System testing 系统测试:对一个完全集成的系统进行测试,以验证该系统是否满足其要求。
3 静态测试与动态测试
静态测试是在没有实际执行程序的情况下执行的。静态测试通常是隐式的,例如校对,即编程工具检查源代码结构、编译器检查语法和数据流等。评审、代码走查或检查称为静态测试。
动态测试描述了对代码的动态行为的测试,它实际上是用一组给定的测试案例来执行编程的代码。动态测试可以在程序100%完成之前开始,测试代码特定部分的正确性,并且它适用于测试离散的功能或模块。这方面的典型技术是使用存根/驱动器或从调试器环境中执行。
4 测试与调试
测试:发现是否存在错误。
调试:识别错误根源,消除错误。
5 白盒测试与黑盒测试
白盒测试是通过观察程序的内部结构 或程序的工作原理,通过查看 源代码来测试。黑盒测试把软件当作一个 "黑盒",在不了解内部实现的情况下检查功能,不看源代码。
6 测试优先的编程(TTD)
在写代码之前先写测试。不要把测试留到最后,那样只会使调试时间更长、更痛苦,因为错误可能在你的代码中的任何地方。先写测试是了解规约的一个好方法,写测试用例就是理解、修正、完善你的spec设计的过程。
TDD是一个重复较短开发周期的开发过程:需求变成非常具体的测试案例,然后改进软件以通过新的测试。
7 回归测试
在每次修改后运行所有的测试被称为回归测试。软件工程师从痛苦的经验中知道,对一个大型或复杂程序的任何改变都是危险的。无论你是修复另一个错误,增加一个新的功能,还是优化代码以使其更快,一个自动化的测试套件可以保留正确行为的底线--即使只有几个测试--也能拯救你。在你改变代码时经常运行测试,可以防止你的程序退化--即在你修复新的错误或增加新的功能时引入其他错误。