白盒测试
外观
白盒测试(white-box testing)又称透明盒测试(glass box testing)、结构测试(structural testing)等,软件测试的主要方法之一,也称结构测试、逻辑驱动测试或基于程序本身的测试。测试应用程序的内部结构或运作,而不是测试应用程序的功能(即黑盒测试)。在白盒测试时,以编程语言的角度来设计测试案例。测试者输入资料验证资料流在程序中的流动路径,并确定适当的输出,类似测试电路中的节点。测试者了解待测试程序的内部结构、算法等信息,这是从程序设计者的角度对程序进行的测试。
白盒测试可以应用于单元测试、集成测试和系统的软件测试流程,可测试在集成过程中每一单元之间的路径,或者主系统跟子系统中的测试。尽管这种测试的方法可以发现许多的错误或问题,它可能无法检测未使用部分的规范。
白盒测试设计技术包括以下代码覆盖标准:
- 控制流测试
- 数据流测试
- 分支测试
- 语句覆盖
- 判定覆盖
- 修正条件/判定覆盖
- 主要路径测试
- 路径测试
基本步骤
[编辑]白盒测试的基本步骤包括测试者对被测试的源代码有一个深层次的理解。程序员必须对应用有一个深度理解,以清楚的知道应创建哪种测试用例,从而使得测试中的所有可见路径都可以被执行。源代码被理解之后才可以被分析,以创造测试用例。以下是白盒测试创建测试用例的三个基本步骤:
- 输入包括不同种类的需求,功能方面,文档中的详细设计,合适的源码,安全方面。[1]这是白盒测试列出所有基本信息的准备阶段。
- 过程包括风险分析来导向整个测试过程,合适的测试计划,执行测试用例和交流过程。[1] 这是建立测试用例的阶段,以确保他们彻底的测试了应用程序,并且记录下了相应的测试结果。
- 输出包括准备最后报告,其中包含了以上所有准备材料和结果。[1]
优点
[编辑]白盒测试是当今使用的两个最大的测试方法之一。 它有几大优势:
- 在测试过程中掌握有关源代码的知识是有益的。[2]
- 通过揭示隐藏的错误进行的代码优化,可以消除可能存在的缺陷。[2]
- 开发人员需仔细地进行接下来的开发,白盒测试可以为程序员提供反馈。[2]
- 从源代码层面测试提供了可追溯性,简化了将来软件改动带来的测试改动。[3]
- 白盒测试容易实现自动化。[4]
- 关于测试的停止时间,白盒测试给出了明确的工程学上的规定。[5][4]
缺点
[编辑]尽管白盒测试具有很大的优势,它并不完美,并包含一些缺点:
- 白盒测试复杂,因为测试员必须有编程知识,算得上是一个程序员。根据测试层面的复杂性,白盒测试需要知识水平更高的程序员。[2]
- 在某些情况下,要测试程序中的所有可能情况是不现实的,因此会有一些未被测试的情况。[2]
- 白盒测试着眼于已存的软件,可能无法发现遗漏的功能。
黑客
[编辑]在渗透测试中,白盒测试是指其中一个方法,即白帽黑客已经充分了解了被攻击的系统。白盒渗透测试的目的是模拟一个对目标系统有所了解甚至有基本身份的恶意内部人员。
参见
[编辑]参考文献
[编辑]- ^ 1.0 1.1 1.2 Ehmer Khan, Mohd. Different Approaches to White Box Testing Technique for Finding Errors (PDF). International Journal of Software Engineering and Its Applications. July 2011, 5: 1–6 [12 February 2013]. (原始内容 (PDF)存档于2015-07-01).
- ^ 2.0 2.1 2.2 2.3 2.4 Ehmer Khan, Mohd. Different Forms of Software Testing Techniques for Finding Errors (PDF). IJCSI International Journal of Computer Science Issues. May 2010, 7 (3): 12 [12 February 2013]. (原始内容 (PDF)存档于2015-11-23).
- ^ Binder, Bob. Testing Object-oriented Systems. Addison-Wesley Publishing Company Inc. 2000.
- ^ 4.0 4.1 Ammann, Paul; Offutt, Jeff. Introduction to Software Testing. Cambridge University Press. 2008 [2015-05-26]. ISBN 9780521880381. (原始内容存档于2021-04-25).
- ^ Myers, Glenford. The Art of Software Testing. John Wiley and Sons. 1979.