在软件构造课上,介绍了一些常用的测试方法,包括黑盒测试、白盒测试、集成测试等, 所以想要去了解一下现在的测试的主流方法。
一、按测试设计方法分类
1、黑盒测试
黑盒测试是把测试对象看做一个黑盒子,利用黑盒测试法进行动态测试时,需要测试软件产品已经实现的功能是否符合功能设计要求,不需测试软件产品的内部结构和处理过程。
黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。
也就是说,黑盒测试不需要测试工程师了解软件内部的具体实现,而是针对功能进行测试。这种测试更接近于用户实际的使用情况。比如渗透测试工程师很多时候就是黑盒测试安全漏洞。
实例:一个电商平台,那么测试的时候针对登录,注册,忘记密码,搜索商品,购买,评价,退货等基本的功能收集接口,然后根据接口测试。还会输入一些极端数据和不合法数据来测试程序的鲁棒性。
2、白盒测试
设计者可以看到软件系统的内部结构,并使用软件的内部知识来指导测试数据及方法的选择。白盒测试通常被认为是单元测试与集成测试,会尽量覆盖到软件的不同路径。
一般有六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖。
3、灰盒测试
介于黑盒和白盒之间是一种综合测试的方法,将白盒测试和黑盒测试结合在一起,构成一种无缝测试技术。灰盒测试是基于程序运行时的外部表现又结合程序内部逻辑结构来设计测试用例,执行程序并采集程序路径执行信息和外部用户接口结果的测试技术。灰盒测试法旨在验证软件满足外部指标以及软件的所有通道或路径都进行了检验。
二、按阶段分类
1、单元测试
对软件中的最小可测试单元进行检查和验证。桩模块是指模拟被测模块所调用的模块,驱动模块是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块并输出结果。
实例:在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
我们使用Junit对类中的方法进行测试的时候也可归结于单元测试
2、集成测试
是单元测试的下一阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部门。集成测试就是用来检查各个单元模块结合到一起能否协同配合,正常运行。
实例:整合测试又称组装测试,即对程序模块采用一次性或增值方式组装起来,对系统的接口进行正确性检验的测试工作。整合测试一般在单元测试之后、系统测试之前进行。实践表明,有时模块虽然可以单独工作,但是并不能保证组装起来也可以同时工作。
总的来说,是为了测试模块与模块之间的交互。
3、系统测试
将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。系统测试的主要依据是《系统需求规格说明书》文档。
系统测试(System Testing),是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试。
系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。
实例:需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。比较常见的、典型的系统测试包括恢复测试、安全测试、压力测试。
4、验收测试
在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。验收测试又分为a测试和beta测试,其中a测试指的是由用户、测试人员、开发人员等共同参与的内部测试,而beta测试指的是内测后的公测,即完全交给最终用户测试。
实例:就是网游常见的内测和公测。其实我们现在在使用某些软件,在某种意义上,我们也可以被称为“软件测试工程师”^-^
(没错我就是微软特意聘请的win10测试工程师)
文章评论