图片浅释常用的软件测试的类型
本文简述了常见的软件测试类型,以及提供了一些简单的图表来展示各种测试间的关系和一些近似数据。图表并非经过严格测量,而是根据经验画出的示意近似值,并且假定的前提条件是,尽可能在现有条件下把自动化程度提到最高。
?
各类常见的软件测试简介单元测试用于测试最小的独立功能单元,比如一个函数的输入输出,或者一个类的组成和调用。单元测试的细节程度高,覆盖面广,因此数量也多。
功能测试一般用于测某个功能模块,比如说测试系统是否能完成某一个任务。由于功能测试的范围完全取决于系统的结构,所以相对单元测试来说,功能测试边界更为模糊。
集成测试用于测试系统功能或模块间的交互,比如说各种接口和边界,以保证数据能平滑地从一个地方进入另一个地方。和功能测试互相配合,都属于中层测试。
系统测试测试整个系统的功能和需求的完整性。由于其复杂程度也可变换的用例很多,所以自动化难度大,有些部份必须通过手工完成。属于外部高层次的测试,覆盖面较小,执行成本也较高。
回归测试当系统更新或者升级时,对更新的部份,或者所有关联的部份,甚至整个系统进行测试。
验收测试由系统的使用者来校验系统是否能满足功能上的需求,以及最终完成任务的结果是否正确。
性能测试测试系统在指向的条件下是否能达到速度和数据处理量等性能指标。
安全测试测试系统是否能保障数据的完整性、机密性,以及抵抗内部和外部伤害的能力。
可用性(易用性)测试测试系统是否对于人类用户友好,是否容易使用。
白盒/灰盒/黑盒测试这三种本身并不是一种独立且可执行的测试种类,而是指跟据测试者对系统内部原理和结构的信息利用程度而划分出来的测试种类。
?
白盒测试是指在直接针对源代码和内部数据结构进行的测试,比如说单元测试和功能测试,需要知道每个函数或者模块的运作原理。
?
黑盒测试是指那些不需要看源代码或内部数据流,直接从系统的外部,或者以最终用户的角度进行的测试,比如说系统测试,性能测试,可用性测试等。
?
灰盒测试则是介乎于黑白之间,也就是说不需要了解源代码和内部原理,但是对系统的组件进行的测试,比如说集成测试。
?
?
此图展示了不同层次的白盒测试对代码覆盖的相对关系。由图可知单元测试的覆盖率最高,而功能测试和集成测试则各自负责不同的方面,当然它们之间也会有很大的重复覆盖的区域。
?
?
?
?
?
此图展示了白盒率测试作用之间的重叠关系。
?
?
?
?
?
内部(Alpha)测试/公开(Beta)测试内测和公测都是针对打包并部署好的最终成品而进行的。内测是在开发组织内部,或者通过邀请少量最终用户进行。公测则是通用软件向公众发布,让所有最终用户参与试用。
?
各类测试的简易对比此图展示了各种测试随着项目推进,在各个时间段所要投入的综合成本,包括编写,运行和维护
?
?
?
?
?
此图展示了各种测试相对要花费的机器和人力成本。
?
?
?
?
?
此图展示了各种测试的覆盖面和精准度。覆盖面是指对代码各部分(分支,子程序)的执行覆盖情况。精准度是指是否精细正确地测试数据和逻辑。注:左下角的红点是颜色错误,应该是黑色(安全测试)。
?
?
?
?
?
此图展示了各种测试实现自动化的难度。
?
?
?
?
?
此图展示了各种测试对测试人员的经验和技术水平的要求。
?
?
?
?
?
?
引图展示了各种测试在问题后,定位问题所在的难度。