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

时间:2022-08-27 10:49:47

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

【文章摘要】

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

【关键词】

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

0 引言

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

1 黑盒测试与白盒测试

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

例如我们在做web程序的黑盒子测试时会经常使用一些Fuzzing工具去进行一些压力的测试,有时候也会进行一些安全性的比如跨站脚本攻击的测试、SQL注入攻击的测试、跨域提交漏洞的测试等等注入此类在不知道程序源代码情况下的Fuzzing技术都属于黑盒测试的范畴。用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出,但这是不可能的。

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

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

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

在PHP的设置中register_globals = Off,PHP在进程启动时,会根据register_globals的设置,判断是否将$_GET、$_POST、$_COOKIE、$_ENV、$_SERVER、$REQUEST等数组变量里的内容自动注册为全局变量。

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

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

而对于目前我国软件产业的现状,存在多个开源或者非开源项目均曾经爆出过较为严重的安全漏洞问题。如下是国内某著名开源软件工程中存在的一个存储型跨站脚本攻击的代码。

如下函数,解析转化Iframe标签(Iframe标签本身就是个危险标签,不知道要保留这个功能意义何在)如下

public static function parseIframe($message,$convertStatus = 1){

return preg_replace("/\[iframe\]([^\[\

self::$_cvtimes);

}

看正则/\[iframe\]([^\[\

public static function createIframe($url,$convertStatus){

if($convertStatus){

$html = "

height=\"340\">";

} else {

$html = "Iframe Close:$url";

}

return self::_pushCode($html);

}

1)判断convertStatus,该参数默认为1,生成的$html是将$url的值直接带入src。所以问题出现了。构造javascript:alert(1)即可触发该漏洞。我们可以看到生成的HTML代码为,

当不知情者访问后即可触发跨站脚本漏洞

2)当传递的convertStatus的值为0时,生成的$html是将$url的值直接带入href。所以问题同样出现。构造javascript:alert(2)点击即可触发。我们可以看到生成的HTML代码为,

javascript:alert(1)

点击后仍能触发跨站脚本漏洞

由于该款产品在国内用户使用量大概在六百万以上,所以这个问题刚开始爆出来的时候给很多的个人建站用户造成了很大的影响,官方也在第二天及紧急安全补丁修复这个问题,但是仍然造成数以万计的使用该程序的站长网站被利用。

3 结语

软件测试最终的目的是为了发现软件工程中存在的BUG以及安全漏洞等,从而有效的对整个软件工程中潜在的风险进行改正。

【参考文献】

陈汶斌.软件测试技术基础[M].北京:清华大学出版社,2008(19)

【作者简介】

夏天(1982—),男,沈阳人,辽宁德康医药有限公司电子商务部经理,同济大学软件学院软件工程硕士研究生。

上一篇:浅析如何加强建筑施工企业的财务风险控制 下一篇:浅论电子政务信息资源的安全与对策