以测试方法划分为以下三大类
黑盒测试
我们把软件看成一个封闭的盒子。黑盒测试的意思就是通过产品设计的需要,进行操作验证,以用户的角度对可视化界面做输入和输出的验证,这也是我们常规意义来讲的测试用例要测试的范围。适用于初级测试工程师,或者有些公司在职责范围上做了细分:比如功能测试,前端测试,客户端测试负责的职责范围。但是有个误区在这里需要重点强调的,虽然黑盒测试的门槛较低,但是它是整个测试工作的核心部分,是不可或缺的,任何程序和架构最终都是为用户端来服务,到了用户可见的部分,是最后一道关卡,如果黑盒测试执行不到位,往往直接影响用户使用。UI自动化测试也属于黑盒测试,以及兼容性测试。
白盒测试
与黑盒测试相反。他的侧重点在于盒子的内部构造,每一个单元,每一个零部件本身的功能是否符合设计,是否能满足总体功能逻辑的运转。 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。比如语句覆盖每条语句至少执行一次。 判定覆盖每个判定的每个分支至少执行一次。 条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖条件覆盖。 条件组合覆盖每个判定中各条件的每一种组合至少出现一次。 路径覆盖使程序中每一条可能的路径至少执行一次。总的来说,目前在我国,白盒测试可以说是较为罕见的测试岗位,而往往拥有白盒测试能力的,基本都在做开发工作,白盒测试的身价往往要高于普通的开发工程师,所以考虑时间和成本,往往一般中小型企业不会设置白盒测试岗位,也很少会要求开发人员自己去做白盒测试。 我们往往提到的单元测试属于这个范畴。
灰盒测试
测试方法介于白盒和黑盒之间,所以定义为灰盒测试,前些年没有这个官方概念,是业内口传开来被逐渐认可接受的一个测试概念。灰盒测试的侧重点近白盒测试,主要以程序内部为主要目的,往往借助工具辅助进行测试,通过数据监测来反证内部逻辑的方法。 比如弱网络测试,压力测试,性能测试,接口自动化测试,抓包测试。
总结:任何一种测试方法,其实都不是绝对的黑白灰,这取决于你要测试的深度,比如同样是兼容性测试,同样是性能测试,同样的弱网络测试,我们在执行的时候,要关注的点可能都是不同的。以性能测试为例,如果我们只是通过工具实现了接口调用并给出统计数据,这其实是黑盒测试,如果我们深入到服务器,去拿到各个服务的具体性能表现参数,这就属于灰盒测试,如果我们深入到代码的具体细节,比如内存使用,某个函数的性能表现,这就是白盒测试。而通常我们在工作当中不会在意你到底是什么颜色,而是以测试目的来进行区分的,所以又有以测试目的划分的类别:
以测试目的划分为以下四大类
功能测试
客户端测试:以测试用例为执行参照,进行操作验证产品设计的目标。
接口测试:以接口文档为执行参照,对接口进行测试,因为很多接口参数是不暴露给用户看的,所以通过对参数的直接测试,也可以省去复杂的客户端操作过程。
抓包测试:以抓包工具为参照,在操作过程中,验证客户端调用接口的时机,次数和参数准确性。必要时在局部修改入参,或者在局部修改相应,主要目的是验证客户端使用接口的正确性,以及对可能出现的异常数据做出合理处理。
自动化测试
UI自动化测试:可以通过现有工具,也可以通过自主开发的测试脚本,实现客户端测试的测试步骤,主要目的是用于代替人力做重复性的测试工作。
接口自动化测试:可以通过现有工具,也可以通过自助开发的测试脚本,实现接口调用和验证。主要目的是用于代替人力重复性的接口测试工作。
性能自动化测试:可以通过现有工具,也可以通过自助开发的测试脚本,性能测试,压力测试,稳定性测试实现周期性自动测试。
性能测试
分为负载测试,压力测试,稳定性测试,基准测试,容量测试,高可用测试等测试目的。通常使用现有工具进行,也可以使用自主开发的脚本进行。
安全测试
安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。安全测试目前还没有一个规范性共识性的标准,鄙人从业十年也从未见过有专职的安全测试工程师。不过安全测试的重要性已经逐渐被提及,而很多公司已经开始采取了一些必要的安全性测试。对于测试来说,在功能测试的抓包测试阶段就应该注意观察是否有数据伪造篡改的现象。而性能安全这一块往往通过服务器的前置机进行管理限制,目前最主要的难点在于代码安全和数据安全,反监控,反爬虫,返反编译,都是重要的课题,而做这类测试知识储备上,无论是开发人员还是测试人员都不能做到方方面面的完美,但是有必要尽最大可能去做,去保证这个安全性。目前有些公司把这一块归为网络安全保障那一类里,让运维部门负责,从网络层,系统层增设安全屏障。而将来会安全测试会发展成什么样子,我认为取决于国内各大互联网企业吃多少亏,有多少损失。如果大家看到现在有多少做爬虫的,做工作室的,以及接到乱七八糟的营销电话,就知道目前互联网环境的安全性有多么糟糕,你的用户资料,你辛辛苦苦做到统计数据,会被别人拿去用,你看了房产广告后,就有一堆推销电话,让你买房问你要不要贷款,你去玩游戏或者论坛,就有人问你要不要道具或者刷赞。我个人觉得,安全测试的前景很明朗,我们应该准备去迎接这个未来,这块饼有人舔了,快到抢着吃的时候了。
其它术语
冒烟测试
这句话显然来自硬件测试。主要意图是在软件交付测试的时候,要进行快速大概的一个测试验证,以有限筛查出重大BUG,给开发人员调整和修复的机会,也给测试执行阶段避免因重大BUG阻断工作的进行以延误总体的进度。
回归测试
即对已经存在的功能点进行重新测试,由于程序很多地方具有联动性,避免牵一发动全身的目的。
拨测
通常是发布生产环境之后进行的测试,测试人员与普通用户一样去使用软件,但是由于处于正式运营的环境里,制造大量测试数据往往会破坏美感,或者影响运营数据的收集,所以选择对极为关键的功能点进行轻微测试,就好像拨弄一下,确认是我们在测试环境内最后提交的那版代码即可。就好像在粮仓里,用签子捅破一袋米来看看一个道理。