上一章节主要学习了”软件测试—外部和内部质量模型(上)”部分的内容,本章节继续讲解“软件测试—外部和内部质量模型(下)”部分的内容。
四、效率(Efficiency)
效率(Efficiency)是指在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。
效率包括三个子特性:时间特性、资源特性、效率依从性。
(1)时间特性(Time Behavior)
时间特性(Time Behavior)是指在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力,即完成用户的某个功能需要的响应时间。在性能测试过程中,时间特性指的就是平均事务响应时间。在使用产品时,用户其实只关注业务的响应时间,其他的根本就不关注,事务响应时间是反应系统性能的直接标准。我们说的平均事务响应时间是指,在进行业务操作时,每个业务都有一个时间,如果很多人同时操作,取这些人操作业务的平均时间就是我们通常说的平均事务响应时间。
(2)资源特性(Resource Utilization)
资源特性(Resource Utilization)是指在规定条件下,软件产品执行其功能时,使用合适的资源数量和类别的能力。
在多用户同时使用系统时,站在用户的角度来说,他们其实只关注时间特性,不会再关注其他的特性,但是对于公司来说,就不仅仅要关注时间特性,还要关注资源特性。所谓的资源当然指的是系统资源,常见的操作系统有Windows、UNIX、Linux 和AIX 等。之所以要关注系统资源使用情况,是因为当系统资源处于临界值时,即使业务的响应时间达到要求,也不一定能保证事务的成功率一定达到标准。事务成功率是指用户在执行业务时,业务是否成功,如果业务执行不成功,那么即使响应时间更快也没有实际意义。
当然更深层次的性能测试是在有限的资源情况下,将性能最大化或者说通过性能测试的方法来验证系统资源是否存在一些瓶颈。
(3)效率依从性(Efficiency Compliance)
效率依从性(Efficiency Compliance)是指软件产品遵循与效率相关的标准或约定的能力。
五、可维护性(Maintainability)
可维护性(Maintainability)是指软件产品可被修改的能力。修改可能包括修正、改进或软件对环境、需求和功能规格说明变化的适应。
可维护性包括五个子特性:易分析性、易改变性、稳定性、易测试性和维护依从性。
(1)易分析性(Analyzability)
易分析性(Analyzability)是指软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。易分析性最终目的是降低定位缺陷的成本,或者说是降低缺陷修复成本,因为定位缺陷是修复缺陷的一个过程。
例如:很多系统都有一个日志系统,用于跟踪系统运作的情况,复杂的系统日志还会分为很多种类型,如一般日志、安全性日志等。这样做的目的很简单,就是如果哪天系统运行出问题了,可以迅速地进行定位,进而找到系统失效的原因。
(2)易改变性(Changeability)
易改变性(Changeability)是指软件产品使指定的修改可以被实现的能力。实现包括编码、设计和文档的更改。设计上封装性好、高内聚(同层次设计时,一个实体只完成一个功能)、低耦合,为未来可能的变化留有扩充余地。这样做的目的是可以更好地提高产品的可扩展性,进而降低缺陷出现的可能性。
(3)稳定性(Stability)
稳定性(Stability)是指软件产品避免由于软件修改而造成意外结果的能力。易改变则较稳定,减少频繁修改而导致的不稳定。例如:代码中有物理含义的数字,一定用宏代替。
上面的三个特性主要是针对开发需要考虑的特性,主要影响软件的内部质量。
(4)易测试性(Testability)
易测试性(Testability)是指软件产品使已修改软件能被确认的能力。软件的可测试性是指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。软件的可测试性通常包含可操作性、可观察性、可控制性、可分解性、简单性、稳定性和易理解性。但在实际软件设计中,通常考虑其可观察性和可控制性。可测试性主要是考虑如何方便测试执行,以及发现问题后如何方便问题定位。在进行可测试性分析之前,通常要分析被测特性,然后根据各被测特性的观察和控制来提出测试人员的可测试性需求。简单地说,就是研究如何打点、打什么点和如何进行流程控制。我们通常使用的方法是在关键的位置(模块输入/输出、错误、关键数据更新等)上执行输出,引入输出过滤,在线修改模块变量等。业界还有不少其他算法,如哨兵算法:通过一个独立的程序周期去读被测试程序P 的状态数据,并转储出来。易测试的目的是降低发现缺陷的成本。
第一:软件可控制。
软件系统提供辅助手段帮助测试工程师控制该系统的运行,实现其测试执行步骤的能力(通过打点、改变内部状态、值等手段)。
第二:可观察。
软件系统提供辅助手段帮助测试工程师获得充分的系统运行信息,以正确判断系统运行状态和测试执行结果的能力。
设计单独的测试模式;
提供单独的测试版本。
测试部(一般指测试系统工程师)应该在需求分析阶段就提出可测试性需求,可测试性需求和软件产品其他需求一起纳入需求包被分析设计并实现。
(5)维护依从性(Maintainability Compliance)
维护依从性(Maintainability Compliance)是指软件产品遵循与维护性相关的标准或约定的能力。
六、可移植性(Portability)
可移植性(Portability)是指软件产品从一种环境迁移到另外一种环境的能力。
可维护性包括五个子特性:适合性、易安装性、共存性、易替换性和可移植依从性。
(1)适合性(Adaptability)
适合性(Adaptability)是指软件产品无须采用有别于为考虑该软件的目的而准备的活动或手段,就可能适应不同指定环境的能力。即软件系统无需做任何相应变动就能适应不同运行环境(操作系统平台、数据库平台、硬件平台等)的能力。关于适合性其实与兼容性很类似。
例如:解决平台无关、可移植性问题的一个常用思路是构造出一个虚拟层,虚拟层将下层细节屏蔽,对上层提供统一接口(如Java、JVM)。
再例如PetShop 项目,如图5-6 所示,为了解决数据库兼容性问题,在数据库层会针对不同的数据库有不同的代码来实现。
图5-6 PetShop 项目
(2)易安装性(Installability)
易安装性(Installability)是指软件产品在指定环境中被安装的能力。如果软件由最终用户安装,那么易安装性就可能导致对适合性与易操作性的影响。一般主流平台执行全部测试用例,非主流平台执行10%测试用例。
安装性的测试主要包括以下几个维度的内容:
整个安装过程测试;
不同环境下的安装;
系统升级测试;
安装的文件存放;
卸载测试;
安装的易用性。
关于安装性的测试在后面的章节中有详细的介绍。
(3)共存性(Co-existence)
共存性(Co-existence)是指软件产品在公共环境中同与其分享公共资源的其他独立软件共存的能力。测试不仅需要关注自身特性的实现,还要关注本软件是否影响了其他软件的正常功能。
例如:杀毒软件赛门铁克“误杀”事件。2007 年5 月18 日,在赛门铁克SAV 2007-5-17 Rev 18版本的病毒定义码中,将Windows XP 操作系统的netapi32.dll 文件和lsasrc.dll 文件判定为Backdoor.Haxdoor 病毒,并进行隔离,导致重启计算机后无法进入系统,以致连安全模式也无法进入,并出现蓝屏、重启等现象。
(4)易替换性(Replaceability)
易替换性(Replaceability)是指软件产品在同样环境下,替代另一个有相同用途的指定软件产品的能力。
典型的有软件升级、浏览器兼容点,在软件升级时需要对新版软件在不同的环境下安装,确定升级后,软件功能不会出现问题。
浏览器兼容还是一个很典型的例子,访问某个网站,正常需要测试几种典型的浏览器不能出现问题,常见的浏览器包括IE、FireFox 和Chrome。易替换性可能包括易安装性和适应性的属性。
(5)可移植依从性(Portability Compliance)
可移植依从性(Portability Compliance)是指软件产品遵循与可移植性相关的标准或约定的能力。
本章节关于“软件测试—外部和内部质量模型(下)”的内容就学习完了,大家觉得有用的话记得每天来这里和小编一起学习涨薪技能哦。