知识角:
软件分为两部分,一部分是数据,另一部分是程序。数据包括键盘输入,鼠标单击,磁盘文件,打印输出等;程序是指可执行的流程,转换,逻辑和运算。而我们测试最常用的一个方法也是按同样的方式划分进行测试。
一、软件测试的四种方法
软件测试常用的方法有黑盒测试,白盒测试,静态测试,动态测试。
先来简单的了解一下它们各自的含义吧:
黑盒测试
又称功能性测试或行为测试,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试。它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
白盒测试
又称透明盒测试或结构测试或逻辑驱动测试,是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作,即可以看到盒子里面。
静态测试
是指测试不运行的部分,只是检测和审核。
动态测试
是指通常意义上的测试,使用和运行软件。
二、交叉后的四种测试
但是黑白盒测试与静动态测试有时候是有交叉的,为了便于我们清楚明白并且更好的测试,我们将它再次组合细分,分为四种。
静态黑盒测试
顾名思义,静态黑盒测试,是指测试软件不运行时,并且看不到软件内部结构时的测试。举例说明,测试产品说明书。不要局限的认为软件测试只能测试软件,与软件联系密切的东西也是需要我们软件测试人员来测试的。比如产品说明书,很重要,它涉及到你的软件刚投入运行时,客户的体验度等问题,不要小瞧产品说明书,把这个测好了,很能说明一个人的能力。
动态黑盒测试
是指测试软件运行时,但是不知道软件内部结构时的测试。这里就涉及到了黑盒测试的很多技巧,比如等价类的划分,边界值的选择等。
这个时候我们可以从来两个方面下手测试,数据和程序。数据测试的学问很大,也很细节,在这里不详细阐述。然后就是程序的测试,可以根据状态图的转换进行测试。
很多的时候,软件测试员代表了客户的利益,所以,测试的时候我们完全可以换位,把自己当成客户来测试。
静态白盒测试
是指不执行软件的条件下有条理的审查软件设计,体系结构和代码,从而找出软件缺陷的过程,有时也会称为结构化分析。在开发的初期进行此测试会对整个项目非常的有益。由于此项测试需要大量的准备工作,所以为了我们更加有效的测试,现在已经有了很多这样能够自动执行大量静态白盒测试工作的商业软件,即静态分析程序。
动态白盒测试
是指利用查看代码功能和实现方式得到的信息来确定哪些需要测试,哪些不要测试,如何开展测试。在这里需要区别动态白盒测试和调试的区别。这两项从技术表明上看很相似(都包括处理软件缺陷和查看代码的过程),但是它们的目标大不相同。动态黑盒测试的目的是寻找软件缺陷,调试的目标是修复缺陷。
在这里我们也会涉及到单元测试和集成测试,而且有时候为了测试的更加全面,我们需要执行程序的每个条件,语句,有时候甚至于所有的代码。这个时候建议大家做好测试用例,然后借助工具来测试(比如代码覆盖分析器)。
小结:
看了这么多,有些枯燥乏味了,一直都是我在给大家讲些基础性的东西,没有大家跟我的一起思考,学起来怎么会有意思?所以在这里给大家提出一个小小的问题,没有所谓的标准答案,希望大家各抒己见,我们共同探讨!
问题:为什么说了解了软件的内部的结构会影响我们测试的思路和方法呢?
软件测试系列之黑白盒