软件测试分析方法研究

2024-10-17

软件测试分析方法研究(共12篇)

软件测试分析方法研究 篇1

0 引言

软件测试是软件开发过程中必不可少的过程,其目的在于找出软件中潜在的错误或缺陷。一般而言,软件测试根据软件开发过程中规格和结构设计的测试用例进行,输入数据并运行程序,测试输出结果与预期的区别,以发现软件的错漏之处。因此,软件测试贯穿着软件开发的全过程,对于规范化设计软件意义重大。为了能用更少的测试用例来达到最大覆盖、查缺的结果,软件测试需要选用科学合理的策略。

1 软件测试策略

在软件测试之前,首先需要确定的是测试策略,它是软件测试的模板。软件测试策略一般分为2种:传统测试策略、现代测试策略。

传统软件测试策略将软件测试置于软件开发的最后阶段,在软件设计完成后才开始进行测试,对软件测试的重视程度缺乏。这种传统策略的缺点在于可能会导致软件开发前期中产生的错误缺漏不能被及时发现,为软件测试增添压力,也不利于软件测试得出详细、全面的分析结果。传统软件测试策略遵循的瀑布模型如图1所示。

现代测试策略能更好地强调了软件测试的重要性和贯通性。它将软件测试贯穿于软件开发全过程中,根据每一阶段进行详细的分析记录,以实现软件测试功用的最大发挥。现代软件测试策略具体内容如下:第1步,确定测试目的。根据不同软件的特性和要求确定好测试目的,只有确定了目的,才能够更好地进行软件测试;第2步,确定测试对象及范围。对象包括整个系统、子系统、模块、某变量等,测试范围覆盖功能、性能、恢复性等方面,将软件测试集中于特定对象和范围,能够达到事半功倍的效果;第3步,选择、描述测试环境和方法。第4步,记录并跟踪测试过程,最后得出测试结果。现代软件测试策略遵循的是双V模型,如图2所示。

2 软件测试方法简述

软件测试的目的和对象众多,因此其方法和手段也具有多样性。本文将对其中较基本的几种软件测试方法进行简述。

2.1 静态测试与动态测试

软件测试按使用的测试技术不同可以分为静态测试和动态测试2个阶段。

其中,静态测试是以文档文件、源程序做结构分析、数据定义控制等为基础,对软件进行分析,在不实际运行被测试的软件的情况下,找寻软件的逻辑设计错误。静态测试可以分为静态分析和代码审查,代码审查是一种人工测试方法,包括代码评审和走查,它的运用是测试人员通过经验来阅读程序的代码,发现软件编码和运行上的缺陷、错误。它采用的具体方法主要有:检查分析文档资料、寻找逻辑错误、讨论分析决定、利用工具审查程序代码等。

动态测试则是基于测试用例,通过运行软件来检验被测系统的动态行为,以动态的运行进行测试分析。动态测试两要素分别是被测试程序和测试用例,它的适用范围主要在单元测试、集成测试、验收测试等阶段。

2.2 黑盒测试与白盒测试

黑盒测试更侧重用功能性,又称为功能测试,它是将被测对象视为封闭的黑盒,不考虑其内部程序和结构,基于规格说明书对程序接口运行动态测试的方法。它着眼于验证软件功能正确性,根据软件产品的功能设计规格求证是否符合软件预期功能性要求,主要试图发现几类错误:功能不正确或遗漏、界面错误、输入和输出错误等。白盒测试与黑盒测试相对,把测试对象看做一个打开的盒子,更侧重于软件结构性测试,又被称为结构性测试。在计算机上按照程序内部的逻辑结构及相关信息进行测试,求证内部操作的规范性,并扩大软件覆盖程度。白盒测试是对软件细致的检查,它在不同点检查程序状态,在细节上更为注意。白盒测试主要采用逻辑驱动、基路测试等方法,它是穷举路径测试,因此,这一方法需要一定的前提,即测试者需要了解检查程序内部结构和逻辑,以此为基础确定测试数据。

2.3 积极测试和消极测试

积极测试是以验证软件是否符合需求为目的,通过输入一个积极值(即有效值)的方法进行有效性设置,因为它是直接输入数值并期望得到有效测试的方法故又称为正向测试。消极测试与之相对,又称反向测试,其原理是输入消极值(即无效值),看是否能得出输入值无效的结果。积极测试在于检测软件系统是否能有效运行,消极测试则是要中断软件执行,测试软件是否限定在有效范围内运行。一般来说,消极测试的方法更为开放,因此其测试用例数量远超过积极测试,消极测试是一种非常开放的测试方法。一般来说,消极测试用例的数量要远远大于积极测试用例的数量。

3 测试方法的应用

3.1 单元测试

单元测试是针对模块进行检测,通过测试来求证模块功能性和正确性。模块是软件设计中最小的单位,由于它规模小,功能单一,逻辑简单,因此在测试中选用白盒法和黑盒法结合、一个为主、另一辅助的手段。测试者在了解模块说明和源程序的基础上,明确被测模块的I/O条件及其逻辑结构,然后通过白盒法,利用测试用例最大覆盖的进行检测,同时以黑盒法加以辅助,达到内外逻辑、结构都彻底检测的结果,使任何合理、不合理的输入都能得到正确响应。

3.2 集成测试

集成测试是针对组装起来的模块进行检测,以寻找接口的问题和缺漏。将模块按照设计要求进行组装然后检测能够发现跟接口相关的一些问题:如数据丢失、模块间有害影响、组合功能偏差等。集成检测在软件检测过程中介于单元测试和系统测试之间,它对软件结构性能的测试起着承上启下的重要作用,通常,集成检测阶段会采用黑盒法和白盒法结合的方法。

3.3 系统测试

系统测试阶段旨在检查系统是否符合软件需求,相较于前2个阶段更为复杂,这是因为软件开发过程中任何变动都会改变功能的增删,需要根据情况不断更改程序,而更改完的程序也可能因为一些问题会重新测试。系统测试需要检测软件功能、用户界面、安全性等方面,对全面性和客观性要求较高,因此,在系统测试阶段中采用的测试方法一般是黑盒方式。鉴于系统测试的特殊性,其测试应由独立测试小组来执行,针对系统测试中各单元模块,一般组合按照自下而上法、自上而下法、隔离测试法相结合的先后顺序进行检测。

3.4 验收测试

验收测试是由用户执行的体验测试,这一阶段和系统检测除了执行者外没有很大区别,验收测试的目的是向未来用户展示软件运行的能力和有效性,其主要任务是验证软件是否符合用户的要求和期待。

在这4个测试过程完成后,软件基本上能够满足开发要求,然后提交给开发部门进行调整补缺最后交给用户。

4 结语

软件测试密切关系到软件的质量和用户满意程度,对于软件开发具有至关重要的作用,其重要性在近些年越来越凸显,受到人们的重视。为了更好的适应软件开发的进步和发展,软件测试的策略和方法也应当向适应大规模、复杂软件的方向转变,通过不断在应用中总结经验进行完善,更好地在软件测试中选用科学、合理的策略方法。

摘要:软件测试是软件开发过程中十分重要的一环。文章基于软件测试的策略和方法,探讨其在软件开发过程中的应用,着重探讨如何使软件测试工作高效而可靠地运行。

关键词:软件测试,测试策略,应用

软件测试分析方法研究 篇2

方法名称:

验证单位:

通讯地址:报告编写人:

报告日期:原始测试数据

1.1实验室基本情况

表1-1参加验证的人员情况登记表

表1-2使用仪器情况登记表

表1-3使用试剂及溶剂登记表

1.2方法检出限、测定下限测试数据

表1-4 方法检出限、测定下限测试数据表

验证单位:测试日期:

1.3方法精密度测试数据

表1-5精密度测试数据

验证单位:测试日期:

1.4方法准确度测试数据

表1-6有证标准物质/标准样品测试数据

验证单位:测试日期:

表1-7实际样品加标测试数据

验证单位:测试日期:

1.5其他需要说明的问题

(1)测试中的异常或意外情况。

软件测试分析方法研究 篇3

【关键词】线路参数 干扰源 分析 测试

【中图分类号】TM223.28【文献标识码】A【文章编号】1672-5158(2013)02-0274-01

1、输电线路参数测试时的干扰源

输电线路参数测试中,干扰由静电感应分量,高频分量和工频分量组成[2]。

1.1 静电感应分量

静电感应分量是云中电荷、空间带电粒子等在输电线路上的感应电势,以电容耦合的方式为主,在测试接线完成后,测试电源内阻极低,静电感应分量可以直接对地泄放,对输电线路参数测量影响甚微。但是在雷雨天气,云中电荷累积,雷云电位升高,对线路放电的几率大增,如果发生雷击线路,将严重影响测试人员和设备的安全,此时应停止测试工作。

1.2 高频分量

在输电线路参数测试中,高频分量主要来自载波通讯,公网通讯,邻近线路或者变电站母线等高压设备电晕放电或者间隙放电。被测线路参数测试过程中,本线路载波通道停止工作,没有影响;其余各个高频分量通过屏蔽、接地处理以及信号去耦电容基本可以消除,而且采用47.5Hz和52. 5Hz信号进行测量,高频干扰信号极易分离,而且其幅值较小,对线路参数测量的影响可以完全消除。

1.3 工频分量

工频分量包括电容耦合感应电势和电磁耦合感应电势。

当被测线路两端都悬空不接地时,如图1所示,邻近带电线路或者母线电场通过电容耦合在试验线路将感应一个电势,可看作在线路导线对地电容支路(C10)中串接了一个等效的电感应电势EC,根据干扰线路电压等级和耦合紧密情况的不同,干扰电压值从几百伏到十几千伏不等(用静电电压表测量)。

2、倒相法测量零序阻抗测量误差分析

由于在正序阻抗、正序电容、零序电容测量中,感应的纵向电势主要为其正序和负序分量的影响,幅值较小,对测量结果造成的误差较小,在零序阻抗测量中,干扰电压较高,零序分量占主导,引起的误差较大,所以重点讨论零序阻抗测量误差。

2.1 干扰幅值变化的影响

假设测试中,干扰相位不变,试验电源电压U0足够高,远大于干扰电压UG,近似取10倍,在干扰电压U0大小变化时,测试过程中,保证UZ不变,最严重情况下,试验电压大小在不超过±10%的范围变化,且两次测量时,试验电压变化方向相反,根据式(3),考虑到UG相对极小,则引起的误差为:

δ=(1-(0.9×1.1)1/2)×100% = 0.5%

即是说,在倒相法测量中,只要试验电源电压足够高(信号与干扰电压比大于10),在干扰电压相位不变的情况下,干扰电压幅值的变化引起的阻抗值的测量误差很小,不超过0.5%。

2.2 干扰相位变化的影响

忽略干扰电压幅值变化的影响,假设干扰电压大小不变,则在UG与U0 相位为90°时,移相角θ最大, θ=arctg(1/10)=5.71°, 最严重的情况发生在试验电源倒相的同时,干扰电压也倒相,则在干扰引起的相位误差不仅不能抵消,反而叠加在测试结果中,根据式(4),此时φ0=[(φ01+φ02)/2]+θ,或者φ0=[(φ01+φ02)/2]-θ,阻抗角误差为±θ(±5.71°)。

在实际测量中,最严重的干扰变化发生概率较小,但是由于潮流变化引起干扰源相位变化和导线舞动引起互阻抗相角变化是经常发生的,所以测量过程中虽然采用了倒相法,但是由于感应的干扰电压信号相位角发生变化,对测试电源电压移相角变化,在测试电源电压足够高时,总阻抗误差不大,而电阻分量却波动很大,电抗分量也有不小的波动,这也是在一次测量过程中瓦特表读数不稳的主要原因。所以在传统的采用隔离变压器测量零序阻抗的过程中,要求测试过程尽快完成,而且测试电源输出电压要足够高。

2.3 变压器容量选择

变压器容量选择依赖于采用的测试信号与干扰信号的比值。设纵向感应干扰电压在200V,考虑线路零序阻抗60Ω的情况,如果信号与干扰比为1:10,则变压器容量:(200×10)2/1000×(60/3)=200kVA,可以选择容量为200kVA,输出电压可以达到2000V的隔离变压器。

3、异频法测量输电线路工频参数

采用工频的测试电源进行输电线路各序参数测试,工频感应干扰电压对信号电压移相的影响难以完全消除,采用异频电源进行测量,理论上可以完全消除分离工频干扰,得到稳定的各序参数实测结果。

3.1 异频法基本原理

异频法测量的基本原理是:在线路测量端输入异于工频f0(50Hz)的测试电源,在频域直接分离工频干扰信号和有用的异频测试信号,达到消除工频干扰影响的目的。一般地,取两个测试频点为(f0-Δf)和(f0+Δf)进行测量,结果折算到f0以后,加权平均两次测量结果,具有很好的频率等效性。

采用异频测量方式,集合测试电源和数据采集通道,运算单元以及人机交互设备(单片计算机内核或者工业计算机内核)为一体,采用交流采样方式采集电压和电流向量,阻抗角直接计算,无需接入功率表测量有功功耗,以计算阻抗角。

3.2 异频测量的信噪比要求

在工频下测量中,如果测试电源输出信号远大于干扰信号,采用快速的抗干扰测试方法,可以得到稳定正确的各序参数,但是需要大容量的变压器作为电源,搬运与接线工作将占据大部分时间,试验工作劳动效率会相当低。

快速完成测量,在低信噪比下消除工频干扰影响,设备体积小、重量轻,是异频法的主要优势。异频法抗干扰的核心是在频域将工频干扰信号和异频测试信号分离,在时域还原测试信号,理论上是可以完全消除干扰信号引起的测量误差,但是由于传感器误差,量化误差,模型误差等因素的影响,造成频谱泄漏,信噪比不可以无限降低。

设定较为苛刻的干扰水平,干扰电压200V,干扰电流20A,如果仪器能在测试信号与干扰信号之比为1的条件下消除干扰影响,则异频测试电源需要单相输出4kVA,保证一定冗余度,应该选择单相容量5-10kVA,输出电压200V-500V的变频电源和相同容量的隔离变压器,仪器的重量和体积虽然相对于工频测试电源大大减小,仍然不易搬运和携带。而且考虑到短线路(长度小于10km)序电容的容抗(电容在0.1uF左右)很大,200V电压下电容电流不超过10mA,而工频干扰电流信号可以达到几十至几百毫安,那么此时干扰电流信号依然会引起很大测量误差,所以仪器应能在测试信号与干扰信号之比为1:10的条件下消除干扰电流对测试结果的影响。

4、结论

4.1 在输电线路工频参数测量中,通过电容和互感耦合的工频感应电压对测试结果的影响最严重,主要应该考虑消除纵向感应干扰电压的影响;

4.2 采用工频电源进行试验时,倒相法和移相法能很好的消除工频干扰的影响,但是干扰信号相角的变化会引起较大的误差,所以测试过程应在尽量短的时间内完成,而且试验电压应尽量高,最好能取值到干扰电压信号的10倍以上;

4.3 异频法从理论上能完全分离工频干扰信号,消除其影响,但由于传感器误差和AD量化误差,模型误差等影响,存在频谱泄漏,应保证能在信号与干扰比值为1:10的条件下分离工频分量,消除干扰的影响;

参考文献

[1] 陈颜,浅析宁夏电网输电线路参数计算,宁夏电力,2007.1

软件测试分析方法研究 篇4

0前言

计算机软件在运行过程中难免会出现一些故障, 有一些软件故障是由于软件本身质量问题而导致的, 提高软件开发质量也是减少软件故障的一个较为有效的方法。对于软件系统建立一个比较通用的质量评价模型已成为一个研究热点, 基于此提出面向领域的一种软件质量评价模型构建方法, 对于提高软件质量, 评价软件系统具有积极的作用。

1 软件故障分析

1.1 产生软件故障的原因

计算机软件系统运行所需环境各不相同, 如果用户的计算机设备及软件配置不能达到软件需要, 就容易发生功能性故障。结合软件维护实际情况分析, 软件故障产生原因主要有下列几个:一是内核文件丢失或系统配置出现错误;二是程序受计算机病毒破坏而不能正常运行;三是设置CMOS参数不正确;四是内存管理中存在一些冲突;五是计算机软硬件不兼容;六是由用户操作不当造成的。

1.2 软件故障分析方法

综合分析产生上述软件故障的原因, 可将软件运行环境分为三个层次接口, 与此相对应也可将故障分为用户接口、硬件接口、软件接口三类接口故障。当计算机发生故障时可采取观察法、对比法、更换法等判断故障是由于硬件还是软件引起的, 并确定故障源。排除软件故障过程中也要考虑软件运行环境是否满足要求, 依次分析用户接口、硬件接口、软件接口大都可确定故障原因并进行解决。对软件故障重复性进行验证, 注意软件故障发生的操作顺序及状态。软件使用过程中要定期进行备份, 避免软件发生故障时损失重要数据。

2 软件质量评价模型

2.1 领域质量评价模型

领域软件质量评价模型是由抽取标准模型中符合目标领域的特性项与抽象目标领域系统的领域特征项相结合而形成的。该模型基于标准模型进行剪裁与扩展, 仍具有属性、特性、子特性三层结构。在对目标领域系统进行评价过程中, 要将领域通用模型实例化才能转化为目标领域质量评价模型。

由于领域软件需求一般分为可选和必备两种, 因此在该模型中待评价的每层元素也同样分为可选和必备。领域质量评价通用模型的所有项都是可选, 对于目标领域质量评价模型具体到实例化时, 要对各项关系性质进行确定。该模型建模步骤如下:一是将标准模型中的特性项抽取出来, 结合目标领域特点, 对标准模型中符合目标领域软件的度量、特性及子特性项抽取出来;二是根据目标领域需求构建框架, 输入软件及领域知识, 软件目标领域实例及有关文档由领域专家进行分析, 以确定必备与可选需求, 可与上步骤同时进行将领域需求框架进行输出;三是特征抽象, 基于领域专家分析领域需求框架, 辅助评测专家对领域特征进行抽象;四是特征映射, 抽取特性、子特性、属性项及领域特征要向通用模型进行映射, 至此具有领域功能性、可靠性、易用性、领域效率、领域维护性、领域可移植性的目标领域软件质量评价模型构建完成。

2.2 质量评价

领域质量评价模型要进行有效性验证, 结合软件根据评价需求、规定评价、设计评价、执行评价等步骤对待评软件系统实施评价。评价需求确立时, 要结合评价参照的质量评价模型进行确定。采用专家评定与三角模糊数层次分析法对各特征值进行赋权, 对同层次对象要由多个领域专家进行两两之间的比较, 采用三角模糊数形式对相对重要程度进行表示, 多个比较矩阵可取其平均值作为被比较对象建立模糊比较矩阵。模糊数对应的截集矩阵要通过隶属函数进行求解, 其中各元素可作为模糊数的置信水平确定的一个置信区间, 并对乐观水平进行设定后转化为判断矩阵。然后对判断矩阵最大特征值及对应特征向量进行求解, 以判断验证矩阵是否一致。如果存在不一致情况, 要对判断矩阵进行调整, 否则可将特性向量向权重向量进行归一。

3 结语

综上, 本文提出的面向领域质量评价的一个通用模型, 提出的评价方法需要在实际应用中不断进行完善。该模型可用于对软件质量评价的一个有效手段, 基于该模型对常用软件系统进行客观评价, 评价结果符合应用实际, 说明此模型可作为软件系统的评价基准, 使用面向领域的质量模型对目标领域软件质量进行评价具有可行性, 可以使评价公正客观且准确, 对于提高软件开发质量, 促进信息产业发展都具有十分重要的意义。

参考文献

[1]雷祥, 张少华, 任凌云, 王彦理.D-P算法的改进及其在飞行轨迹回放中的应用[J].软件, 2012, 33 (9) :149-150

[2]吴小帆.CIN-SCF系统可视化信令跟踪工具的设计与实现[J].软件, 2013, 34 (8) :78-81

[3]Kwong C K, Bai H.A Fuzzy AHP approach to the determination of importance weights of customer requirements in quality function deployment[J], Journal of intelligent manufacturing, 2010.5

近代材料分析测试方法复习资料 篇5

1.电子显微分析中,有哪几种电子衍射,说明各自的操作特点和基本应用

答:1)电子显微镜中主要有SAED选区电子衍射、μ-衍射、纳米衍射、CBED会聚束衍射、EBSD背散射电子衍射五种电子衍射。

2)操作特点:

①SAED选区电子衍射采用TEM模式,利用μ级平行入射电子束照射试样,通过物镜像平面处的选区光阑选取特定区域做电子衍射,得到与选择区域对应的电子衍射花样。②μ-衍射采用STEM模式,利用μ级针状入射电子束照射试样的固定区域,无需光阑选择成像区域,因此不存在选区衍射误差。③纳米衍射与μ-衍射类似,主要差别在于纳米衍射的入射电子束为纳米级,体积更细小,因此能够对试样的更微小区域进行分析。④CBED会聚束衍射采用STEM模式,入射束由平行束变为锥状会聚束,并且后焦面处得到扩展的衍射斑点(圆盘状),盘的大小与入射束的会聚角有关。因此伴随着会聚角的变化,能够获得散射电子的信息,实验过程中要避免透射盘与衍射盘相交。⑤EBSD背散射电子衍射是入射束打到试样上形成的背散射电子发生衍射,形成衍射锥,最终获得EBSD衍射花样。

3)基本应用

①SAED选区电子衍射所选区域很小,因此能在晶粒十分细小的多晶体样品内选取单个晶粒进行分析,从而研究为研究细小单晶体结构提供了有利条件。②μ-衍射和纳米衍射对试样微小区域进行分析,并且可以通过衍射斑点强度变化分析孪晶及变形。③CBED会聚束衍射可用于确定晶体的对称性,试样厚度和晶格畸变等。(会聚角、点阵常数、消光距离、晶体点群、柏氏矢量、偏离矢量)④EBSD背散射电子衍射可进行位相测定;晶界分析(特殊晶界、孪晶界、小角晶界、难腐蚀晶界等);变形分析(晶粒尺寸重构);物相鉴定;织构分析(定向生长机制)等。

2.在典型像分析中存在哪两种过滤像,分别说明它们产生的基本原理及其应用。

答:1)成分过滤像和结构过滤像

2)基本原理

①成分过滤像是在EELS分析中,在成像模式下,选择零损失范围内的电子束进行电子衍射得到的。衍射过程中,采用不同频率的波进行的衍射,即Δλ=0。

②结构过滤像是在高分辨分析中,靠F氏变换得到。高分辨的CCD像经过F氏变换在物镜后焦面得到衍射花样,选择多束衍射束进行F氏变换从而得到结构过滤像。衍射波为同频率波,即Δλ≠0。高分辨分析中,为了确定结构像,还需进行模拟计算。

3)基本应用

①成分过滤像能够定性地分析材料内某一元素的分布情况。

②结构过滤像能够分析高分辨像中原子或原子团的排列信息。

3.AES、XPS在进行元素分析时各有什么特点?

答:1)AES分析是原子在X-ray、载能电子、离子或中性粒子作用下,内层电子可能获得足够能量而电离,并留下空穴。此时原子处于不稳定的激发态,当较外层的电子跃入内层空位时,原子多余能量可通过两种方式释放:一种是以X光子形式释放出来;另一种引起另一外层电子电离,从而发射一个具有一定能量的电子,即俄歇电子。通过分析俄歇电子的动能及俄歇峰强来分析材料表面信息。

AES分析时在离子枪作用下,试样表面被溅射剥离掉一层,并且试样内部俄歇电子不能逃离出来,因此可分析试样近表层信息;能够分析试样表面和界面上的少量轻元素。

2)XPS用单色X射线照射样品,具有一定能量的入射光同样品原子相互作用,光致电离产生光电子,这些光电子从产生之处输运到表面,然后克服逸出功而发射出来。根据光电子动能可以确定试样表面存在什么元素以及该元素所处的化学状态,从而进行定性分析;根据具有某种能量的光电子数量,便可知道某种元素在试样表面的含量,从而进行定量分析。

XPS分析过程中对试样不进行破坏,具有无损性特点。

4.直径为0.5mm的金属丝表层镀附有异种金属,镀层厚度约200nm。研究镀层的组织、结构、亚结构、同基体的结合界面的高分辨像,用什么方法制备试样?写出制备试样的基本步骤。(试样制备一节的思考题)

答:采用树脂包埋制备法,主要步骤如下:

①将金属丝均匀分散装入φ3mm的铜管中,然后向铜管内灌入环氧树脂;

②树脂凝固后(一般经100-200℃烘干),用线锯或慢速锯切下0.5mm厚的圆片;

③用中、细砂纸把圆片减薄至50μm左右,再用刨坑机在圆片中心减薄至20μm以下;

基于回归分析的软件成本估算研究 篇6

【摘 要】随着软件行业的不断进步,软件成本估算在软件工程领域扮演着重要的角色。本文主要对统计学中的回归分析方法进行研究,阐述了利用回归分析方法进行软件估算的具体流程,建立回归估算模型并对其进行检验,最后通过对历史数据集的仿真验证该回归模型预测能力的提高。【关键词】回归分析,软件成本估算,估算模型,检验,预测

【中图分类号】TP311.5 【文献标识码】A 【文章编号】1672-5158(2013)03-0448-02

引言

随着软件行业的发展及软件规模的扩大和复杂度的不断增加,软件在整个计算机系统中已经变成了开销最大的部分。然而,自上个世纪历史年代开始,以预算超支、质量缺陷及项目延期等为典型特征的软件危机不断出现。其中,对软件成本的估算不足和需求不稳定是造成软件项目失控的最普遍的原因,因此,为了能够保证软件项目能够在预定的时间内顺利完成且不超出预算,软件成本估算变得尤为重要。

一、软件成本估算方法

软件成本估算方法多种多样,包括以线性模型、分析模型及复合模型为典型的数学算法模型,也包括类比法、专家判断法、功能点分析法及COCOMO模型法等。但是由于软件成本受到许多不确定因素的影响使得我们很难构建一个明确的估算模型。本文旨在通过数学的方法,基于线性回归分析方法建立软件成本与其各影响因子间的多变量估算模型,进而对此模型进行检验,论证该模型的实用性。

(一)回归分析方法

回归分析方法主要是通过建立各个变量之间的统计模型来研究它们之间的关系[7]。

回归分析的算法原理:

最小二乘法是回归分析中最常用的算法原理,通过最小化误差的平方和试图找到数据的最佳函数匹配,在回归分析中最小二乘法通常被用来估计回归系数[2]。就软件成本估算这一问题而言,其影响因子有很多,例如包括软件代码行、人员基本工资等等。假设定义变量软件成本和软件代码行分别为Y和X,在平面坐标系上做出关于它们的观测值的散点图,当所有观测值大致落在一条直线上时,说明二者之间有较强的线性关系。对于每一个软件代码行的观测值X,构造一条直线,使得观测值X在此直线上所对应的y值尽可能接近观测值Y,从而可以利用此直线预测与软件代码行所对应的软件成本。对于每一个观测值(xi,yi),观测值yi与其回归值E(yi)=β0+β1xi的离差值越小越好,定义离差平方和为最小二乘法原理就是找到和的估计值,记为,使得上述公式中的离差平方和的值达到最小,利用求极值的算法可求得估计值如下:

以上就是一元线性回归中利用最小二乘法求回归系数估计值的原理,同样的,多元线性回归中算法原理与此相同,即求出多元线性函数y=+中的估计值。

二、软件成本估算建模

利用回归分析进行软件成本估算的具体流程主要包括数据集的选取与预处理、回归模型的建立、回归模型的校准、回归模型的检验、回归模型的性能分析及回归模型的预测六个步骤。下面将通过具体的数据进行仿真及分析。

三、软件成本估算的仿真

(一)数据集的选取及预处理

本文主要选取公开数据集ISBSGv9中的一个子集进行研究。该数据集中包括12个因子,在研究过程中,定工作量作为因变量,其他为自变量。

通常,数据的预处理包括数据集的选取、验证及对缺失值和异常数据的处理等几个方面。利用Spearman相关系数对所有变量在SPSS中进行分析,得知各自变量之间存在较强的相关,如Afp与Input,说明各因子之间可能存在多重共线性,需要对其进行处理。

(二)回归模型的建立

将数据集导入到SPSS中,对其进行回归分析,为了进行比较,分别对其利用前进法、后退法及逐步回归法三种不同的回归方法进行分析,得出前进法与逐步回归法的拟合结果完全相同,而后退法中增加了两个因子,对三种回归结果的因子系数进行观察,可知Input与File两因子的系数全为负值,因此,需要对因子间的多重共线性进行分析。为了全面分析,将目前两个模型都保留,分别对其进行校准。

(三)回归模型的校准

因子间存在多重共线性使得因子系数变为负值,本文采用回归分析中的岭回归对模型进行校准。对保留下来的模型中七个因子进行岭回归,得到其系数表与岭迹图,由岭迹图可清楚的观察到Input和File两个因子系数由负转正,且当K=0.2以后,各因子系数趋于稳定。因此,为消除多重共线性,删除上述两个因子,采用逐步回归模型,取岭参数K=0.2 。此时各因子系数如下表所示:

表1 K=0.2时回归模型系数表

Afp Enquiry Duration Added File Input 常数项

(四)回归模型的检验

对回归模型的检验主要包括对模型的显著性检验及对模型系数的显著性检验,其中,前者主要采用F检验法,后者采用t检验法[4],在SPSS中的检验结果显示模型及模型中的因子回归效果都是显著的。

接下来还要对残差值进行检验,主要采用残差分布图进行检验, 由图可知,残差值集中分布在工作量1000以下的区间,总体成正态分布,分布情况良好。

(五)回归模型的预测

对回归模型进行预测主要通过衡量去平均误差率和预测范围概率来判断其预测能力[2]。整理回归分析各流程中的模型信息如下表所示:

由上表可知,在对数据进行预处理后,拟合度和平均误差率都有了明显的提升;校准后平均误差率由1.39降至1.28,预测范围概率上涨2%。

四、结论

本文分析了回归分析的算法原理,并按照回归分析的基本流程对现有数据集进行仿真分析,利用不同的回归方法从不同角度对数据集进行研究,并对因子间存在的多重共线性问题进行了有效的处理,通过对模型的检验及预测性能分析验证了回归分析在软件成本估算中的可行性,并取得了良好的效果。

参考文献:

[1]J rgensen M. A review of studies on expert estimation of software development effort. Journal of Systems & Software,2004(1-2):37 60

[2] 王松桂,陈敏,陈立萍. 线性统计模型: 线性回归与方差分析.北京: 高等教育出版社, 1999

嵌入式软件测试工具静态分析研究 篇7

1.1 常规信息

由代码分析可以得到以下信息:

(1)静态分析符号表格:这里包括的项目有文件信息、类Class的信息、函数的信息、变量的信息与标签的信息。

(2)类/模板结构图:类似于VC++中ClassView标签页,左边显示工程中的类以及类中所有元素的列表,右边则显示相应激活类的源代码。

(3)类/函数关系图:包括显示类的继承图、函数的调用图与类-函数耦合图。

(4)层次流程图:当选中某一个类中的一个函数时,会显示这个函数内部的控制流程图 (CFG) 。

1.2 CFG图

CFG图是代码分析中很重要的概念,有助于帮助我们理解代码分析的任务,也是最常用的代码静态分析的手段。

入口语句:程序的第一个语句;条件转移语句或者无条件转移语句的转移目标语句;紧跟在条件转移语句后面的语句。

基本块(Basic Block,简称BB):是指程序中一顺序执行的语句序列,其中它只有一个入口语句或者一个出口语句。在执行时只能由入口语句进入,从出口语句退出。

连接操作:F (A) 代表程序A的控制流图模型,有两个控制流图F1与F2, Seq (F1, F2) 表示顺序连接操作,表示将F1的终点结点和F2的开始结点进行合并所形成的流图。设有另外的A’是另外的一个代码块,于是有F (A;A’) =F (A) ;F (A’) 。所以程序顺序连接操作后的流图等价于流图的顺序连接操作。

可以通过不断的顺序连接和嵌套构造新的流图。通常可以利用顺序、选择、迭代结构组成程序的结构化特性。可以利用一个机制确定流图的结构化。

2 代码审查

2.1 内存泄漏

计算机内的存储区域可以分为静态存储区域、栈与堆。这三块区域通常被放在一块连续的物理存储区域中。静态存储区域是指存储空间在程序开始前就可以分配,并且在程序运行过程期间都存在;当程序运行到一个特殊的执行点(左括号)时,存储单元可以在栈上进行创建。出了这个执行点(右括号),这个存储单元会被自动释放。这些栈分配运算内置在处理器的指令中;存储单元也可以在堆(也可以称为自由存储区)上创建,在运行时调用程序分配这块内存。可以在任何时刻任何地方决定需要多少内存,并且必须手工把这块内存释放掉,内存的生命周期由程序员决定而不受范围作用域的限制[29]。

根据遍历程序中语句Si的类型,不断的对指针映射集M进行添加、删除与修改操作。如果存在对于某个语句Si, M中存在<Ф,h (i) >这个映射,则在Si处发生内存泄漏问题。遍历程序中的语句时,可通过CFG图进行路径的遍历。这个算法只能处理发生内存泄漏的所有情况的一个子集,并不能包括实际代码中的所有情况。

2.2 空指针引用

存在属于集合S的集合X,如果对于在集合X中任意一个x,存在x∆y,那么y∆S是X的上界,记为X∆y;同理,如果对于在集合X中任意一个x,存在y∆x,那么y∆S是X的下界。

构造一个格的变换形式型如:Vars NULL, Vars表示程序中一系列声明的变量。在CFG图上的结点v给出一个约束变量〖v〗,用它来表示在程序的一个点上符号表中所有变量的状态。对于变量的声明的约束表示为:

对于所有的结点〖v〗=JOIN (v) 。指向分析发生在分析树基础上,分析结果返回可用pt函数表示。对于任意一个指针变量p,返回pt (p) 集表示p指向的目的。这个指向函数可以表示为pt (p) =〖p〗。通过分析,如果在程序的某个点上〖v〗 (p) =NN,那么*p是安全的[32]。

3 软件度量

3.1 质量模型

软件度量会程度不等的涉及到软件测量问题,包括成本和工作量估计、生成率度量和模型、数据收集、质量模型和度量、可靠性模型、性能评估和模型、结构和复杂性度量与能力成熟度评估等。软件度量能够定量化项目进度、项目状况、工作成效、产品规模以及产品质量的性能。现有一些成熟的软件度量工具,比如OOMetrics/Developer, Hindsight/SQA等。应用Logiscope也可以进行软件的度量,采用Boehm开发的模型结合McCall质量模型定义的方法设计质量模型。Logiscope的质量模型通常称为FCM (Factor Criteria Metric,因素准则度量) 。

3.2 度量元

度量元是静态测量结果,提供和被分析程序的复杂性相关的指示,理解程序的容易程度可读性、可维护性和可靠性等。度量元可应用到不同的领域,适用范围是可变的。

在Logiscope工具有一些已定义好的度量元用来衡量C++各种元素的复杂度,并且可以把这些度量元进行组合成为一个新的度量元以适应不同的需求。

cl_func_calle是个类范围的度量元,属于数据流领域,用来定义在类中的方法调用定义在类外的函数的个数。dc_callpe度量元表示对于一个分析的函数,调用了定义在这个函数所属类外的函数的个数。cl_data_class度量元用来表示类类型的属性个数。

参考文献

[1]王乾宇, 朱小冬, 王毅刚, 李想.基于TestQuest的嵌入式软件可靠性测试环境框架研究[J].中国测试, 2012, (01) :106-109.

[2]程晓菊, 李仁发.基于函数切片的嵌入式软件回归测试研究[J].计算机工程, 2012, (02) :54-56.

软件测试分析方法研究 篇8

随着计算机和互联网的普及应用,在实际的日常生活中,人们已经很难离开计算机和互联网,在使用的过程中,每台计算机都会安装大量的应用软件,因此软件的编写、测试、维护等已经成为了目前热门的行业。

软件公司为了提高编写软件的质量,在软件编写完成之后,都会对设计的软件进行测试,最大程度上减少软件中存在的漏洞和错误,但是考虑到软件的特殊性,真正意义上完美的软件是不存在的,越复杂的软件存在的漏洞和错误越多,软件测试的目的不是为了完全消除漏洞和错误,只是为了修复发现的漏洞。

在这种背景下,为了发现软件中更多的漏洞和错误,通常都会选择多个平台对软件进行测试,但是考虑到目前软件的测试平台有很多,在实际的选择过程中,应该根据软件的特点,针对性的选择几个测试平台,只有这样才能够发现软件中存在的更多漏洞和错误,从而保证软件的质量最大化。

1 软件测试简述

1.1 软件测试的概念

软件测试的概念是随着计算机软件的发展,而逐渐形成的一门学科,在最初的软件编写中,受到计算机性能和实际使用需要的影响,软件自身所占的空间比较小,结构也比较简单,因此并没有软件测试的理念,而且当时软件的编写语言也比较低级,通常都是采用汇编语言等,对这样语言编写的软件进行测试,也没有比较好的测试平台,随着计算机的发展,能够存储的数据越来越多,执行的任务也越来越复杂。

在这种背景下,实际的生产过程中,对软件的要求也越来越高,软件自身变得越来越复杂,现在有很多软件占用的空间已经达到了几个GB,这样复杂的软件自身会存在很多的问题。

如使用最多的windows操作系统来说,微软公司无疑拥有世界上最优秀的软件编写人才,但是这些世界顶尖人才编写出来的软件,自身还是会存在很多漏洞,因此微软每个星期都会发布一些补丁,修补系统中存在的漏洞,其他应用软件也一样,在应用软件的更新公告中,都会说明加入了一些新的功能,修补了软件上个版本中存在的漏洞。

1.2 软件测试的特点

计算机经过了几十年的发展,相关的技术已经非常完善,软件作为计算机使用过程中的重要部分,现在的计算机使用已经无法离开应用软件,尤其是随着互联网的发展,大量网络应用软件丰富了人们的日常生活,但是在实际的使用过程中,如果软件中存在一些漏洞和错误,就会严重的影响用户的使用,为了最大程度上避免这种现象,在软件编写工作完成之后,都会选择一些测试平台,对软件进行个方面功能的测试,通过深入的研究发现,为了保证软件测试的效果最大化,会根据软件自身的功能等特点,针对性的进行实际的测试,要想达到这个目的,在软件测试时,应该采用多个平台进行测试,同时还要采用多种测试方法。

因此软件测试的第一个特点就是多样化测试,然后还要进行实例测试,通过分析软件的使用环境,根据软件实际使用的特点,选择一些软件实际工作中的参数,对软件的功能进行测试。

由此可见软件测试的第二个特点,就是营造一个真实的软件工作环境,只有在这样的环境中进行测试,才能够最大程度上保证测试的准确性。

1.3 软件测试的意义

软件测试的主要目的,就是为了减少软件中存在的漏洞和错误,对于实际使用软件的用户来说,软件中漏洞和错误的减少,会在很大程度上提高用户的使用体验。

如日常使用的应用软件中,由于存在一些错误,用户在使用的过程中,经常会出现未响应或者关闭等问题,那么用户在忍受了几次之后,必然会选择相同类型的其他软件,如果是软件公司根据用户的需求分析,针对性的编写了一个软件,但是软件中存在一些漏洞和错误,那么用户在使用的过程中,会受到这些漏洞的影响,严重时甚至会影响企业的日常运行,这样会影响软件公司的印象,从而影响公司的经济效益。

由此可见软件测试工作,对于用户和软件公司来说,都有非常重要的意义,因此在目前的软件编写工作中,软件的测试是重要的一个环节,通常也是整个软件工程的最后一个环节,实际的效果表明,软件测试虽然不能完全的消除漏洞和错误,但是能够最大程度上检测出软件中存在的问题,从而提高用户的使用体验。

2 软件测试平台简述

2.1 软件测试平台的概念

软件测试平台的出现,主要是为了提高软件测试的效率,在最初的软件测试中,软件编写工作完成之后,会选择几组参数,输入到应用软件中,观察软件的运行结果,从而发现软件中存在的问题,这样的软件测试效率非常低,而且只能发现一些功能上的问题,对于软件编写中存在的逻辑漏洞和错误,只能选择其他一些针对性的方法,因此软件的测试比较复杂。

通常会分成几个步骤,对软件中的不同内容进行测试,在这种背景下,为了提高软件测试的效率,缩短软件编写的周期,人们将软件测试的所有工作,集成到一个平台下,逐渐的就形成了软件测试平台的概念,一个软件测试平台,通常会包括架构、流程、标准、机制、工具等内容,架构就是指软件中的各种语法规则和模块功能等,而流程就是对软件执行任务的流程进行测试。

在实际的测试时,通常会选择进行分步测试的方法,而机制就是指软件内部不同模块之间的联系机制,在不同机制的联系下,软件内部的模块可以实现相互调用等功能,工具就是指在软件测试的过程中,用到的各种测试工具,包括测试功能的软件等。

2.2 软件测试平台的特点

为了提高软件测试的效率,软件测试平台应该能够提供一个良好的运行环境,软件的使用与环境有很大的关系,在不同的操作系统等环境下,软件的功能会有一定的差异,如现在的很多应用软件,一些功能需要网络的支持,如果离开的互联网的支持,很多功能都无法实现,要想对这些功能进行测试,软件应该在网络的环境下运行,因此软件的运行环境对于测试工作非常重要。

其次软件测试平台还应该具有一定的隔离能力,由于现在的软件都比较复杂,而且软件功能向着集成化发展,每个软件都拥有多功能,在实际的测试过程中,需要对软件的每个功能进行测试,在对其中的一个功能进行测试时,应该将其他的功能隔离开来,防止其他模块对测试这个功能的干扰,这样才能提高测试结果的准确性,将软件的测试工作集成到一个平台之后,对软件的所有功能进行全面的测试。

在以往的软件测试中,对功能和逻辑的测试,都是分开进行,无法进行联合的测试,在软件测试平台中,就能够对软件的所有内容进行全面的测试,测试的结果更加全面,而且方便对测试出漏洞和错误进行记录和修复,能够极大的提高软件测试的效率。

2.3 常用的软件测试平台

目前市面上的软件测试平台有很多,根据实际测试需要的不同,针对性的开发了很多测试平台,如常使用的Test Center软件测试平台和PARASOFT ALM软件测试平台,Test Center是一个通用的软件测试平台,可以对不同类型的软件进行测试,该平台是针对软件测试而开发的一个平台,具有随时运行的特点。

通过这个平台的使用,可以极大的缩短软件开发的周期,提高软件开发的效率,由于面对的是所有类型的软件,因此并没有鲜明的特点,但是具有很多模块,每个模块都可以对软件的功能进行一定的测试。

相比之下,PARASOFT ALM也是一个集成化的测试平台,在软件测试的最初阶段中,PARASOFT公司就已经从事软件测试工作,并且根据软件编写语言和功能的不同,针对性的开发了很多测试工具,由于这些测试工具的效果非常好,因此被英特尔和IBM等公司广泛的采用。

在这种背景下,PARASOFT公司的测试工具,也有了非常快速的发展,今年来随着软件测试工作的需要,该公司将所有的测试工具集成到了一个平台中,这就是现在的PARASOFT ALM测试平台,这个平台从一出现,就受到了各大软件公司的重视。

3 基于多平台的计算机软件测试方法

3.1 多平台计算机软件测试的作用

虽然目前市面上额软件测试平台,很多都是一些通用的平台,但是与针对性的测试平台相比,对于具体的功能测试效果较差,通用平台虽然可以对软件的各个方面进行测试,但是测试平台在设计的过程中,不同的开发公司必然有不同的特点,对于同一个软件来说,不同的测试平台会有不同的测试效果,由此可以看出,如果使用一个测试平台对软件进行测试,虽然能够检测出一些漏洞和错误,但是检测出来的漏洞和错误数量有限,如果使用多个平台对一个软件进行测试,那么不同的平台虽然能够检测出相同的一些漏洞和错误,同时也能够检测出一些独特的漏洞等,这样不同测试平台的配合使用,能够极大的提高测试的效果,因此多平台软件测试的方法。

对于软件开发公司来说,具有非常重要的意义,尤其是在应用软件越来越复杂的今天,软件中可能存在的问题有很多,软件中不可能没有漏洞和错误,多少都会存在一些问题,在测试的过程中,只能尽量的减少软件中的错误和漏洞,而单个的软件测试平台很难满足软件测试的要求。

3.2 多平台计算机软件测试的方法

在使用多个平台对软件进行测试的过程中,需要注意的问题就是几个平台之间的协同问题,由于不同的测试平台开发公司不同,人机交互界面和使用习惯等,都会存在一定的差异,这样多个平台在对一个软件进行测试时,经常会出现一些配合上的问题,因此在实际的测试时,应该注意测试的方法,如在对软件进行测试时,应该先了解软件自身的一些特点,然后根据软件的特点来指定一个测试的方法。

首先应该测试软件的核心模块,对软件的主要功能进行测试,测试平台的选择没有具体的要求,如果有针对性的测试平台,可以优先选择,避免全部选择通用的测试平台,这样能够在一定程度上提高测试的效果,在利用一个平台测试完成后,应该立刻修复找到的漏洞和错误,然后在用这个平台继续进行测试,直到检测不到软件存在问题后,在选择另一个平台进行测试,这样重复的进行下去,直到多个平台都检测不到问题后,软件的测试工作才结束。

4 结论

随着计算机和互联网的普及应用,软件工程已经成为了非常热门的行业,在整个软件工程中,软件的测试是一个非常重要的环节,软件测试是保证软件中没有漏洞和错误的主要手段。

通过全文的研究可以知道,在计算机出现的初期,由于软件的结构比较简单,并没有形成软件测试的概念,随着软件自身的发展,为了提高软件编写的效率,缩短软件开发的周期,人们将软件测试的工具集成到一个平台上,逐渐的形成了软件测平台的概念,现在的软件开发过程中,都会使用到软件测试平台,而且通过多个平台的协同使用,最大程度上减少软件中的漏洞和错误。

参考文献

[1]曾凡晋.浅谈面向对象软件的测试[J].科技信息,2009(1):101-101.

[2]于莉莉,富春岩,孟凡波.软件测试方法及用例的选择[J],佳木斯大学学报:自然科学版,2008(2):240-241+282.

[3]王志敏.基于软件功能点实施测试的方法[J].上海应用技术学院学报:自然科学版,2007(1):62-65.

软件测试分析方法研究 篇9

[1]测试是最常见的改善软件质量的活动。

IBM Rational的测试方法将测试阶段划分为开发测试和系统测试, 两者有一定的重合。开发测试通常包括单元测试、组件测试和集成测试, 有时还包括部分回归测试和系统测试。进一步的系统测试由专门的测试人员进行, 包括功能测试、性能测试、配置测试、客户验收测试等等。

与增量迭代的软件生命周期相对应, Rational的软件测试周期也是迭代的, 从图1-1可以清楚地看出, 每个迭代周期内包括测试计划、测试设计、测试实现、测试执行和执行结果评估等阶段。

在这种理念下, 软件测试的各个阶段与软件开发生命周期不但相互影响, 而且有时候时间上还会彼此交叉和颠倒 (见图1-2, 图中测试人员包括开发人员和专门的测试人员, 两者关系前面已经叙述) 。实践证明, 这在大规模的软件开发中会提高开发效率, 增强软件质量。

另一方面, 对于开发人员来说, [2]采用测试驱动的开发方法, 可以设计出易于调用和可测试的程序。

2. 传统软件测试方法与软件测试自动化

2.1 传统软件测试方法及其存在的问题

传统的软件测试策略是从单元测试开始, 然后逐步进入集成测试, 最后是有效性和系统测试。因此, 传统测试方法一般在开发过程中仅仅进行少量的单元测试 (且在一般情况下由开发人员实施) 。大量的测试工作排布在整个软件开发结束阶段。在开发末期, 由开发人员将基本成型的软件交付与测试人员, 集中进行大量的集成测试和系统测试。

然而, 随着软件开发的越来越复杂, 传统的软件测试方法无可避免存在有以下问题。

项目进度难以控制, 管理难度加大--大量软件错误在后期系统测试阶段才被发现, 软件缺陷的积累和放大效应存在导致项目进度无法控制的风险。

手工测试对项目风险的控制能力较弱--往往是在系统测试之后, 该设计能否满足系统功能、性能和可靠性方面的需求才得以确认, 项目风险才能够真正降低。

存在软件项目开发费用超过预算的可能性--在整个软件开发周期中, 错误发现的越晚, 单位错误修复成本越高, 错误的延迟解决必然导致项目成本急剧增加。

2.2 软件测试自动化

随着传统测试策略愈发难以适应当前复杂的软件开发需要, 甚至还存在导致各种问题及错误的风险, 自动化测试愈来愈受到软件开发及测试人员的重视。

自动化测试的一般定义为[3]:各种测试活动的管理与实施, 包括测试脚本的开发与执行, 以便使用某种自动化测试工具来验证测试需求。

自动化软件测试技术可以克服传统测试技术的许多问题, 其依据的是一套严密的测试法则和评估标准, 具有完整的自动测试过程。它可以避免测试人员惯性思维所导致的测试疏漏, 减少由于手工测试中繁复的重复工作所导致的人为差错。自动测试易于实现错误信息的追踪和场景的再现, 且测试活动的自动化在许多情况下可以获得最大的实用价值, 尤其在自动化测试的测试用例开发和组装阶段, 测试脚本很可能被重复调用。因此, 采用自动化测试可以获得很高的经济回报。

但是, 软件测试自动化并非适用于所有软件项目开发。首先, 采取自动化测试策略的软件需求变动不可过于频繁。有时针对项目各模块的稳定性差异, 自动化测试和手工测试往往被配合使用。其次, 项目周期一个决定性因素, 自动化测试不适用于短期项目。第三点便是自动化测试脚本是否可以重复使用, 从而提高软件的商业价值。

在以上前提成立的基础之上, 自动化测试就显示出其针对传统手工测试的优势所在。值得注意的是, 自动化测试与传统测试之间并非对立关系, 自动化测试是技术人员在传统测试的技术基础上不断探索和逐步改进而来的, 两者相辅相成。在软件测试中, 根据软件实际情况选择正确的测试策略也是一个相当重要的议题。

2.3 软件测试自动化离不开工具的支持

自动化测试引入的原因是就把软件测试人员从枯燥乏味的机械性手工测试劳动中解放出来, 以自动化测试工具取而代之, 使测试人员的精力真正花在提高软件产品质量本身。在这样的理念下, 自动化测试工具就体现出其不可或缺的地位。

IBM Rational的软件测试流程, 不仅包含了完整的软件测试流程框架, 同时还提供了内嵌软件测试流程的测试管理工具的支持。IBM Rational统一过程 (RUP, Rational Unified Process) 提供了一套完整的测试流程框架, 测试团队可以以其作为基础, 根据实际要求, 定制符合团队使用的软件测试流程。

我们可以看到, [4]Rational软件自动化测试工具如图2-1所示, 其最大的特点即是通过一套完整的软件测试工具, 在实现测试管理流程的基础上, 同时涵盖功能测试、性能测试和可靠性测试的自动化测试需求, 通过工具之间的集成完成测试资源的整合, 使得软件的自动化测试可以高效进行。

具体而言, 我们可以就图2-1中所显示的一个Rational工具--Rational Robot为例, 详细阐述一下Rational工具在软件测试自动化中的使用。就Robot而言, 其涉及的自动化测试的具体步骤为:录制测试过程成为自动化测试脚本→增强和改进录制的自动化测试脚本→执行自动化脚本完成自动化测试。

在根据测试用例录制测试活动的过程中, 当测试人员在被测应用程序中进行测试活动时, 自动化测试工具将捕获测试人员与应用程序之间的所有交互, 并根据这些交互生成可重用的测试脚本。在这个阶段需要考虑的一个关键问题就是使用的测试工具是否有能力在应用程序的环境中捕获所有与应用程序的交互。传统手工测试, 通常通过观察屏幕中显示的结果来判断应用程序执行是否是正确, 或者通过将屏幕上的结果与文档中的结果基线进行对比。Robot通过在测试脚本中设置验证点来实现这种对比--在执行脚本时Robot会在验证点获取测试数据, 然后与已设定好的结果集进行比较判断测试是否通过。

在增强和改进已录制的测试脚本的阶段中, 阅读录制好的脚本代码, 并对其进行适当的需改是必须的。例如就一个简单的脚本而言, 它可以读出一个文本文件的内容, 也可以通过设置参数为这个脚本输入不同的数据集。Robot使用的SQA Basic语言具备有适于测试环境的代码阅读方式和灵活的编程方式, 且为确保测试人员可以通过修改测试脚本使用一些开发人员自定义的GUI控件, Robot良好的扩展接口可以扩展Robot的功能, 以支持多种控件。

执行自动化测试脚本在最初仅仅执行单个或少量脚本时是十分简单的, 但是当回归测试不断增加时, 就必须确认测试工具能够协调测试脚本之间的关系, 并能够从多台机器上按照多种配置来执行测试脚本。为了确保回归测试的有效进行, Robot重复所有的用户交互, 计算当前应用程序结果与验证基线的任何差异, 并将结果记录在测试日志中。

由此, 我们可以更加深入的理解[5]IBM Rational软件自动化测试技术的三个最为重要的成功经验———尽早测试、连续测试、自动化测试。

所谓尽早测试是指在整个软件开发周期中通过各种软件工程技术尽早完成各种软件测试任务的一种思想。在该思想指导下, 软件的测试生命周期是与其开发生命周期基本齐平。目前, 迭代式的开发过程已经显示出较于瀑布式开发的优越性, 并已逐渐将其取代。在每个迭代周期都进行测试, 在很大程度上提前了软件系统测试发生的时间, 有效降低了项目风险和开发成本。Rational的尽早测试扩展了传统软件测试阶段从单元测试、集成测试到系统测试的划分, 将整个软件的测试按阶段划分成开发测试和系统测试。通过提前测试发生的时间以提高软件质量、降低测试成本。

连续测试的成功经验也是从迭代式软件开发的模式而来。每次迭代都可产生一个可运行的系统, 测试人员对该系统进行测试, 以评估该次迭代有无达到预定目标, 并据此制定下一迭代的目标。在迭代式软件开发的每个迭代周期, 整体测试的完成通过每个迭代周期不断增量测试和回归测试实现。这样不但可以持续的提高软件质量、监控质量状态, 同时也使系统测试的尽早实现成为可能, 从而有效的控制开发风险、减低测试成本和保证项目进度。

在整个软件的测试过程中要想实现尽早测试、连续测试, 自动化测试工具是保证。Rational的自动化测试成功经验主要是指利用软件测试工具提供完整的软件测试流程的支持和各种测试的自动化实现。可以看出, Rational所提供的一整套软件测试流程和自动化测试工具, 是可以成为软件测试团队高效完成整个测试任务的保证的。

3. 软件自动化测试的优势和潜在的缺陷

软件自动化测试已经在近年展现了其高效的特性和传统手工测试所不可比拟的优势。[6]自动化测试可执行更多更频繁的测试, 甚至是一些手动测试难以完成的测试, 使某些测试任务的执行比手动方式更高效, 可以更快地将软件推向市场;自动化测试可以利用整夜或周末空闲的设备执行自动化测试, 高效利用资源;它将烦琐的任务自动化, 让测试人员投入更多的精力设计出更多更好的测试用例, 提高测试的准确性和测试人员的积极性;其具有一致性和可重复性的特点, 具有较高的商业可行性, 且测试更客观, 提高了软件的信任度。

基于上述优点, 也就不可避免的产生了这样一些误区和缺陷, 一部分项目经理相信自动化测试会是工程测试的最好选择, 而导致对软件测试自动化的盲目相信。

第一, 完全的自动化测试只是一个理论上的目标。目前为止, 没有一款商业测试工具能支持从测试计划, 到测试设计, 再到执行的完全自动化;也不存在任何一款工具可以支持所有操作系统环境, 适合所有项目。因此, 自动化测试并不能取代手工测试。实际上100%的自动化测试, 不仅代价昂贵, 且操作上也几乎不可能实现。

第二, 自动化测试能提高测试效率, 快速定位测试软件各版本中的功能与性能缺陷, 但不会创造性的发现测试脚本里没有设计的缺陷。这就要求测试设计者将测试中各种分支路径的校验点进行精确定制, 这无疑是一个相当高的要求和挑战。

第三, 自动化测试对测试质量的依赖性较大。在刚开始执行时, 自动化测试的工作效率并不一定高于手动测试。只有当整个自动化测试系统成熟, 工程师熟练掌握测试工具后, 工作效率才会随着测试执行次数的增加而提高。推行自动化测试的前期工作相当庞大, 将企业级自动化测试框架应用到一个项目中必须要评估其合适性;对短周期的项目实施自动测试, 存在项目因需要大量测试框架的准备和实施而会被拖跨的风险。

第四, 自动化测试的成本可能高于手工测试。自动化测试的成本大致有:自动化测试的开发成本、运行成本、维护成本以及其他相关任务的成本。软件的修改带来测试脚本部分或全部修改, 就会增加测试维护的开销;实施测试自动化必须进行测试流程、缺陷管理、人员安排、测试工具使用等方面的培训, 培训的成本也是比较高的。

4. 结语

软件测试在软件的生命周期中占有重要的地位, 直接影响到软件的质量。随着软件产业的发展, 花费在测试工作中的时间和精力日益增加, 但是测试技术大部分依然停留在手工测试和录制-回放形式的简单自动化测试阶段。为了减轻测试工作量, 对待测软件进行更为精准、高效和全面的自动测试, 本文以IBM Rational测试工具为基础, 重点分析了自动化测试的特点和流程, 并基于Rational自动测试工具的使用, 以Rational Robot为例进行了重点分析。同时, 本文也对自动化测试系统不可避免的一些局限性进行了分析和阐释, 以期能够对自动化测试产生一个更为客观的阐述。

今后的软件自动化测试系统会将向更加高效、灵活、稳定的方向发展。

摘要:本文将软件测试与软件生命周期进行深入联系, 通过与传统的软件测试策略相比较, 结合Rational测试工具的使用, 对Ratio-nal的测试理念及其优势和成功经验进行阐释。在论述工具作用的同时, 本文也强调了自动化测试可能遭遇到的"陷阱"。

参考文献

[1]. (美) Steve McConnell著, 金戈汤凌陈硕张菲译, 裘宗燕审校.代码大全 (第2版) .电子工业出版社, 2006.

[2]. (美) Robert C.Martin著, 邓辉译, 孟岩审.敏捷软件开发原则、模式与实践.清华大学出版社, 2003.

[3].E1friede Dustin, Jeff Rashka.Automated Software Testing:Introduction, Management and Performance.电子工业出版社, 2003.

[4].IBM Rational测试产品简介.http://www.ibm.com/developerworks/cn/rational/r-autotest/index2.html

[5].采用IBM Rational软件自动化测试最佳成功经验解决传统测试问题.http://bbs.17testing.com/archiver/?tid-5084.html

软件缺陷的评估方法分析与研究 篇10

软件质量可以通过一系列度量因素来描述。对软件质量, 我们大致可以总结出5个关键度量维度, 即客户满意度、产品价值、关键属性、缺陷率和开发过程质量。高质量的软件, 应具备外部属性和内部属性, 其中外部属性包括产品的正确性和精确性、可用性、运行效率、可靠性、健壮性和适应性;内部属性包括可维护性、易扩展性、平台灵活性、可复用性、易测试性、代码可读性和整体理解性。软件质量重点强调软件需求、具体标准和隐含需求。

目前, 人们对软件质量保证体系的研究已比较成熟。世界上关于软件质量保证体系存在CMM/PSP/TSP、ISO 9000系列和ISO/IEC 15504 (SPICE) 三个流派, 其中, 以美国国防部支持的CMM/PSP/TSP流派研究得最为深入, 使用得最为广泛。

在软件缺陷分析和预测研究方面, 人们进行了大量的研究, 开发出一些软件缺陷预测模型。这些模型大致分为两类:一类是在软件开发的测试阶段, 根据历史数据预测软件缺陷;另一类是在软件开发之前, 通过对以往项目的缺陷数据进行分析, 预测在软件开发中会出现的缺陷数, 这些模型大多可以用于软件开发过程中的质量控制。

软件缺陷风险识别框架

软件生命周期是软件项目开发的重要阶段划分, 风险管理的实践通常都是与其结合进行的。本文按软件项目生命周期进行分阶段风险因素识别, 通过文献总结和软件项目从业人员的经验总结获取有价值的风险因素。

为了更好地了解基于软件项目风险分类的风险因素识别方法, 下面来看看软件开发项目风险结构图 (如图1所示) 。该分类从三个方面分析:软件项目生命周期过程、项目内部环境和项目外部环境。事实上, 在软件项目进展的过程中, 项目的内外部环境中的风险因素始终威胁着项目, 这些内外部因素随着软件项目的进展在不断演化, 不断影响着项目的产出结果。软件项目的管理技术将项目团队置于项目环境之中, 正是项目的环境、项目的管理技术和项目团队影响着整个项目的进展。项目的环境就是项目特性, 它包含了项目的本身需求因素、项目的内外部因素等;项目管理包含了项目的管理思想和管理技术;项目团队包括了项目的技术人员和项目的管理人员。

项目特性、项目管理和项目团队三者之间, 其实是互相影响的关系。当然, 项目管理是其他两者的重要纽带, 是三者关系的重要推力。紧密结合的三者又在项目的进展中不断改变各自的影响力, 互相均衡自己的影响力来推动项目的进展。

在一个软件项目当中, 项目管理人员和项目技术人员是可以在建设阶段中熟知一部分风险的, 只是从项目组织上无法通过沟通合作对风险形成一致的认识以实现共同抵御风险;在项目建设过程中, 持续的风险评估对于风险管理有着重要意义, 这就要求风险评估应当跟随项目进展, 应当经历项目建设的每一个阶段, 并对项目建设过程中变化的环境因素进行持续的风险评估;为了更有效地进行持续的风险评估, 就需要一个结构化的风险评估方法, 而且应将风险评估工作放置在一个开放的环境之中;最后, 在项目团队中要形成一种认识, 为了取得项目建设的成功并非需要控制所有的风险。

软件缺陷风险评估模型

项目管理者依靠有效的项目管理方法, 组织项目团队在相应的项目环境下去解决一定的项目需求, 而项目环境和项目需求是这个项目最典型的特性。在整个项目阶段进展过程中, 项目团队、项目管理和项目特性始终影响各阶段的递进, 就好像一条纽带把它们紧紧联系起来。

软件缺陷的评估, 可以放在需求阶段、设计编码阶段和测试阶段进行, 软件开发在不同阶段都会有项目团队的参与, 项目团队的工作能力和效率将直接影响着各个阶段的项目产出。

风险模型构造。软件缺陷的风险识别, 是按照软件生命周期的阶段分类进行的, 若将各阶段的风险因素置于同一个网络模型中, 那么, 这个模型无论它的复杂度还是数据存储空间都会制约着风险模型的评估效率。因此, 将风险模型按照软件生命周期各阶段进行分类, 每类之间按照阶段递进方式进行参数传递, 这种分阶段评估模型可以提高风险评估的效率。

需求阶段产生的需求错误和需求变更, 经过需求检测和新需求匹配性审核进入下一个阶段;设计编码阶段接受检测后的需求错误、需求分析文档和新需求匹配性审核, 输出编码错误和设计文档进入测试阶段;测试阶段接受设计编码阶段的输出和用户方试用的效果共同影响项目的缺陷率。项目团队工作能力的评估是贯穿三个阶段进行的, 它的输出进度压力、管理者工作能力和技术人员工作能力, 这些都作为三个阶段的评估输入。从图2可以看到, 各阶段风险模型的输入和输出、模型之间的联系因素等。分阶段模型一旦建立, 就可以在软件开发过程中的关键时刻设立预测点, 从而对整个开发过程进行有效的管理。

团队工作能力评估。团队工作能力评估主要根据管理者和技术人员之间的沟通以及项目管理的计划和分工水平来进行, 具体来说就是项目客户代表的工作能力、项目经理的资质、项目成员的技术水准、员工之间的沟通机制、项目管理人员的计划分工能力和项目团队的人才管理能力。

图3描述团队工作能力的风险模型。图中给出了设计阶段的设计质量目标的影响图, 包括设计质量受到阶段进度、开发人员工作能力、采用的技术、管理者工作能力, 并且软件开发其他阶段质量目标都有类似的影响结构图, 并进一步细化项目管理人员工作能力的评估、项目技术人员工作能力的评估和整个项目进度的评估。

软件缺陷评估工具

评估工具的应用, 能够让项目经理了解到项目目前的管理水平和风险威胁, 并根据提前的评估通过有效的管理控制措施来提高项目的成功率, 在项目和项目管理者之间架立桥梁。评估工具的核心就是图4中的四个风险模型, 四个风险模型分别描述了项目不同阶段风险因素之间的影响关系。

评估工具总体结构。项目经理可以通过评估工具的风险简要表, 向评估系统提供项目的目前基本信息, 经过项目团队工作能力的评估之后, 可以分别进入不同阶段的风险评估。当然, 不同的阶段评估将需要管理者提供不同的当前项目基本信息。

评估工具目前可以提供三类评估:一类是全程预测, 即软件开发需求分析前期, 对开发质量的整体评估, 按照图4中首先进行团队工作能力的评估, 接着进行需求阶段的评估, 然后是设计编码阶段评估, 最后是测试阶段评估, 整个评估路线就是 (1) (4) (5) ;第二类是需求后阶段评估, 即需求分析阶段之后的设计编码和测试阶段评估, 在这一类评估之前, 必须要了解项目在需求阶段的产出, 包括需求阶段引入的缺陷和需求变更的评估, 按照图4中首先进行团队工作能力的评估, 接着进入设计编码阶段的评估, 最后进行测试阶段评估, 整个评估路线就是 (2) (5) ;第三类是测试阶段评估, 在这类评估之前, 必须要了解项目在需求阶段和设计编码阶段的产出, 包括需求分析质量、设计文档质量和编码阶段引入的缺陷的评估, 按照图4中首先进行团队工作能力的评估, 接着直接进入测试阶段评估, 整个评估路线就是图中的 (3) 号路线。

数据流图。评估流程说明了评估工具应用的场合, 而评估工具的数据流图可以进一步解释评估工具的输入和输出, 为具体应用提供更明确的数据操作。

在评估工具的数据流图中, 项目经理首先需要选择软件开发的评估阶段, 接着进入评估工具的输入状态, 完成相应的风险因素的评估, 进入评估工具的整个评估路线, 最后得到软件缺陷的风险状态和其他风险的状态值, 这些状态信息可以作为项目经理进行风险管理的可靠依据。

软件缺陷数目是软件可靠性的重要度量指标, 而软件可靠性是衡量软件质量的最重要因素。如何为进行项目管理提高重要的风险信息, 对软件缺陷进行合理、正确的评估, 已经成为项目管理的首要任务。这样, 软件项目的风险管理成为软件项目管理的重要工作, 能否很好地解决这些问题将直接影响到软件项目风险管理的有效性, 同时也影响到软件开发的质量和软件项目的完成。

参考文献

[1]朱鸿, 金凌紫.软件质量保障与测试.北京:科学出版社, 1997.

[2]李文静.软件缺陷与软件测试.计算机与网络, 2001, (21) :31-32.

[3]黄国青, 田英.改善软件开发质量的全面质量管理办法.西北工业大学学报 (社会科学版) , 2001, 21 (3) :20-22.

[4]叶俊勇, 汪同庆, 杨波, 彭健.软件开发的质量保证体系.计算机与现代化, 2002, (6) :1-4.

[5]郑翠芳, 吴志杰, 夏涛, 张伟燕.基于BBNs的软件残留缺陷预测模型.微计算机信息, 2006, (3) :269-271.

软件测试分析方法研究 篇11

【关键词】材料类专业  材料分析测试技术  教学改革

【中图分类号】G642.0                          【文献标识码】A      【文章编号】2095-3089(2015)05-0047-01

一、引言

《现代材料分析测试技术》是我校材料类专业本科生一门必修的重要专业基础课,具有较强的理论性、实践性、前沿性、综合性等特点,在教学中占有极其重要的地位。本课程所涵盖的基础理论较复杂,实训内容较多,加之我校现有实践教学条件的不足,很大程度上限制了这门课程的有效教学,使得教学效果不甚满意。鉴于此,在借鉴部分兄弟高校材料分析测试技术的教学经验基础之上,在我校创建地方高水平特色应用型大学的办校方针指引下,结合我校材料类专业的人才培养目标和专业特色,对该课程进行了初步的教学改革研究,以期提高教学质量和效果。

二、教学现状与存在的问题

多年的教学实践和调查研究表明,这门课程对老师的专业素养要求较高,大多数老师感到此门课程的教学难度较大;学生普遍反映学习难度非常大,不知老师所云,不知所学何用,学习兴趣很低。如此一来,这门课程的教学效果可想而知。因此,对这门课程教学内容、教学方法和手段、教学模式等进行综合改革已迫在眉睫。归纳起来,主要存在以下问题:

1.教材的局限性

一方面,教材内容更新较慢,与当前材料分析测试技术发展的步伐不不相匹配;另一方面,涉及知识面较广,理论性较强,缺乏案例介绍,学生缺乏对仪器的感性认识。

2.教学模式单一

该课程以课堂讲授为主,没有与之同步的实验教学。许多基础知识理论深度较深、体系很复杂、总学时较少、教学深浅程度难以把握,加上学生没有及时的实训操作和感官体验,使得教学过程中无法充分发挥老师和学生的各自作用,教学效果令人不甚满意。

3.实践教学的功能性较弱

一方面,这门课程涉及的精密仪器设备较多、价格昂贵、操作较复杂,无法让每个学生参与设备操作。另一方面,我校开设了部分仪器设备的实验课,但与理论课程严重不同步,两者的协同作用较弱,学生上理论课的积极性不高、上实验课又是走马观花。因而,实践教学活动没有完全发挥其具备的功能,应与理论课程有机结合。

三、改进措施

针对课堂教学中存在的各种现象和学生反映的普遍问题,为了充分发挥学生的主观能动性和学习积极性,拟从以下几个方面对材料分析测试技术课程进行改革研究。

1.组建教学队伍

教师队伍的整体水平是保证课程教学质量的关键,建议本课程教学队伍由理论讲授教师和实验教师组成。理论讲授教师专业功底扎实、授课经验丰富,在教学质量方面切实起到把关作用;实验教师除同步辅导学生实验操作过程外,还可以引导学生开展科学研究。每位教师要不断提高自身的专业技能和教学能力,且重点培养青年教师。结合学校自身情况和教学实践经验,可从这些方面开展工作:(1)青年教师可以通过学习深造,系统掌握本专业领域内的知识。(2)青年教师积极投身科研,以科研活动促进教学质量的提高。(3)青年教师积极参加课程在线学习,通过学习和观摩名师教学,提升教学能力。(4)加强对青年教师课堂讲授的引导和监督,督促老师严于律己,认真备课,写好教案讲义,组织好每一次课堂教学。

2.整合教学内容

我校材料类专业这门课程的使用教材为左演声主编的《材料现代分析方法》,这本书内容丰富,涵盖的知识面较广,分析测试方法较全面,具有较深的理论基础知识。但由于我校实践教学条件有限,师资力量不足,教学效果不甚理想。因而,对教学内容作了如下思考:

(1)在对周边企业和兄弟高校设备条件和实际使用调研的基础之上,针对材料专业特点,结合我校拥有的仪器设备,重点讲解光学显微分析、X射线衍射分析、扫描电子显微镜、热分析四个内容体系。

(2)在课程内容的整体布局上,省略公式的变换与推导,弱化仪器设备的组成及原理介绍,强化学生对测试基本原理的理解和对测试结果进行综合分析的培养,强化学生对分析测试方法的基础应用等实际动手能力。

(3)课堂教学中,向学生演示各种分析测试技术所需分析软件的使用。比如,在X射线衍射分析中,应将重点放在用于XRD测试数据分析软件Jade、PCPDF、Origin等软件的安装和应用上。在扫描电镜分析中,可向学生介绍颗粒尺寸测试软件、相对面积测试软件等。

(4)对于实际工作不常用或测试结果无需软件分析的测试技术,仅用较少的学时向学生介绍其功能实质和应用领域即可。

3.创新教学模式

一方面,尽量满足该门课程理论教学与实践教学的同步性,实现两者相长,互相促进。另一方面,基于我校人才培养模式和转型方向,结合教师科研基础和课程特点,建议该课程采用教学与科研项目有机结合的教学模式。教师可以把科研实例和成果通过多媒体的形式带到课堂教学中,同时也可以让学生积极参与到课题组中,优化教学效果。

4.灵活教学手段

为了更加生动的向学生讲授分析测试技术,这门课程基本都采用多媒体上课。教师应广泛收集实训案例或视频教材作为课堂教学素材,将抽象枯燥的知识用生动的图像和动画表现出来,使教学活动轻松易懂化。同时,老师可建立QQ群、飞信或微信,通过互联网技术,促进教师和学生的有效沟通和交流,达到较好的教学互动效果。此外,老师可将教学大纲、习题等学习资料放在群共享,使学生能够在课余时间自主学习。

5.优化考核形式

本课程属于考试课,考核形式基本采用期末考试和平时成绩相结合的办法。但是,随着教学内容和教学方法的改进,考核形式也应随之进行调整改进。综合起来,可采用实训成绩、末考成绩、平时成绩相结合的考核方法,比例可选择5:4:1。通过强化实践活动,使学生真正学到有用的知识和技能,提高学生综合素质,实现学生的全面发展。

四、结语

通过分析我校材料类专业《现代材料分析测试技术》课程的教学现状及存在的问题,提出了提高教学质量的基本措施。总体来讲,本课程对于科研人员和学生来讲,是一门重要的专业技能课,直接关系着科学研究的进程和人才培养质量的高低。因此,该课程的教学改革是一项长期的系统工程,需要广大教师和学生与时俱进,不断开创适应性较强的教育教学新思维和新方法,逐步提高教学质量。

参考文献:

[1] 左演声, 陈文哲, 梁伟.材料现代分析方法[M]. 北京: 北京工业大学出版社, 2009.

[2] 魏凤荣. 科研与教学相结合是培养人才的根本途径[J]. 中央民族大学学报(自然科学版), 2002, 11(2):179-181.

[3] 李茂华, 刘文辉, 颜焕元. “材料近代测试方法”教学、科研相结合的教学改革讨论[J]. 当代教育理论与实践, 2012, 4(8): 77-78.

软件质量度量分析与研究 篇12

关键词:软件质量,度量,质量度量模型,度量验证

在过去几十年里,因为软件的质量问题而导致整个系统发生失效的事例屡见不鲜,进而给人类生命安全和环境造成了巨大的损失。20世纪80年代,美国有两个系统,耗资5600万美元的Univac联合航空订票系统和耗资2.17亿美元的高级后勤系统都因在交付使用后发现不满足要求而被迫进行重新研制[1];而在1996年6月,在阿丽亚娜5号火箭首次发射后不到一分钟的时间内,就因为软件故障问题致使火箭发生了爆炸,导致了巨大的经济损失和相应计划的延迟[2]。因此软件的质量问题已引起了人们的极度重视,软件质量的度量问题自然也得到重视。

由于计算机技术、数据融合技术、网络技术和通信技术的飞速发展,人们对软件性能及功能提出的要求也越来越高,度量软件质量已成为一个迫切需要解决的问题。如何通过选择合适的软件质量指标体系、确定软件质量的量化过程和方法来进行客观性地度量,对于评价软件的质量是关键的一步,进而对于减少软件失效的发生和提升软件的总体质量也是具有极其重要的意义。

1 对软件质量模型的认识

1.1 软件质量及定义

至今为止,软件质量还没有一个统一的、惟一的定义,不同的组织或应用可能会有不同的定义。ANSI/IEEE Std 729—1983定义软件质量为:与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体[3];M.J.Fisher给出的定义为:表征计算机软件卓越程度的所有属性的集合。由此可知,软件质量的优秀程度与反映软件各项功能、性能需求的特性及其组合紧密相关,如果针对软件本身设计出来的质量特性能够满足各种要求和反映软件质量需求,则说明软件产品的质量等级比较高。结合各种定义,软件质量反映了以下三个方面的问题:1)显式的软件需求,包括用户方、交办方等提出来关于软件的功能需求、性能需求等,这是软件质量度量最基础的需求;2)隐式的需求,在软件生命周期中其中有一部分需求并没有明确提出来,如可维护性等;3)软件的整个开发过程还必须按照一定的方法,规范来进行,缺少这些,就无法指导软件开发人员的各种开发活动,开发秩序会变得杂乱无章,软件质量也就得不到一定的保证。

综上以上的定义和最新的研究可以将软件质量定义为:软件所具有的能够满足功能和性能需求、遵循一定的开发准则和规范以及符合隐含的一些规定需求的本质。

1.2 软件质量度量模型

软件度量工作自1958年Rubey和Hurtwick首次提出软件度量学概念[4]至今,大体经历了三个阶段。1976年,Boehm等人从可移植性、可使用性、可维护性三个方面来定量的评价软件质量为第一阶段;第二阶段以1978年Mc Ca1l等人从“产品运行、产品修正和产品转移”提出的质量度量模型即“质量要素———评价准则———度量”为标志。但是实践证明通过该模型不同缺陷的反馈信息可能相同,以致指标的制定及其定量的结果难以评价。随后,国际标准化组织(ISO)[5]于1985年和1993年先后提出了多项关于软件质量度量技术的工作报告,其提出的软件质量度量模型将软件度量工作带入了第3个发展阶段。

通过对这三个模型的深入研究发现,这三个模型都着重分析了软件质量属性的影响因素,这些模型研究的对象主要是软件产品,即在软件质量属性和软件设计、编程的特性之间建立关联映射[6]。这些模型可以帮助加深对软件特性的研究,有利于分析和建立特定软件系统的质量特性及其特性组合。但是这些质量度量模型都存在一定的局限性,每个模型都是针对软件本身提出来的,通用性比较强,在应用到具体的软件系统评估中,并不能很好地反映软件所具有的特殊性。因此,如今很多模型都是根据自己的需求来开发建立的,虽然软件自身的性质给模型的确定带来了一定的困难,但是总的提升还是有的。文献[7]就指出了一种基于全局和局部质量标准的框架,降低了模型建立的难度;文献[8]中指出了从领域报告问题、用户关键情况和用户满意度等级三个方面来寻找度量元,利用数据统计分析的方法加强了软件质量的管理。这些方法的开发和应用都为软件质量特性和模型的设计提供了很好的引用和借鉴。

2 软件质量的度量研究

2.1 软件质量度量过程

软件的度量过程主要可以分为五个步骤进行:1)确定软件的质量度量需求。这一步是软件质量度量最为前提和基础的一步,主要活动包括设计可能的质量因素集合,优化并确定这一因素集合和建立软件质量模型。2)确定软件质量度量元。这是软件度量过程较为关键的一步,度量元选取的好坏直接影响着质量评估的结果。首先在基于软件质量度量框架的基础之上,将质量特性分解成度量元;继而执行度量元的成本效益分析,根据其结果调整优化已选度量元集合。3)执行软件质量度量。包括定义度量数据收集过程并且收集数据、根据已有数据计算度量值等环节。需要注意的是,采集的数据应该基于正确定义的度量和模型,从而保证数据的正确性、准确性和精度;因此,在收集数据之前,应当设定数据采集的目标,并且定义有意义的问题[9]。4)分析软件质量度量结果。通过分析比较收集的度量数据与目标值,发现两者之间的区别。确定那些不可接受的度量值,详细分析那些数值偏离关键值的度量元并依据分析结果重新设计软件质量度量。5)软件质量度量的验证。验证的目的就是为了证明通过软件产品和过程度量可以预测具体的软件质量因素值。验证的过程中,在运用相关的验证方法和标准的前提下,必须确定软件质量因素样本和度量样本,然后执行对度量的统计分析,检验度量的作用是否实现。整个具体过程如图1所示。

2.2 软件度量的验证与预测

软件度量的验证是软件度量领域另一个非常重要的话题,因为实际上软件度量的认同取决于软件度量是否能作为软件质量特性的预报器,如果能,度量验证的目的也就达到了[10]。

从软件产品度量验证实质来分析,具体反映了以下三个问题:1)软件产品度量必须量度本应该量度的内容,例如耦合度量量度耦合性等。2)软件产品度量和一些重要的外部度量存在关系,例如可维护性和可靠性的量度。3)软件产品度量能促进现有的度量水平的提升,这种提升意味着将会产生降低度量收集的复杂性以及提高预测错误的可能性等等优势。

在进行软件度量验证时,我们必须注意软件度量的外部验证和内部验证的区别,内部验证考虑同态,也就是说,做用户想要的度量。软件度量的外部验证考虑量度是否和软件品质属性(外部变量)有关系。文献[11]和文献[12]应用算法验证进行度量的外部验证,而Zuse等人采用的是所谓原子修正进行度量的外部验证,原子修正可以看作对顺利量表的必要条例。软件度量广泛使用的外部验证概念相对于外部特征是相互关系的考虑。文献[13]也从内部验证和外部验证的角度出发,提出了利用理论验证和经验验证相结合的方式来对已存在的五个有关面向对象设计的质量因素的度量集进行验证。软件组织可以利用这种方法尽早确定高风险的软件模块、构建设计和编程计划与方针以及进行系统级的预测。具体方法如图2所示。

最近的研究表明,验证软件产品度量的方法的质量越来越受到人们的关注。主要基于两个原因:1)应用于软件工程度量验证的一些一般实践在科学性方面令人难以接受;2)对于有效的工程管理和可靠合理的经验研究,有效的测试和验证是必须的。因此,必须对那些来出自于研究室的度量的有效性进行验证,才可能达到准确性和科学性。更需注意的重点是软件度量验证不只是一次的事,它是一个需要重复验证的连续过程。

2.3 软件质量度量方法与进展

2.3.1 面向结构度量方法

较早出现的度量是建立在结构化程序设计和模块化思想基础上的,分析的对象包括程序的控制流图,实现中的操作复杂性,方法间的传递耦合和流程耦合等。其中影响比较大的有McCabe提出的循环计数复杂度度量,直到今天历经改进,仍然被实践者所采纳。McCabe 1976年提出了环形复杂度(cyclomatic complexity)理论,该理论以图论为基础,通过分析程序的控制流图来获得程序的复杂度,为度量程序逻辑复杂性提供了一种很好的方法。

2.3.2 面向软件复用的度量

20世纪90年代后期,软件复用的研究兴起。复用的度量主要包括可复用性度量和复用度量[14]。可复用性度量主要用来判定一个构件的可复用性和质量,复用度量主要用于判定复用对生产率、质量和开发时间的作用,它可以在不同级别上进行度量,包括构件级、产品族级、项目级和机构级。目前面向复用的度量大致可分为以下4大类:经济模型类、成熟度模型、复用比率模型以及复用潜力度量模型。

2.3.3 面向对象度量方法

软件度量进一步作的开展主要在80、90年代,尤其是在90年代,软件度量的研究获得了空前的发展。1989年,Morris研究讨论了面向对象应用程序的度量,Bieman讨论了在面向对象条件下软件重用的度量问题。1993年中国台湾学者J-Y Chen和J-F Liu提出chen&liu方法[15],从操作性、复杂性、重用性、类的属性等八个方面去度量面向对象软件。1994年Chidamber和Kemerer发表论文对面向对象度量提出了基于继承树的一套面向对象度量方法[16]被称为C&K度量方法,主要用来量度与对外部质量属性的影响有关的面向对象设计的复杂性[17]。1995年,brito等人针对面向对象属性提出的一套称之为MOOD的度量算法集[18],它从封装性、继承性、耦合性和多态性等四个方面给出了面向对象软件六个度量指标。1998年,Nesi和Querci提出了一种新的软件复杂度和大小度量方法[19]。

到了2000年,Arlene F提出一种预测点度量方法,这种方法基于对象和他们的特征,建立一种适合预测工作量和跟踪生产力的方法,核心是每类加权方法数(Weighted Methods per Class WMC)[20]。2001年,Victor和Daily提出了一种基于构件点的度量方法叫SPECTRE的方法[18],用于预测开发任务时间和模块规模。2003年,Washizaki等提出了一种可重用组件的度量方法,用于度量面向对象组件的易理解性和可重用性。同年,Hastings和Sajeev介绍了一种新的Vector Size Measure(VSM)方法,用于在软件生命周期的早期度量软件规模,软件分类,软件开发结果等[21]。2005年Gyimothy等提出一种基于经验的面向对象度量方法,该方法能有效地实现对源码的bug预测度量。同年,Del Bianco等采用经验断言的方法,扩展了功能点度量方法,并将其应用到面向对象度量中。

3 展望

毫无疑问,软件度量是提高软件品质的一个重要方法。只有通过软件度量,才能确定软件产品所具有的属性组合与所希望的符合程度。Dieter Rombach,曾在巴黎说到过(现在他在美国软件工程实验室(SEL)工作):我们现在不再是问我们是否应该度量,而是怎么样度量。尽管过去软件度量领域做了许多的研究,但还有许多问题未解决。

首先,目前还没有成熟的度量方法,大多度量方法适用性不强,且有些还存在着度量过程客观性差,度量结果不准确的问题;

其次,国际上还没有统一的软件度量标准,很多标准针对的范围比较小,并不能满足软件质量度量的整体要求。

将来,理论开发(对现实的假定)变得越来越重要,相关和归约分析需要考虑讨论度量比例,外部变量对软件度量验证确认是未来需要研究的课题。利用测量理论的公理有助于更好理解软件品质和成本估计后潜在的内容;同时,针对现有问题进行深入的研究和分析,探求符合需要的理论方法和开发工具将对未来度量领域的发展起到重要的促进作用。

4 结束语

上一篇:城市小区园林绿化下一篇:上海有什么好