以软件周期来说明不同的测试的使用情况
从常用的角度分别介绍:
从基于功能的角度:
1、Unit Testing(单元测试)
这个步骤主要是开发者针对开发过程中,程序内部的函数、类、变量等等数据进行正确性的测试。
ex:一个函数需要把一些重要的数据插入到数据库中。那在编写完这个函数之后,就要进行测试,以验证:1)函数能正确带出需要插入数据库的数据变量。2)带出的数据可以正确的插入需要插入的数据库。
2、function Testing(功能测试)
顾名思义就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。
ex:在一个项目中,有许多功能组成,每一个功能中有许多方法组成,我们经过单元测试不能确定其正确性,所以需要更加详尽的功能测试过程。
3、Integrated Testing(集成测试)
集成测试是在单元测试的基础上,将所有模块按照详细设计的要求组装成子系统或系统,进行集成测试。集成测试侧重于模块间的接口正确性以及集成后的整体功能的正确性。
ex:等一个个函数或者功能模块的单元测试完成之后,就需要测试这些函数或者模块之间的整体的数据流是否正确。
4、Scenario Testing(场景测试)
通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法。
ex:为什么场景法能如此清晰的描述整个事件?因为,现在的系统基本上都是由事件来触发控制流程的。如:我们申请一个项目,需先提交审批单据,再由部门经理审批,审核通过后由总经理来最终审批,如果部门经理审核不通过,就直接退回。每个事件触发时的情景便形成了场景。而同一事件不同的触发顺序和处理结果形成事件流。这一系列的过程我们利用场景法可以清晰的描述清楚。
5、System Testing(系统测试)
系统测试是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。 系统测试的目的是验证最终软件系统是否满足用户规定的需求。
。。。。
基于非功能的角度:
1、Stress Testing(压力测试)
压力测试是对系统不断施加压力的测试,通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最多服务级别的测试。
ex:我们平时浏览网页过程中,web站点在大量的负荷下,何时系统的响应会退化或失败。
2、Regression Testing(回归测试)
回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。
ex:回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某个已知已经修正的缺陷再次围绕它原来出现时的步骤重新测试。
3、Security Testing(安全测试)
对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。
ex:1)提升IT产品的安全质量; 2).尽量在发布前找到安全问题予以修补降低成本 ;
4、Accessibility Testing(可达性测试)
就是给那些可达性出现不同程度问题的人们使用软件的可能性的测试。简单说,就是测试软件是否能够被盲人、无鼠标人士、老花眼、色盲等残疾或者部分有障碍人士正常使用,这其中也包含了正常人在某些时候发生暂时性障碍的情况下正常使用,如怀抱婴儿等。
ex:测软件给残障人士的可使用性,是否可被特定read软件读出所有页面和组件,是否支持全键盘操作等等
5、Compatibility Testing(兼容性测试)
兼容性测试将验证软件与其所依赖的环境的依赖程度,包括对硬件平台的依赖程度和对软件平台依赖程度,即是通常说的软件的可移植性。
ex:兼容性测试主要目的是为了兼容第三方软件,确保第三方软件能正常运行,用户不受影响。由于各类应用软件和系统软件已经到了多如牛毛的地步,而且可以预见还将继续以爆炸式的速度增长,软件之间的数据共享和系统资源分享变成为一个问题,这也是兼容性测试的意义所在。虽然兼容性测试无法做到完全的质量保证,但对于一个项目来讲,兼容性测试是必不可少的一个步骤。