软件测试之旅,路漫漫,其修远兮,吾将上下而求索。 <<软测之魂>> 作者 擅长测试设计,嵌入式软件测试,测试自动化,测试体系建设,测试管理, 软件配置管理建设,医疗器械软件测试,教育。 新浪微博@Aullyxiao,邮箱aul516@126.com

ISO 9126软件质量模型---工程实践式解读

上一篇 / 下一篇  2012-04-29 23:29:36 / 精华(1) / 置顶(1) / 个人分类:测试方法

“模型”(Model),是所研究的系统、过程、事物或概念的一种表达形式,很自然地,我们可以理解为软件质量模型便是对软件质量评价要素的一种表达形式。在软件工程中,软件质量模型是一个复杂且又抽象的概念,不同行业软件亦有不同要求。理解起来不会像有实物模型的产品质量好理解,例如谈起一辆车的质量,我们马上便会在脑海中浮现出车的模型,然后对车的轮子,离合,刹等组件的质量要求都能说上一二。软件质量是许多质量属性的综合体现,各种质量属性反映了软件质量的方方面面,就像评价一个人的优缺点一样,并没有绝对的唯一答案,它是多维的。我们可以通过改善软件的各种质量属性,从而提高软件的整体质量。对不同质量属性的评估过程,即为软件测试执行的过程。由此看来选择不同的质量属性进行评估决定着测试服务的过程。软件的质量属性,或叫质量要素,与行业特点、技术实现的复杂度等都有关。下面介绍ISO9162标准中提到的软件质量模型,如下图所示。

定义了软件的6大质量属性,其中每一属性其下又包括一些子属性,下面对这些属性进行解释。

一、功能性

功能性(Functionality)是指软件是否满足了客户的需求,结合其子属性,有以下几种特点。

1、 合适性

所提供的功能是用户所需要的,及用户所需要的功能软件系统已提供。笔者觉得此质量属性更适合由前端的需求人员把握,当然测试人员也需根据需求的适用性,以定义测试的重点与优先级。比如在医疗软件系统上如果有一款可供娱乐的游戏,试想医生一边给病人看病一边玩游戏会造成什么后果呢。

2、 准确性

软件系统提供给用户的功能是否满足用户对该功能的精确度要求。此特性好理解,在实际的工程应用中也常遇到,例如财务类软件。如果不涉及特殊用户的需求(如科研机构的特种应有),精度一般都容易满足。

3、 互操作性

软件系统与一个或多个周边系统进行信息交互的能力。例如,运行在windows操作系统上的应用软件,与运行在Linux系统上的软件进行通信,如下图所示。Linux系统是数据的发送方,把数据发送到windows系统上,在windows系统上运行的应用软件需能读出特有数据格式的能力,然后在界面上显示。

4、 安全性

指软件系统保护信息和数据的能力。可以从以下两方面理解:

1)防止未得到授权的人或系统访问相关的信息或数据;

2)保证得到授权的人或系统能正常访问相关的信息或数据。

常见的安全性测试:

1)用户验证:登录密码验证(如windows登录验证,邮箱验证等)、IP地址访问限制等;

2)户权限管理:验证低级别用户是否具有了高级别用户的权限,各级别用户权限都得到了实现。例如windows 7操作系统,某些应用程序的运行必须以管理员身份才允许;

3)系统数据的保护:例如对系统文件、用户密码文件等进行隐藏,机密文件内容进行加密、备份;

5、 功能性的依从性

遵循相关的标准(国际标准、国家标准、行业标准、企业内部规范等)约定或法规以及类似规定的能力。例如:在中国研发与生产的医疗设备如果要在美国上市销售必须经过FDAFood and Drug Administration美国食品及药物管理局)的审核,并通过。细心读者,你会发现每一质量属性都包括其依从性的子属性,由于定义类同,下面不再分开详述。

二、可靠性

可靠性(Reliability)是指软件是否能够一直在一个稳定的状态上满足可用性。

1、 成熟性

软件系统防止内部错误扩散而导致失效的能力。测试过程中常遇到的例子如:模块A更改了某参数,但没考虑到某参数同时被模块B调用,由于模块B并未作相关更改,结果使得模块B的相关功能失效。

2、 容错性

软件系统防止外部接口错误扩散而导致系统失效的能力。

例如:应用软件在操作过程中需操作一个文件,但由于此文件已遭破坏,由于缺少容错处理,结果执行文件操作时,软件崩溃。

3、 易恢复性

系统失效后重新恢复原有功能、性能的能力,包括对原有能力恢复的程度与速度。

典型的例子,我们经常使用的windows系统有时会遇到系统不响应的情况,只好按Reset或关掉电源重新开机。这种情况,当前未保存的数据当然是丢失了,系统重启后能否正常进入系统便是易恢复性的一种体现。

三、可用性

可用性(Usability),衡量用户使用软件需要付出多大的努力的质量属性。其中,我们经常提到的易用性就是可用性的一个重要方面,指产品易于学习和使用,可减轻记忆负担等,具体可从以下几方面进行理解。

1、易理解性

易理解性指用户在使用软件系统的过程中,展示给用户的信息是否准确、清晰、易懂,能帮助用户准确理解系统当前真实的状态,并指导其进一步的操作。

一个典型的例子,如下图是我们都很熟悉的登录界面。

用户在输入用户名与密码后,点击“登录”按钮,弹出下图提示。

提示“用户名或密码不正确”告知用户的是不明确的信息,很容易误导用户。因为用户输入的信息有可能两者都错了,或其中之一错了。用户看到此提示后,只能再尝试输入用户名与密码,造成可能正确的信息重新输错了,错的反以为对了,只好反复验证,最后提示超过尝试次数而告终。

 

2、易学性

易学性是指软件提供相关的辅助手段,帮助用户学习使用它的能力。例如:是否具有在线帮助。在线帮助常见的有两种,一种是跟随功能而变的帮助,如WordExcel中的菜单项鼠标提示(tips);另一种是在线帮助手册,如同windows程序按快捷键F1自动调出帮助手册内容。

3、易操作性

易操作性指用户基本不用额外学习即能操作软件,包括多方面的内容。例如:

1)常用功能路径不要太深,最好能提供快捷键,且这些快捷键具有普适性(用户已广泛接受),如前面提到的windows程序激活帮助功能的快捷键F1。目前有很多软件采用这种已符合人们的使用习惯的操作。

2)最好提供一键返回桌面的功能,这一点苹果Iphone手机做得比较好,无论用户当前在什么位置,只要按下“返回桌面”主键,立即可退出。

3)操作尽量简单,例如软件的安装或升级,按提示点击“下一步”且不要太长的时间或多个选择路径。

4、 吸引性

吸引性指软件具体某些独特的,能让用户眼前一亮的属性,包括GUIGraphical User Interface,图形用户界面),多媒体应用。例如:苹果Iphone 4手机,当短信发送成功时,除了弹出新颖的冒泡状提示,还会伴有声音提示你,且声音可由用户根据喜好自行设置。

四、效率

效率(Efficiency),这里指衡量软件正常运行需要耗费多少时间及物理资源,是性能测试的重点内容。

1、时间效率

时间效率主要指软件系统在各业务场景下完成用户指定的业务请求所需的响应时间。

一个典型的应用案例:我们在互联网上发表博文,点击“提交”后,一般情况都需等待几秒钟(当然一般都有体贴用户的温馨提示啦J),然后自动跳转到博文显示页面,那么此等待时间,我们可以理解为系统响应的时间。

2、资源效率

资源效率主要指软件系统在完成用户指定的业务请求所消耗的系统资源,如CPU占有率、内存占有率、通信带宽占有率、软件内部消息包资源占有率等。例如不同业务功能之间,不同GUI界面相互之间的切换,如果切换过程中有明显的后影,或速度太慢,很可能资源占用方面没有处理好。

五、可维护性

可维护性(Maintainability),衡量对已经完成的软件进行调整需要多大的努力,其又可分为下面四个子属性。

1、 易分析性

指软件系统提供辅助手段帮助开发人员分析识别缺陷、失效产生的原因,找出待修复部分的能力。这也是工程实践中很重要的一方面,可以减少缺陷定位的时间,提高开发人员工作效率。采用系统日志记录的方法,如同windows的事件查看器(eventvwr),把软件执行代码的轨迹或某些错误、状态进行记录,是一种常见的方法。

2、 易改变性

指软件缺陷的修复容易被实施,这与软件的设计有着密切关系。例如设计上封装性好、高内聚(同层次设计时,一个实体只完成一个功能)、低耦合的代码,为未来可能的变化留有扩充余地,它的易改性会更好。

例如:下面关于学生信息定义的代码结构

Struct student{

   Char name ;

   Unsigned int No;

   Char Sex;

   Char Class;

   Int Reserved[20];  //保留

}

其中最后一行,数组Reserved[20]即为日后学生信息扩展而保留的结构成员。

3、 稳定性

指软件系统在长时间连续工作环境下能否正常工作,不出错,无异常情况等。测试人员常用长时间压力测试的方式检验软件的稳定性,稳定性与资源效率有紧密联系,例如内存的慢泄漏,时间越长,系统稳定性越差,内存资源占用越多,最后可能导致系统瘫痪。

4、 易测试性

指从测试验证角度,软件存在可测试性的难易程度。例如:UI界面,提示框对话框,按钮响应状态变化等是很容易观察到的,可测试性强;有明确的输入输出数据,尽管此数据对于用户来说可能不容易被看到,但通过某种方法仍可验证到,可测试性次子。对鉴于系统设计原因,某种用户场景难于验证,测试的条件苛刻,需特定的实验室条件,如高温高压等,这种情况需考虑改变软件内部状态,通过发布特殊版本进行测试。易测试性作为可维护性的子属性之一,与质量是否存在必然的正向关系呢,即能不能说越容易测试的软件,其质量将越好。从工程最佳实践来看,这种必然的关系倒并不成立,但反过来是成立的,越难验证的软件,其存在问题的风险将可能成倍增大。

六、可移植性

可移植性(Portability),是衡量软件是否能够方便地部署到不同的运行环境中的能力,它有下面几个特性。

1、 适应性

指软件系统无需做任何相应变动就能适应不同运行环境的能力,其中运行环境通常是指操作系统平台、数据库平台、硬件平台等。例如我们在项目常遇到的情况,某系统软件原来运行在windows XP操作系统上,但后来由于Microsoft推出了windows 7,windows 8,应用新系统的用户比比皆是,新用户需要某系统软件能在新平台上正常运行。这种因平台的变化,系统应用软件的适应性在设计之初是需考虑的。本书5.2.3“设计需求转换为测试需求失败”的案例,便是一个关于应用软件适应性的案例。

2、 易安装性

指平台变化后,成功安装软件的难易程度。有些软件可不作任何变化即可成功部署,有些需作部分变化,如安装过程增加用户选项等。对于软件的安装过程,能尽量考虑用户少参与,多一些自动安装过程会让用户更放心。

3、 共存性

指软件系统在公共环境与其共享资源的其他系统共存的能力。这个特性表明我们在测试时不仅需要关注自身软件特性的实现,还要关注本软件是否影响了其他软件的正常功能。

关于共存性,笔者曾遇一个这样的案例,在应用程序进行输入中文时,只要打开紫光拼音,则软件将自动退出。还有一种是人为的限制,在已知情况下,软件A打开,限制软件B不能运行,有意防患,适合某特殊应用场景。

4、 易替换性

 指软件系统的升级能力,包括在线升级、打补丁升级等。易替换性相对于嵌入式产品软件系统来说,由于涉及硬件物料的更新换代,如某主控芯片、USB接口芯片的换代,还可能会触发底层驱动的升级。

 


TAG:

anthony.wang的个人空间 引用 删除 anthony.wang   /   2013-05-03 15:25:20
3
 

评分:0

我来说两句

Open Toolbar