background image

论软件测试在软件工程中的作用

【文章摘要】

 

  随着软件规模的日益增大,软件的安全测试问题也日益突出,使得软件安全测试也成
为软件开发中一个不可分割的重要部分。基于缺陷模式的软件测试技术作为高可信软件的重
要保证,可以大大降低软件的缺陷密度,提高软件的可信性。

 

  【关键词】

 

  软件开发;白盒测试;黑盒测试

 

  

0 引言 

  软件测试是属于开发阶段最后一段时间的主要工作。需要对软件进行全方位的测试,以
确保软件在上线运营时不会出现影响正常功能使用上的问题。软件测试时一项非常重要的工
作,也是软件工程中一个重要的环节。软件测试是在软件投入运行前,对软件需求分析,设
计规格说明和编码的最终复审,是软件质量保证的关键步骤。常见的测试方法有黑盒测试与
白盒测试。

 

  

1 黑盒测试与白盒测试 

  软件工程中的测试,必须要用正确的方法,才能提高效率并且行之有效的解决整个开
发过程中的问题,并且能为后期的维护提供最大的便利。而我们最经常用到的测试方法就是
黑盒测试与白盒测试。

 

  例如我们在做

web 程序的黑盒子测试时会经常使用一些 Fuzzing 工具去进行一些压力

的测试,有时候也会进行一些安全性的比如跨站脚本攻击的测试、

SQL 注入攻击的测试、跨

域提交漏洞的测试等等注入此类在不知道程序源代码情况下的

Fuzzing 技术都属于黑盒测

试的范畴。用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测
试数据,来检查程序是否都能产生正确的输出,但这是不可能的。

 

  工作中大部分的黑盒测试都可以通过编写代码来实现全自动化的安全测试,这样可以
解放人的不断重复性劳动,是一种在做黑盒测试中最常见的方式。

 

  把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信
息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,
确定实际的状态是否与预期的状态一致,这就是白盒测试。白盒测试又称为结构测试或逻辑
驱动测试。软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:对程序模块的
所有独立的执行路径至少测试一次;对所有的逻辑判定,取

“真”与取“假”的两种情况都至

少测试一次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性等。

 

  白盒测试是一种比较容易找出软件编码中存在的严重问题的方式,他通过通读源代码
来发现整个工程中存在的一些逻辑漏洞,或者一些危险函数的利用。有时候也可以通过监测
输入数据与输出数据的中间流程来发现是否存在输入未过滤或者输出不合法等问题。我们以
PHP 脚本语言问例,当前很多的 WEB 端软件工程多是用 PHP 开发完成,而 PHP 语言存在
的危险函数和危险变量则多达几十个如果稍有使用不慎,就会造成较为严重的安全漏洞。

 

  在

PHP 的设置中 register_globals = Off,PHP 在进程启动时,会根据 register_globals 的

设置,判断是否将

$_GET、$_POST、$_COOKIE、$_ENV、$_SERVER、$REQUEST 等数组变

量里的内容自动注册为全局变量。

 

  

2 软件测试在软件工程中的意义 

  软件的测试环节做的好与坏,决定了整个工程的成败。从软件测试和软件可靠性理论入
手,对现有的软件可靠性技术进行研究分析从中发现一些问题就是软件测试的主要目的。与
此同时要总结出现有可靠性模型的特点并分析出现有可靠性模型所存在的局限性与不足,
以方便后续开发程序中注意存在的问题。