测试是提高软件质量的重要手段,确认软件是否达到可用级别(用户需求),它关注系统的某一侧面的质量特性。
测试的分类:
从范围上看:
单元测试:针对软件的最小单元模型开展测试(一般来说是在单个方法/类的级别),隔离各个模块,容易定位错误和调试 。
集成测试:将多个程序员/团队编写的类/包/组件/子系统联合起来测试 系统测试:对整个系统进行测试,将硬件、软件、配置信息等看作一个整体。
验收测试:产品发布之前所进行的软件测试活动,是技术测试的最后一个阶段,目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务 。
回归测试:一旦程序被修改,重新执行之前的所有测试以确认修改没有引入新的错误或导致其他代码产生错误。
从静态/动态上看:
静态测试:在编写代码的阶段由程序员或是代码编辑器、编译器等工具进行检查(如语法检查、代码评审)。
动态测试:通过测试用例实际执行了编写的代码 动态测试可能在程序完全编写完成前就用于测试代码的特定节。
从结构上看:
白盒测试:对程序内部代码结构的测试 。
黑盒测试:对程序外部表现出来的行为的测试(例如输入输出)。
测试用例及编写:
测试用例:输入 + 执行条件 + 期望结果
测试的动机:让代码出错,出错越快越好
先写规约,再写符合规约的测试用例 。
写代码、执行测试、有问题再改、再执行测试用例,直到通过它 。
测试驱动开发(TDD):将需求转化为具体的测试用例,然后软件经过改进,通过新的测试。