第三章 临阵磨枪,不快也光
对于大多数应届毕业生来说,学校并没有测试这门课程。于是,没有实习经验的同学会因为测试题目回答不上来而失去机会。本章节为测试入门者精心准备了足以应付初级测试岗位的相关知识。同学们只需熟记要点,在这一关上便能多几分把握。
3.1 基本概念
1.黑盒、白盒的概念
2.静态测试和动态测试的方法
3.软件测试的过程
3.1.1 静态、动态测试方法介绍
静态方法的主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程序。这说明静态方法一方面要利用计算机作为对被测程序进行特性分析的工具,它与人工测试有着根本的区别;另一方面,它并不真正运行被测程序,只进行特性分析,这是和动态方法不同的。因此,静态方法常称为"分析",静态分析是对被测程序进行特性分析的一些方法的总称。
静态分析并不等同于编译系统,编译系统虽然能发现某些程序错误,但这些错误远非软件中存在的大部分错误,静态分析的查错和分析功能是编译程序所不能代替的。
静态代码分析有很多工具,不同工具功能不同,有的可以做注入SQL的检查,有的则不能。下面列出一些工具,同学们可以了解一下。
Ounec5.0,扫描语言VB、C、C++、C#、Java,属于付费工具。
Coverity Prevent,扫描语言有C、C++、C#、Java,属于付费工具。
Stake SmartRiskAnalyzer,扫描语言C、C++、Java,属于付费工具。
Rational Purify,扫描语言C、C++、Java,属于付费工具。
Jtext,扫描语言Java,属于付费工具。
Flawfinder,扫描语言C、C++,属于付费工具。
Static Code Analyzer,扫描语言C、C++、C#、Java,属于付费工具。
PolySpace Client,扫描语言C、C++、Ada,属于付费工具。
RATS,扫描语言C、C++、python、perl、php,开源。
Fluid,扫描语言Java,开源。
动态方法的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例对其运行情况(输入/输出的对应关系)进行分析。日常人工测试就是属于动态测试。
3.1.2 黑盒、白盒测试概念
测试规划基于产品的功能,目的是检查程序各功能是否实现,并检查其中的错误。这种测试方法称为黑盒测试(Black-box Testing)。
测试规划基于产品的内部结构来规划测试,检查内部操作是否按规定执行,软件各部分功能是否得到充分使用。这种测试方法称为白盒测试(White-box Testing)。
黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试,是一种从用户观点出发的测试。用这种方法进行测试时,把被测程序当做一个黑盒,在不考虑程序内部结构和内部特性、测试者只知道该程序输入和输出之间的关系或程序功能的情况下,依靠能够反映这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结果的正确性。软件的黑盒测试一般被用来确认软件功能的正确性和可操作性。
白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。它依赖于对程序细节的严密检验,针对特定条件和循环集设计测试用例,对软件的逻辑路径进行测试。在程序的不同点检验程序的状态,来判定真实情况是否和预期的状态相一致。软件的白盒测试一般用来分析程序的内部结构。
可以说,黑合测试方法和白盒测试方法是从完全不同的起点出发的,并且这两个出发点在某种程度上是完全对立的,反映了测试思路的两个极端情况。这两类方法在长期的软件测试实践中已经被证明是有效和实用的。
最为常见的程序结构覆盖如下。
(1)语句覆盖:它要求被测程序的每一个执行语句在测试中尽可能都被检验过,这是最弱的逻辑覆盖准则。
(2)分支覆盖或判断覆盖:要求程序中所有判定的分支尽可能得到检验。
(3)条件覆盖:当判定式中含有多个条件时,要求每个条件的取值均得到检验。
(4)判断/条件覆盖:同时考虑条件的组合值及判定结果的检验。
(5)路径覆盖:只考虑对程序路径的全面检验。
为取得被测程序的覆盖情况,最为常用的办法是在测试前对被测程序进行预处理。预处理的主要工作是在其重要的控制点插入"探测器"--程序插装。
必须说明,无论哪种测试覆盖,即使其覆盖率达到百分之百,也不能保证把所有隐藏的程序欠缺都揭露出来。
版权声明:51Testing软件测试网获作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。