白盒测试

白盒测试（）又稱透明盒測試（glass box testing）、結構測試（structural testing）等，软件测试的主要方法之一，也称结构测试、逻辑驱动测试或基于程序本身的测试。測試應用程式的內部結構或運作，而不是測試應用程式的功能（即黑箱測試）。在白箱測試時，以程式語言的角度來設計測試案例。測試者輸入資料驗證資料流在程式中的流動路徑，並確定適當的輸出，類似測試電路中的節點。测试者了解待测试程序的内部结构、算法等信息，这是从程序设计者的角度对程序进行的测试。

白箱測試可以應用於單元測試（unit testing）、整合測試（integration testing）和系統的軟體測試流程，可測試在整合過程中每一單元之間的路徑，或者主系統跟子系統中的測試。儘管這種測試的方法可以發現許多的錯誤或問題，它可能無法檢測未使用部分的規範。

白盒测试设计技术包括以下代码覆盖标准：

 控制流测试
 数据流测试
 分支测试
 语句覆盖
 判定覆盖
 修正条件/判定覆盖
 主要路径测试
 路径测试

基本步骤

白盒测试的基本步骤包括测试者对被测试的源代码有一个深层次的理解。程序员必须对应用有一个深度理解，以清楚的知道应创建哪种测试用例，从而使得测试中的所有可见路径都可以被执行。源代码被理解之后才可以被分析，以创造测试用例。以下是白盒测试创建测试用例的三个基本步骤：
 输入包括不同种类的需求，功能方面，文档中的详细设计，合适的源码，安全方面。这是白盒测试列出所有基本信息的准备阶段。
 过程包括风险分析来导向整个测试过程，合适的测试计划，执行测试用例和交流过程。 这是建立测试用例的阶段，以确保他们彻底的测试了应用程序，并且记录下了相应的测试结果。
 输出包括准备最后报告，其中包含了以上所有准备材料和结果。

优点
白盒测试是当今使用的两个最大的测试方法之一。 它有几大优势：

 在测试过程中掌握有关源代码的知识是有益的。 
 通过揭示隐藏的错误进行的代码优化，可以消除可能存在的缺陷。
 开发人员需仔细地进行接下来的开发，白盒测试可以为程序员提供反馈。
 从源代码层面测试提供了可追溯性，简化了将来软件改动带来的测试改动。
 白盒测试容易实现自动化。
 关于测试的停止时间，白盒测试给出了明确的工程学上的规定。

缺点

尽管白盒测试具有很大的优势，它并不完美，并包含一些缺点：

 白盒测试复杂，因为测试员必须有编程知识，算得上是一个程序员。根据测试层面的复杂性，白盒测试需要知识水平更高的程序员。
 在某些情况下，要测试程序中的所有可能情况是不现实的，因此会有一些未被测试的情况。
 白盒测试着眼于已存的软件，可能无法发现遗漏的功能。

黑客
在渗透测试中，白盒测试是指其中一个方法，即白帽黑客已经充分了解了被攻击的系统。白盒渗透測試的目的是模擬一個對目標系统有所瞭解甚至有基本身份的惡意内部人员。

参见
 黑盒测试
 灰盒测试
 白盒密码术

参考文献

软件工程
软件测试
硬件测试
计算机编程
编程原则