白盒测试(也常称为结构化测试)是指根据源代码的内部结构设计测试用例,对软件进行测试。在白盒测试中,主要依据源代码的内部结构来设计测试用例,测试人员根据内部结构,设计不同的输入,来测试软件的不同部分。
白盒测试可以在测试的多个阶段进行,例如:单元测试,集成测试和系统测试。在单元测试阶段,白盒测试可以对单元内部路径进行覆盖。在集成测试阶段,白盒测试可以对单元之间的路径进行覆盖。在系统测试阶段,白盒测试可以对子系统之间的路径进行覆盖。目前,白盒测试通常在单元测试阶段进行,但有趋势将白盒测试应用到更多的阶段。
在白盒测试中,主要使用代码覆盖率来评判白盒测试完成的程度。代码覆盖率是指:在测试中,所执行的源代码占全部源代码的比例。通常情况下,高的代码覆盖率意味着有可能发现更多的错误,当然,这并不是绝对的(世界上有绝对的东西吗?)。代码覆盖率可以有多种度量方式,例如:语句覆盖率、分支覆盖率、条件覆盖率、子程序(函数)覆盖率等。
以下面的程序为例说明各种覆盖率。
函数覆盖率
如果函数func被执行了至少一次,那么函数覆盖率就是100%
语句覆盖率
语句覆盖需要程序中的每条语句都被至少执行一次。
如果每条语句(3,4,5,6,7,8)都被执行至少一次,那么语句覆盖率就是100%。这里语句5,7虽然只是括号