zoukankan      html  css  js  c++  java
  • 软件质量属性之可测试性

    软件质量属性之可测试性

    胡一鸣

    (石家庄铁道大学,河北省石家庄市,050043)

    摘要:质量属性指影响质量的相关因素,是对质量的描述。质量属性可以分为3类:系统的质量属性;受构架影响的商业属性;与构架本身相关的一些质量属性。系统质量属性包括,可用性,可修改性,性能,安全性,可测试性和易用性六种。本文主要就软件质量属性的可测试性进行分析。在软件开发过程中软件的质量属性扮演者至关重要的角色,只有合理地遵循质量属性原则,才能快速、高效、低成本的开发出适合广大群众的好产品。

    关键词:软件质量属性,可测试性,MVC

    Testability of software quality attributes

    Yiming Hu

    (ShiJiaZhuang TieDao University,Shijiazhuang, Hebei province,050043,China)

    Abstract:Quality attribute refers to the related factors affecting quality, which is the description of quality. Quality attributes can be divided into three categories: system quality attributes; business attributes affected by architecture; and some quality attributes related to architecture itself. System quality attributes include availability, modifiability, performance, security, testability and ease of use. This paper mainly analyzes the testability of software quality attributes. In the process of software development, the quality attribute of software plays a crucial role. Only by reasonably following the quality attribute principle, can we develop good products for the masses quickly, efficiently and at low cost.

    Key wordsSoftware quality attributes,Testability

    “可测试性”这一概念于1975年首次提出。自此,可测试性在电子产品诊断电路设计及研究等各个领域得到了广泛应用。当系统的规模越来越大,对软件的测试变得越来越困难,那么我们需要提高软件的可测试性来提高软件性能,来节省开发费用。MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式,它强制性使应用程序的输入、处理和输出分开。MVC框架的使用大大提升了Web应用程序的可测试性。

    一、   软件可测试性的特征

     

    软件的可测试性是指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。它依赖于软件本身的结构和描述该软件的文档资料的明确性。一个软件的可测试性应具有几个特征。

    特征

    说明

    记录/回放

    记录/回放是指将捕获跨接口的信息,并将其作为测试专用软件的输入。

    将接口与实现分离

    将接口与实现分离允许实现的代替。占位实现允许在缺少被占位组件时,对系统的剩余部分进行测试

    特化访问路线/接口

    具有特化的测试接口允许通过测试工具并独立于其正常操作,来捕获或指定组件变量的值

    内部监视

    组件可以根据内部状态实现战术,以支持测试过程

    二、MVC框架可测试性体现

     MVC框架把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。

     MVC架构提供了一种按功能对各种对象进行分割的方法,其目的是为了将各对象间的耦合程度减至最小。MVC结构本来是为了将传统的输入、处理、输出任务运用到图形化用户交互模型中而设计的。

    由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松耦合的构件。同时,可以根据程序要实现的不同功能将其分离成许多不同的、相互独立的软件块,当测试的过程中出现错误时,可以很快的定位错误出现在哪一个模块,进而及时的消除错误。

    三、如何提高软件的可测试性

    需求分析阶段修复一个错误的费用还有编码阶段的1/5到1/10,而在维护阶段做同样的工作所付出的代价却是编码阶段的20倍。可见,在软件生命周期的早期就确定软件的可测试性,在设计时就充分考虑可测试性的问题,就可以既省时又省力地提高软件的可测试性。因此,如何提高软件的可测试性就显得尤为重要。

    3.1降低模块之间的耦合度

    模块耦合表示模块间的联系程度。模块间的耦合作用强,会降低软件的可测试性水平。因此在软件设计时,尽可能的强调测试功能模块之间的相对独立性。下面是实现低耦合的几个具体方法:

    1、少使用类的继承,多用接口隐藏实现的细节。 Java面向对象编程引入接口除了支持多态外, 隐藏实现细节也是其中一个目的。

    2、模块的功能化分尽可能的单一,道理也很简单,功能单一的模块供其它模块调用的机会就少。

    3、遵循一个定义只在一个地方出现。

    4、少使用全局变量。

    5、尽量不用“硬编码”的方式写程序,同时也尽量避免直接用SQL语句操作数据库。

    3.2减少UI和UI模块之间的互相调用

    窗口之间的迁移逻辑不应该写在窗体的代码中;业务代码之间的互相调用则是比较常见的,比如一个公司的管理系统,财务模块调用人员管理模块的接口,这是很正常的结构。层次之间原则上坚持单向调用。如果存在层次之间的双向调用,程序中的层次划分基本上就名存实亡了。 

     

  • 相关阅读:
    缓存穿透、缓存并发和缓存雪崩笔记
    PHP递归的三种方式
    Yii2 rules 自定义规则
    Yii redis hash散列的使用
    Yii redis set集合的使用
    手动安装 yii2-redis 扩展
    PHP添加redis扩展(windows环境)
    Yii redis list列表的使用
    用hextoraw解决update、delete语句执行慢
    Oracle查看SQL执行计划,分析SQL性能
  • 原文地址:https://www.cnblogs.com/best-hym/p/14634302.html
Copyright © 2011-2022 走看看