概念测试的生命周期是软件生命周期的一部分;它们应该同时开始。测试的设计开发过程与正在构建的应用程序一样复杂和艰巨。如果未能尽早开始,测试或者不够完善,或者会导致需要在开发时间表上附加一个长时间的测试和错误修正时间表,这将有违迭代开发的初衷。此外,测试计划和设计活动可以揭示应用程序定义中的故障和缺陷。这些问题越早得以解决,对整个时间表造成的影响就越小。评价过程中发现的问题可以在本次迭代解决,也可以留待下次迭代解决。通过核实已经实施的需求来评测迭代的完全程度,是评价的主要任务之一。迭代之间始终存在着某种“需求蠕变”,您需要意识到其存在并能够对其加以管理。
执行测试的方式取决于多种因素:您的应用领域、预算、公司策略和风险承受能力以及职员。对于测试的投资多少取决于在具体环境中评价质量和承受风险的方式。
各种测试概念对照表测试概念名称
目标
范围
所有人
是否该持续集成
工具
备注
单元测试
验证源代码单元能够正确工作
class
开发人员
是
JUnit
应该产生100%的代码覆盖率报告
功能测试
面向代码,通过组件内示例数据测试特征
class
开发人员
是
JUnit
应该模拟依赖接口
集成测试
依赖一定的环境进行一些路径覆盖测试
components
开发人员
可选
JWebUnit
TestNG
如果测试很快并且环境依赖可以很容易的自动安装,可以包含在持续集成中
冒烟测试
确保关键功能运行
application
开发人员
否
JWebUnit
TestNG
代码提交给测试人员前运行,对于web-app模块等同于集成测试
回归测试
寻找回归的bugs,即只在新版本上出现的bugs。
application
测试人员
否
Selenium
重新运行之前版本运行过的测试
完备性测试
集中在修复的bugs和新特性上
application
测试人员
否
Selenium
为新特性增加新的测试用例
系统测试
针对功能需求规范(FRS)、系统需求规范(SRS)测试整个系统
application
platform
测试人员
否
Selenium
可能包括更多测试,像可用性测试
平台测试
在不同的硬件和软件平台上运行
application
platform
测试人员
否
Selenium
性能测试
通过采集应用数据消除瓶颈
application
platform
开发人员
否
JMon,ab,
httperf,JMeter
负载测试
暴露非表面bugs,确保达到性能指标
application
platform
团队
否
ab,siege
httpref
负载测试有时叫做大数据量测试,或者耐力测试
压力测试
通过耗尽资源或者删除资源来尽力破坏系统
application
platform
测试人员
否
ab,httpref
也叫拒绝测试或者恢复测试
用户验证测试
需要的业务功能和正确的系统功能的一个最终验证,在类实际环境中进行
application
platform
客户
否
客户决定
也叫拒绝测试或者恢复测试