首页 > 其他分享 >软件质量属性之可测试性

软件质量属性之可测试性

时间:2023-04-14 15:34:00浏览次数:30  
标签:属性 接口 故障 测试 软件 软件测试 Software

软件质量属性之可测试性

张榕

(石家庄铁道大学信息科学与技术学院软件工程系,河北省石家庄市 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

相关文章

  • 自主阅读笔记04《多种软件体系结构风格的分析与比较》
    文章来源《计算机与数字工程》作者:刘凯′梁欣?李欣宜’张俊萍赵丽娜软件体系结构的基本概念软件体系结构是从一个较高抽象层次来考虑组成系统的构件、构件之间的交互,以及由构件与构件交互形成的拓扑结构的关系。这些要素应该满足一定的限制,遵循一定的设计规则,能够在一定的环......
  • 原型设计软件Axure RP 9中文mac版
    AxureRP是一款简单易用的原型设计工具,能够创建符合用户体验标准的模型和操作界面。它能有效地实现对数据图表、项目管理、交互、图形设计、图像编辑等功能的支持及用户界面风格的个性化设置。对于专业设计师或非专业人员用户来说,这种简易便捷的工具带来了极大的方便,同时也为用户......
  • SOLIDWORKS如何批量填写焊件切割清单属性信息
    在SOLIDWORKS中,焊件是指含有可用切割清单描述的多实体特殊零件模型。焊件有一系列的专用命令,这些命令位于CommandManager的【焊件】选项卡中。用户可以使用焊件命令进行以下操作:1.插入结构构件。2.使用特殊工具对结构构件进行剪裁和延伸。3.添加角撑板、顶端盖及圆角焊缝。结......
  • 软件质量属性易用性
    软件质量属性之易用性 一、易用性概念 软件易用性是软件质量体系中一个重要的质量特性。 1. 在各个标准体系中都有关于软件易用性的定义描述。 (1)关于易用性的描述都是围绕着“用户对于产品的使用感受”这个中心展开的。 (2)易用性体现了用户在使用过程中所实际感受......
  • 使用Java反射机制将类的属性名和属性值打印出来
    可以使用Java反射机制来读取类的属性名和属性值。以下是一个示例代码,可以输出指定类的所有属性及其对应的值:1publicstaticvoidprintFields(Objectobj){2Classclazz=obj.getClass();3Field[]fields=clazz.getDeclaredFields();4for(Fieldfie......
  • 软件体系结构概念架构设计
    某大银行的一位银行卡办公室的收账经理Liz遇到了一个问题。她每周都收到一份过期未付款的账户名单。这份报告已经从两年前的250个账户增加到现在的1250个账户。为了确定那些严重拖欠债务的账户,Liz需要通读这份报告。严重拖欠债务的账户由几个不同的规则确定,每个规则都要求Liz检查......
  • 关于 css 伪元素 content属性值 为中文字符时出现乱码问题的处理
    更多关于csscontent属性的介绍点我 场景:需要在右箭头(点击该箭头是可以跳转到详情页)的左侧补充一个“更多”的文字描述 在一些场景下,使用CSS去做改动会是最优的,比如无源码等 易出现乱码的代码示例i.common-right-arrow-icon{position:relative;}i.comm......
  • 软件系统设计-2-策略模式
    1.策略模式引入:鸭子1.1.从SimUDuck应用程序开始我们需要添加功能使得鸭子可以飞简单的修改鸭子父类,我们可以发现这样子橡皮鸭也可以飞我们需要意识到不是所有的鸭子都会飞考虑继承我们总是可以像使用quack()方法一样在橡皮鸭中覆盖fly()方法…但是,当我们在程序中添加木制诱饵......
  • 关于重发布+Route-map问题+PBR操作测试
    测试拓扑  基本描述:按照图示配置IP地址,其次打通路由,这里将忽略,让R5Loopback的IP地址可以访问R1的Loopback的IP地址。R4#shorun|iiproute...iproute5.5.5.0255.255.255.045.1.1.5iproute5.5.5.1255.255.255.25545.1.1.5iproute5.5.5.2255.255.255.25545.......
  • 批量改名高手软件批量重命名TXT文档文件的方法
    最近有很多朋友在问,如何管理文件?比如说各种形式的文件该怎么批量重命名呢?今天小编能给大家分享一个新的处理技巧,下面一起来试试。材料准备:一台Win系统的电脑安装一个文件批量改名高手文件素材若干步骤演示:步骤1:打开【文件批量改名高手】,在“文件批量重命名”中,单击“添加文件”步骤......