软件测试对于提高软件质量的作用

2017-03-06 20:16高欣
电子技术与软件工程 2016年23期
关键词:软件开发软件测试

高欣

摘 要

互联网信息高速发展的大背景下,无论硬件软件的复杂程度,还是技术含量都在日益提高,人们对软件的需求也越来越高。与此同时,软件中存在的漏洞和缺陷也迅速成为黑客攻击的对象,因此,建立一套高保障性的技术体系以保护软件的研制和可靠性成为当下社会研究的当务之急。

【关键词】软件应用 软件开发 软件测试

1 工程实例

1.1 测试过程

软件开发是一个常规的过程,在当今时代环境下,一般分为4个阶段,每个阶段中都需要对软件进行内部测试,一般分为:静态分析、代码审查、单元测试、部件测试、配置项测试。

1.1.1 静态分析

使用专业静态分析工具,对软件应用的程序,数据等参数进行剖析,并进行深入的数据分析,将软件应用内部的静态信息和代码信息提取出来,为未来的动态测试提供参考数据,并根据现在的软件模型,对软件的质量做出正确评价。

1.1.2 代码审查

主要是对代码进行一系列专业的检查过程,对代码的容错绿,代码运转结果的一致性,代码的可读性等进行检查分析。重点对代码的逻辑性,完整性进行检查,保证正确率。

1.1.3 单元测试

按照软件设计的说明图,模拟软件运行环境和运行部件,针对软件的环境进行接口模拟,并创造出软件的真实运行环境,进行测试,监测软件的运行结果。

1.1.4 部件测试

按照被测软件的说明图,在单元测试的基础上,将各个测试成功的单元模块按需求和设计组装成一个符合设计需求的整体功能模块,并进行测试,其目的是监测软件各个单元和接口之间的兼容性和容错率,保证软件的设计成功。

1.1.5 配置项测试

所谓配置项是软件中为满足不同用户的不通需求而设计的,能体现用户个性化功能的配置功能项,测试的目的是监测配置项在软件中的一致性。

1.2 问题现象

某产品软件到了后期阶段仍在进行频繁更改,通过对其分析,得出软件复杂度高是其存在的主要问题:

(1)模块在结构上应使用单出入口的结构,降低复杂性。

(2)在模块的逻辑设计上进行改进,采用分层次的结构,并在不同层次上设计不同的扇入扇出数,保证模块的扇出数较低,一般不超过7,并且尽可能的增加模块的扇入数,以保证代码的简洁性。另外,高层模块的设计应该采取不同策略,比如高层模块扇出较高,低层模块扇入较高等。

(3)软件单元的圈复杂度(即McCabe 指数)应小于10。

(4)简化软件单元的源代码数量,高级语言实现的单元,不应超过60行。

1.3 问题分析

测试的目的是为了更正软件的错误,降低风险率,一般来说经过几个阶段的测试后,软件中的缺陷基本都能被修复,但是没有重视静态分析中的软件圈复杂度,基本复杂度超标的现象,软件在后期的高复杂性往往会带来潜在的风险。

2 测试指导设计

2.1 软件质量的pareto原理

pareto原理[2] 指出,20%的软件模块包含了软件中80%的缺陷,20%的软件改进,需花费80%的适应性维护费用。从这里可以得出结论,高复杂的模块会导致软件中可能出现的绝大部分错误,而且不容易修复。因此,在软件设计早起杜绝复杂度过高的风险十分必要。

2.2 降低软件圈复杂度

2.2.1 圈复杂度定义

圈复杂度作为一个衡量软件结构复杂性的标准,数量上表现为独立线性路径条数,即合理的预防错误所需测试的最少路径条数。1976年ThomasMcCabe提出了圈复杂度(Cyclomatic Complexity)的概念,依据圈复杂度定义了软件的复杂性。1977年Halstead提出了软件科学复杂度度量。文献[3],在这个理念中重点分析了嵌入式软件的位置的重要性,并通过模型的方式展示了软件复杂度的度量对识别代码错位的重要性。可以看出,软件的错误和缺陷并非随机分布的,而是有迹可循,和软件的个性化,复杂度息息相关。

2.2.2 复杂度计算方法

C语言常用的软件模块逻辑结构(结构流图)有如下几种,如图3所示。

2.2.3 降低圈复杂度

如果圈复杂度高于标准值的时候,可以提前做出判断,降低代码的复杂度和重复性。在判断语句中采取单一的判断条件,或者将重复代码用一个函数来替代。都是降低代码复杂度和重复性的有力措施。

2.3 降低软件基本复杂度

运转正常的语句或代码应带保证单入口和单出口结构,保证程序的简洁性,不应过多使用异常跳转语句增加程序的运转复杂度,如果非结构化语句过多,出入口增大,只会导致结构的复杂度增高,增加软件后期运行的风险。

因此,只要控制程序语句的结构单一化,简单化,避免各种非正常跳转语句的使用,复杂度就会在可控制的范围内,有利于程序的运行稳定。

2.4 降低软件扇出数

扇出的意思是函数调用其他函数的个数,如果扇出过小,则会导致程序代码过长,如果扇出过大,则会增加程序内函数的调用次数,影响速度,一般来说扇出最好为3或4个,最高不超过7个。

扇入的意思是一个函数被其他程序调用的次数,扇入较多会增加模块的使用频率,但是过高的扇入会影响程序的聚合性,如果扇出扇入次数过高,可以考虑重新调整该函数或过程。

3 结语

本文通过以测试结果来倒向改进软件设计的思路,提高了软件的设计质量和可靠性,可以看出,在软件代码内部进行早期分析,在软件设计早期对软件代码,复杂度等指标进行优化限制,对软件后期的稳定运行,错误率降低有非常大的影响和帮助,成为软件改进的新思路。

參考文献

[1]尹平,许聚常,张慧颖.软件测试与软件质量评价[M].北京:国防工业出版社,2008.

[2]SCHULMEYER G G.软件质量保证[M].北京:机械工业出版社,2003.

[3]JOHN C,MUNSON.Software faults,software failures and software reliability modeling[J].Information and Software Technology,1996(02).

作者单位

天津滨海职业学院 天津市 300451

猜你喜欢
软件开发软件测试
基于OBE的软件测试课程教学改革探索
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
智能电能表软件测试技术概述
《软件测试》课程教学策略研究