软件质量属性之可测试性
张榕
(石家庄铁道大学信息科学与技术学院软件工程系,河北省石家庄市 50000 )
摘 要:软件可测试性对软件研发和质量保障有着至关重要的作用,是实现高质量、高效率交付的基础。可测试性差,会直接增加测试成本,让测试的结果验证变得困难,进而会让工程师不愿意做测试,或者让测试活动延迟发生,这些都违背了“持续测试,尽早以低成本发现问题”的原则。本文主要介绍从软件可测试行定义,测试的重要性,可测试场景以及涉及到的战术战略等方面进行简要概述。
关键词:软件;可测试性;战略战术
Testability of the software quality properties
Zhang Rong
(Department of Software Engineering, School of Information Science and Technology, Shijiazhuang Tiedao University, Shijiazhuang 50000, Hebei Province)
Abstract: Software teability plays a vital role in software research and development and quality assurance, and is the basis for achieving high quality and efficient delivery. Poor teability can directly increase the cost of testing, make the verification of test results difficult, and make engineers reluctant to do the test, or delay test activities in place, which violates the principle of "continuous testing, finding problems early at a low cost". This paper provides a brief overview of the software testable line definition, the importance of testing, the testing scenarios, and the tactical strategies involved.
Key words: software; stability; strategy and tactics
1概述
随着软件行业的迅猛发展,软件测试也逐渐受到越来越多的软件公司所重视,然而开发出来的软件直接就可以拿出来做测试吗?根据近几年来的实践证明,在设计软件时事先没有对软件的可测试性进行周密设计和部署的软件在测试时总是很难于进行,直到测试无法进行下去为止。被测软件在编码时需要考虑给测试和后期的产品维护提供必要的手段和接口支持,即要求软件具有可测试性。基于可测试性的目标考虑,良好的架构设计,完备的接口,使得软件测试更加高效和可行,同时产品维护也更加便利。
2软件可测试性定义
2.1可测试性定义
软件的可测试性是指在一定时间和成本前提下,进行测试设计、测试执行以此来发现软件的问题,以及发现故障并隔离、定位其故障的能力特点。各种组织对可测试性有不同的定义,我认为其本质是相通的,都是在说一个软件系统能够被测试的难易程度,或者是说软件系统可以被确认的能力。
2.2可测试性特征
软件的可测试性应具有如下特征:
①可操作性:如果设计的软件存在很少缺陷或 基本没有缺陷话,那么在进行测试时的效率就会很高。
②可观察性:可观察性好的软件产品测试时可以容易地观察到测试结果。
③可控制性:能够从软件产品的输入来控制它 的各种输出,软件硬件状态和变量能够直接由测试工程师控制。从而使软件的自动测试工作变得更容易。
④可分解性:软件可以分解为独立的模块,能够被独立地测试。
⑤简单性: 软件在满足需求的基础上要尽量简单。
⑥稳定性:软件的变化很少,保持稳定的状态。
⑦易理解性:软件的设计易于理解。
3测试的重要性
软件测试一般是用来测试软件中的BUG,以此去验证产品是否符合它的原本需求,使用最小的成本和工作量来验证软件的质量,使得软件的功能(functionality)和质量(quality)达到平衡。
软件测试在一般情况下,花在测试上的成本近40%,因为如果一个大型软件出现故障,则会造成更为巨大成本的损失,下面我们就来看看这些经典的事例。
2015年4月,伦敦彭博终端由于软件漏洞宕机,导致金融市场上超过30万交易商受到影响。迫使政府推迟30亿英镑的债务出售。
日产尼桑汽车由于安全气囊感应探测器的软件故障,召回超过100万辆汽车。据报道,由于此软件故障导致两起事故。
Windows 10中的漏洞,此问题使用户能够通过win32系统中的缺陷脱离安全沙箱。
2015年,F-35战斗机成为软件漏洞的受害者,导致其无法正确检测目标。
1994年4月26日,中国航空公司空中客车A300因软件故障而坠毁,造成264人无辜死亡
1985年,加拿大的Therac-25放射治疗机由于软件Bug而发生故障,向患者提供了致命的辐射剂量,造成3人死亡,3人严重受伤。
1999年4月,一个软件漏洞导致12亿美元的军事卫星发射失败,这是历史上最昂贵的事故。
而如果能够在体系架构层面提高软件的可测试性,则收益巨大。软件测试是被设计和实现出来的。软件的可测试性需要被明确地设计,根据设计出来的可测试性方案在整个研发流程中进行测试,而不是在研发完全结束后或这中间的某一个阶段进行测试。
4可测试性场景
4.1刺激源
测试可能由不同的角色发起(开发者、单元测试人员、继承测试人员、系统管理员、用户)。
4.2刺激
系统开发到达了里程碑,可能是分析/设计/编码/集成阶段的结束,或系统完成开发。
4.3制品
一个设计、一段代码、整个系统。
4.4环境
系统可能处于设计模式/开发阶段/部署阶段/正常运行时。
4.5响应
理想的响应是可以进行测试,并且可以观察到测试结果,当测试结果无法被观察到时,测试难度很大。
4.6响应衡量指标
白盒测试中的覆盖率包括语句覆盖,判定覆盖/分支覆盖(判定可能是多个条件组合),条件覆盖:覆盖判定中的每个条件,路径判断、判定条件覆盖、条件组合覆盖。
5如何提高软件可测试性
5.1战术战略
黑盒测试:记录/回放;自动化/半自动化测试;吧接口和实现分离开;不同排序算法,使用相同的接口;提供专用的测试路径
白盒测试:内部监控;IDE提供的断点等调试工具
常用测试工具:Appiun(APP UI测试);Selenium(Web UI测试);JMeter(接口测试、性能测试);UTF(功能测试);Silk Test(功能测试);Windbg(Win调试);Steho(安卓调试);LoadRunner(性能测试)
5.2可测试性编码
注释需要详尽。特别对于接口,要描述清楚功能、实现及参数;
使用模块化方法,编码低耦合、高内聚;
为集成测试与系统联调准备调测开关及相应打印函数,并且要有详细的说明;
为单元测试选择恰当的测试点,并仔细构造测试代码、测试用例,同时给出明确的注释说明。测试代码部分应作为(模块中的)一个子模块,以方便测试代码在模块中的安装与拆卸(通过调测开关);
使用断言来发现软件问题,提高代码可测试性;
用断言来检查程序正常运行时不应发生但在调测时有可能发生的非法情况;
为测试自动化工具提供所需要的特定“钩子(hook)”;
对于每个功能,提供访问、修改“状态”变量的接口,包括提供查询、修改上层软件、软硬件接口、底层硬件状态的接口及打印;
提供查询系统状态的接口。比如内存使用、程序使用进程数等;
对于测试因为环境等因素而可能无法测试的功能,提供接口模拟软件实现该功能的过程
对于修改功能,提供修改功能参数单位的接口,以便于进行如软件性能等的测试;
出错及异常处理保存记录,记录具有详细的属性,并且格式统一、意义明确;
在程序异常时,除了保留日志,还需要提供观察、恢复的外部方法;
对全局变量、特殊结构,提供查询的方法。
5.3可测试性调试与定位
对于程序中所涉及到的变量尽可能的在调试过程中可以查询及修改;
在整个软件系统执行过程中为每个关键业务或相对独立的业务设定一个调试点,便于系统集成和问题范围的定位;
在设定好的调试点处对处理的业务输出数据和全局数据进行可视化输出,便于测试结果的分析。
参 考 文 献:
[1]Jeffrey M Voas,Kelth W Miller.Software Testability[J],The New Verification.IEEE Software,1995,12(3):17-28.
[2]Gao Jerry. A component testability model for verification and measurement[C].The 29th Annual Internation Computer Software and Application Conference. IEEE Computer Society, 2005:211 -218.
[3]Jeffrey M Voas,Keith W Miller.A Design Phase Semantic Metric for Software Testability[M].The 4th Annual Oregon Workshop on Software Metrics.Oregon,Silver Falls,1992:175-179.
[4]甄晓丽.基于语义的软件可测试度量的研究与应用[D].南京:南京航空航天大学,2007:10-12.
标签:属性,接口,故障,测试,软件,软件测试,Software From: https://www.cnblogs.com/rongzhang/p/17318443.html