基于缺陷模式的软件测试技术研究

中国科技纵横 / 2018年04月29日 20:20

互联网+

软件缺陷模式与测试

许禛

摘 要:随着我国信息技术的不断发展,使得应用软件的规模以及数量也都得到了一定程度的增加。软件安全问题也随着得到了一定程度的增加。通过基于缺陷模式的软件测试技术来对软件质量进行测试,其具备有使用简单以及效率高的应用特点,并能够对软件的应用质量起到良好的测试效果,从而保障相关软件的应用性能。本文主要就基于缺陷模式的软件测试技术进行了研究分析。

关键词:缺陷模式;软件测试技术;检测器

中图分类号:TP311.52 文献标识码:A 文章编号:1671-2064(2018)06-0025-02

在软件的应用过程中还容易出现各种软件安全问题,因此如何提升以及保障软件的应用质量也就成为了互联网行业中所需要重点关注的一个问题。相关研究表明,在进行软件开发的过程中,其测试成本需要占到总成本的30%~50%左右,而一些对运行稳定性要求很高的关键软件,其测试费用还要更高,这也就需要对现有的软件测试技术进行必要的改进。

1 软件检测技术简析

在对软件的应用质量进行检测时,还需要就动态分析以及静态分析两部分来进行,其中动态分析主要指的是根据该软件的实际应用情况,来进行多组极限测试数据的设计,并在测试软件的实际运行过程中来进行软件缺陷的寻找。静态分析主要是进行源程序的扫描,然后对一些可能存在的软件缺陷进行寻找。较之于动态分析而言,静态分析其具备有运行成本低、容易实现以及不需要依赖特定的运行环境等优势,因此说静态分析这一软件质量检测方式能够使得软件开发的成本得到大幅度的降低,并能够促进我国互联网行业的进一步发展。

此外怎样进一步加强软件产品的可靠性,也就需要相关的软件研发人员进行充分的重视。软件缺陷作为影响到软件应用可靠性的一项重要指标,相关的软件项目部门需要通过减少软件的模式俩使得该应用软件的可靠性得到提升。近年来我国的计算机信息处理技术得到了较大程度的提升,其所需的内存以及外库容量也得到了迅速的增加。在这一形式下,软件的互联网系统中的重要性也就得到了一定程度的提升,并需要通过进一步加强软件测试技术经济性以及有效性的模式,来使得我国的互联网行业得到更进一步的发展[1]。

2 常见软件安全质量问题

2.1 代码安全问题

(1)XSS攻击:XSS也就是跨站脚本攻击,多由攻击者们在Web页面中插入恶意脚本代码,导致了用户在进行该网页的浏览过程中,就会直接执行嵌入在Web之中的脚本代码,并对用户造成恶意攻击。(2)SQL注入:该代码安全问题主要是通恶意攻击者将一些特殊的输入参数传入到Web应用程序之中,并多是SQL语法中的组合,并能够对攻击者所想要的各项操作进行执行。导致SQL注入这一安全问题发生的主要原因在于应用程序未能够对用户们输入的数据进行严格细致的过滤,并导致整个软件系统都被非法数据所入侵[2]。

2.2 常见的代码质量问题

(1)空指针引用:这一常见动态内存错误经藏出现了组程序的设计语言之中,指针变量也多是代指地址、静态变量以及地址单元这三个要素。当出现空指针引用问题之后,也就会导致一些引用故障的发生,严重情况下甚至还会导致整个应用软件系统出现崩溃的问题,并使得该应用软件的使用可靠性得到一定程度的威胁。(2)未能够对系统资源进行及时有效的释放:通常在对软件进行开发的过程之中还需要进行调用系统以及处理器资源的调用,但是开发者如果在进行软件开发的过程中未充分重视这一问题,并未曾对资源进行释放,也就会导致该软件系统所需要承载的负载越来越重,甚至还会导致系统崩溃等问题的发生,并使得该软件的应用可靠性得打大幅度的降低,因此在进行软件开发的过程中,还需要相关的技术人员能够充分重视资源回收问题。

3 软件测试过程中的静态分析

3.1 静态分析技术

对代码进行静态分析时,其能够在不运行代码这一基础上来对程序代码进行一定的扫描分析处理,并能够对整个系统代码的可靠性、安全性以及维护性能等应用指标进行合理的分析。随着我国信息技术的不断发展,使得静态分析技术也开始朝着模拟执行的方向进行发展,对于一些原本需要动态测试才能够发现的软件缺陷也能够起到良好的分析效果,比如抽象解释以及符号执行等等,并能够应用数学约束求解工具来进行路径约减的模式,从而给后续的分析工作提供足够度的理论支撑[3]。

(1)词法分析生成token流:词法分析是软件编译工作之中的重要基础,该该过程中能够对所有的源程序以及字符进行读入,并能够完成构成源程序的所有字符流的扫描工作。在此基础上应用构词规则来进行单词的有效识别,可以说应用Lex等工具来实现语法分析程序的自动生成。此外借助于语法分析还能够完成各种单词的掃描以及识别处理,对于识别之后的单词还能够进行有效的定性处理。现阶段多是通过自动生成以及手工生成的模式来进行词法的有效分析。(2)语法分析生成抽象语法树:在完成语法分析工作之后,也就能够进行抽象语法树的构建,这样也就能够完成各项单词序列的合理组合,然后直接将单词序列组合成各项语法短句。因此说通过语法分析生成抽象语法树的模式来进行源程序正确性的合理描述。(3)语义分析:进行语义分析的目的在于对结构上各项的正确性进行必要的审查处理,并对审查源程序是否存在语义错误来进行有效的判断,此外语义分析阶段还需要就代码生成阶段来完成各类型信息的收集工作。比如在进行语义类型审查的过程之中,还需要就其各个算符是否具备有语言规范允许的运算对象进行有效的审查,并能够在语句不符合语言规范的情况下报告错误。一旦出现了编译程序需要应用数组下标模式来报告错误的情况时,因为其二目运算是实施在一个实型对象下面,也就能够直接进行编译程序的整形转换处理,并将其转换为实型来进行源程序错误的分析。

3.2 缺陷模式

软件缺陷主要指的是一种在软件中所存在的,并无法被接受或者不被期望的偏差。因此当软件在某些特定的条件下进行运行的过程中,也就容易出现一系列的软件故障,并导致该软件的应用可靠性难以得到有效的保障。可以说软件缺陷多是通过静态的形式存在于软件的内容中,也是在软件开发过程之中因为人为失误所造成的一些错误结果。现阶段软件缺陷的例子还有着数组下标不对、异常处理方法存在错误等等。

缺陷模式则主要指的是程序中经常性会发生的一些错误一缺陷所呈现出来的特定规律,并多是由具备有一定领域程序设计经验的人员或者由测试人员来进行总结的。本次研究主要就对下述缺陷代码的例子进行了分析研究[4]。

在该代码中存在有低效判断字符串为空这一缺陷行为,对该代码的缺陷可以描述为在判断字符为空的情况下,应用length方法跟属性来进行判断的过程中,观察其判断长度是否为0。

就该缺陷代码进行分析,发现导致缺陷出现的原因主要是较之于equals方法的字符串判断速度不足,借助于str.length()==0模式来对字符串进行判断的过程中,能够对其是否为空来进行有效的判断,这也就说明了匹配的静态分析方法主要是对代码缺陷的差异性进行分析,并在此基础上对特定的缺陷模式来进行总结。

4 实验方案

本次研究之中主要应用了Findbugs开源软件来作为实验工作,并应用这一静态分析工具来对JAR文件进行检查,并能够通过将字节码跟一组缺陷模式进行对比的模式来发现一些可能存在的问题。通过该静态分析工具的应用,还能够在不运行该软件程序的基础上来进行软件功能的有效分析,并能够通过Visitor模式来进行程序意图的合理确定。一般主要是通过以下三个步骤来进行软件的有效测试[5]。

(1)首先需要应用常见的软件缺陷进行分析,抽象出相应模式后来应用专门的检测器来进行检测处理。在该过程中多是通过Findbugs源码来实现的。(2)进行现有多个检测器的打包处理,并在完成检测器的处理工作之后直接生成Findbugs插件,通过将该插件集成在eclipes上面的模式來起到良好的检测效果。(3)应用生成之后的插件来对需要测试的软件进行有效的检测

5 实验结果简析

根据上述的实验步骤来得出相应的实验结果,在结果中表明该软件中存在有23个软件问题,其检测结果也具备有一定的可信度,通常将High confidence作为高可信度,并且通过Normal confidence来表示一般可信度。

对具体的实验结构进行分析,发现该项目之中存在有非常明显的缺陷问题,并存在有SQL注入以及资源无法有效释放等严重的问题。此外在该软件项目之中,其字符串判断过程中也有着一定的逻辑错误。可信度作为该软件测试过程中的重要指标,可以借助于人工检查的模式来使得高可信度的缺陷分析中有效避免误报的情况,但是对于一般可信度问题,还有可能存在有一定的误报情况,这也就要求对现有的软件测试技术进行不断的优化与完善,并借此来降低误报率比较大这一问题的发生。这样才能够使得软件检测的效果得到有效的提升,并能够对软件应用过程中存在的缺陷进行合理迅速的寻找以及纠正[6]。

6 结语

本文主要借助于基于缺陷模式的软件测试技术来进行了实例验证研究,并检测出了一些软件的常见质量问题,但是该软件测试技术中还存在有一定的不足之处,并需要将误报问题的解决作为一项重要工作。只有对现有的软件测试技术进行不断的优化与完善,才能够取得良好的软件性能检测效果,并有效降低我国的软件测试成本,促进互联网行业得到更进一步的发展。

参考文献

[1]陈睿,杨孟飞.基于编码规则的中断数据访问冲突检测方法[J].空间控制技术与应用,2017,(3):59-65.

[2]梁晓兵,崔宝江,赵兵等.基于统一缺陷模式集的源码缺陷与二进制代码缺陷协同分析技术研究[C].2013:458-472.

[3]孔军,吴伟明,谷勇浩,等.基于缺陷模式匹配的静态源码分析技术研究[J].软件,2016,(11):146-149.

[4]李北星,常鑫.基于电力软件缺陷模式的代码检测技术研究[J].山东工业技术,2017,(22):135.

[5]胡芸,胡国祥,胡世港,熊曾刚.嵌入式软件缺陷的自动定位技术实现[J].现代电子技术,2017,(18):79-82.

[6]宁华,陈永政,张正龙.软件测试技术及工具[J].现代企业教育,2014,(10):590.

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。