白盒测试

2022-09-11

随着软件产业的发展, 软件质量也越来越受到人们的关注, 如何提高软件产品质量被提上了日程。在传统的行业里, 从产品控制到标准过程控制, 产品质量上了一个新的台阶, 而它所遵循的标准过程规范主要是ISO9001。对于软件产品来说, 虽然它有别于传统的产品, 但是它也有专门的标准过程控制规范-CMM/CMMI来保证其过程和产品质量。而软件测试则是保证软件产品质量的重要手段。

软件测试即使用人工或者自动手段来运行或测试某个系统的过程, 其目的在于检验它是否满足规定的需求货弄清预期结果与实际结果之间的差别。按照测试技术可以把软件测试分成白盒测试和黑盒测试, 黑盒测试主要是把软件产品看成是完全封闭的黑盒子, 测试软件完全不用去理会盒子内部的结构, 只需关注它的整体;而白盒测试则是把这个黑盒子打开, 我们不仅要关注其功能, 还要关注其内部结构。对于白盒测试和黑盒测试大家可能听说得比较多, 那什么时候采用黑盒测试, 什么时候采用白盒测试呢?我们知道把测试按照开发阶段来进行划分要经历单元测试、集成测试、系统测试和验收测试, 严格来说只有单元测试要采用白盒测试, 集成测试会涉及到一些, 其它的都是使用黑盒测试。实际工作中实现人员编好代码后即调试, 然后交叉测试, 因此单元测试主要有实现人员来做, 但是实现人员不是专业的测试人员, 虽然他们精通自己编写的代码, 但是却不知道该如何进行有效的测试, 这也是白盒测试在实际工作中的一种现状。

白盒测试是软件测试中一种很重要的方法, 不管是实现人员还是测试人员都应该掌握。

白盒测试的方法有:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法等。

在使用各种白盒测试方法时可以采用如下策略:

(1) 使用工具进行静态结构分析。

(2) 进行代码检查。

(3) 静态质量度量。

(4) 使用逻辑覆盖法和基本路径测试法进行动态测试。

1 静态结构分析

测试者通过使用测试工具分析程序源代码的系统结构、数据结构、内部控制逻辑等内部机构, 生成函数调用关系图、模块控制流图、内部文件调用关系图、子程序表、宏和函数参数表等各类图形图表、可以清晰地标志整个软件系统的组成结构, 检查软件有没有存在缺陷或错误, 有没有存在孤立的没有被调用的函数。

常用的白盒测试工具有:Parasoft的白盒测试工具、Compuware的白盒测试工具和Xunit的白盒测试工具。

2 代码检查

代码检查包括桌面检查、代码审查和走查, 主要检查代码和设计的一致性, 代码对标准的遵循、可读性, 代码逻辑表达的正确性, 代码结构的合理性等方面;找出违背程序编写规范的地方等。这些检查可参照代码编写规范进行逐一审查。

3 静态质量度量

从各种质量度量指标:功能性、可靠性、可用性、有效性、可维护性和轻便性, 设定相应的质量参数 (比如代码行数、注释频度等) 来度量其代码。

4 逻辑覆盖测试

白盒测试的动态测试要根据程序的控制结构设计测试用例, 要做到以下几点。

(1) 保证一个模块中的所有独立路径至少被使用一次。

(2) 对所有逻辑值均需测试真和假。

(3) 在上下边界及可操作范围内运行所有循环。

(4) 检查内部数据结构以确保其有效性。

进行动态测试时可以选择逻辑覆盖法和基本路径测试。

逻辑覆盖法有语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖和多条件覆盖。这些覆盖方法并不是每一次都要用全, 根据实际情况可以选择某一种覆盖方法。

5 基本路径测试法

基本路径测试法是在程序控制流图的基础上, 通过分析控制构造的环路复杂性, 导出基本可执行路径集合, 从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的语句覆盖100%, 条件覆盖100%。

有下面的C函数, 用基本路径测试法进行测试:

设计测试用例如下:

(1) 输入数据:i Record Num=0, 或者取i Record Num<0的某一个值,

预期结果:x=10。

(2) 输入数据:iRecordNum=1, iType=2,

预期结果:x=20。

(3) 输入数据:iRecordNum=1, iType=1,

预期结果:x=10。

(4) 输入数据:iRecordNum=1, iType=2,

预期结果:x=20。

白盒测试可以迫使测试人员去仔细思考软件的实现, 可以检测代码中的每条分支和路径, 可以揭示隐藏在代码中的错误, 可以对代码的测试比较彻底, 从而达到最优化。但是白盒测试代价很大, 无法检测代码中遗漏的路径和数据敏感性错误, 也不能验证其规格的正确性。因此在实际的工作中白盒测试常常由实现人员的调试和交叉检查代替, 并没有从真正的意义上去完成白盒测试的工作。

白盒测试并非所有的系统都适合做, 特别是一些依赖硬件环境的更不适合做白盒测试, 白盒测试的方法也并非所有系统都适合, 我们要根据系统的实际情况选择相应的白盒测试方法。

相信只要我们采用了有效的白盒测试方法, 使白盒测试不再是沉重负担, 就算没有严格的流程限制, 它也将成为一项有意义及创造性的工作。

摘要:目前IT行业对软件测试越来越重视, 而白盒测试更是软件测试中的一个重点和难点, 如何攻克白盒测试关, 本文给出了一些建议和方法。

关键词:CMMI,静态测试,动态测试

参考文献

[1] 柳纯录.软件评测师教程[M].清华大学出版社.

上一篇:供应链的风险影响因素及其防控下一篇:房产档案管理的创新路径

本站热搜