软件测试之-软件质量、软件质量特性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件测试之-软件质量、软件质量特性
1.1 软件质量定义
1)ISO关于质量的定义为:⼀个实体的所有特性,,基于这些特性可以满⾜明显的或隐含的需求。

质量就是实体基于这些特性满⾜需求的程度。

2)质量的定义包含三个要素:实体、特性集合、需求。

对软件测试来说,实体即测试的对象。

实体的特性集合:不同实体,其特性集合不同。

3)软件质量评价的标准:需求,质量和需求对应,需求有三个层次:显式需求、隐式需求、⽤户的实际需求。

4)由以上可以引申出软件质量的3个层次:符合需求规格、符合⽤户显式需求、符合⽤户实际需求。

*1*符合需求规格:符合开发者明确定义的⽬标,是内部质量,即从软件启动到交付⽤户之间产⽣的所有中间产品的质量。

*2*符合⽤户显式需求:符合⽤户明确说明的⽬标,是验收质量。

即⽤户在验收时评价产品的质量。

*3*符合⽤户实际需求:包括⽤户明确说明的和隐含的需求,是使⽤质量,即⽤户在实际使⽤过程中对产品的质量评价。

1.2 软件质量⼤师
1)戴明
是世界著名的质量管理专家,提出戴明质量管理的⼗四项原则,简介易明,称为本世纪全⾯质量管理的重要理论基础。

*戴明质量管理的⼗四项原则*
*1*创造产品与服务改善的恒久⽬的
最⾼管理层必须从短期⽬标的迷途中归返,转回到长远建设的正确⽅向。

也就是把改进产品和服务作为恒久的⽬的,坚持经营,这需要在所有领域加以改⾰和创新。

*2*采纳新的哲学
必须绝对不容忍粗劣的原料,不良的操作,有瑕疵的产品和松散的服务。

*3*停⽌依靠⼤批量的检验来达到质量标准
检验其实是等于准备有次品,检验出来已经是太迟,且成本⾼⽽效益低。

正确的做法,是改良⽣产过程。

*4*废除"价低者得"的做法
价格本⾝并⽆意义,只是相对于质量才有意义。

因此,只有管理当局重新界定原则,采购⼯作才会改变。

公司⼀定要与供应商建⽴长远的关系,并减少供应商的数⽬。

采购部门必须采⽤统计⼯具来判断供应商及其产品的质量。

*5*不断地及永不间断地改进⽣产及服务系统
在每⼀活动中,必须降低浪费和提⾼质量,⽆论是采购、运输、⼯程、⽅法、维修、销售、分销、会计、⼈事、顾客服务及⽣产制造。

*6*建⽴现代的岗位培训⽅法
培训必须是有计划的,且必须是建⽴于可接受的⼯作标准上。

必须使⽤统计⽅法来衡量培训⼯作是否奏效。

*7*建⽴现代的督导⽅法
督导⼈员必须要让⾼层管理知道需要改善的地⽅。

当知道之后,管理当局必须采取⾏动。

*8*驱⾛恐惧⼼理
所有同事必须有胆量去发问,提出问题,表达意见。

*9*打破部门之间的围墙
每⼀部门都不应只顾独善其⾝,⽽需要发挥团队精神。

跨部门的质量圈活动有助于改善设计,服务,质量及成本。

*10*取消对员⼯发出计量化的⽬标
激发员⼯提⾼⽣产率的指标、⼝号、图像、海报都必须废除。

很多配合的改变往往是在⼀般员⼯控制范围之外,因此这些宣传品只会导致反感。

虽然⽆须为员⼯订下可计量的⽬标,但公司本⾝却要有这样的⼀个⽬标:永不间歇地改进。

*11*取消⼯作标准及数量化的定额
定额把焦点放在数量,⽽⾮质量。

计件⼯作制更不好,因为它⿎励制造次品。

*12*消除妨碍基层员⼯⼯作畅顺的因素
任何导致员⼯失去⼯作尊严的因素必须消除,包括不明何为好的⼯作表现。

*13*建⽴严谨的教育及培训计划
由于质量和⽣产⼒的改善会导致部分⼯作岗位数⽬的改变,因此所有员⼯都要不断接受训练及再培训。

⼀切训练都应包括基本统计技巧的运⽤。

*14*创造⼀个每天都推动以上13项的⾼层管理结构。

2)朱兰
建⽴了朱兰学院,⽬前已成为世界上领先的质量管理咨询公司,他对实⾏组织内部质量策划的主要观点包括:
*1*识别客户和客户需求
*2*制定最佳质量⽬标
*3*建⽴质量衡量⽅式
*4*设计策划在运作条件下满⾜质量⽬标的过程
*5*持续增加市场份额
*6*优化价格,降低公司或⼯⼚中的错误率
也提出了质量管理⽅法三部曲:质量策划、质量控制、质量改进。

3)克劳⼠⽐
引发全球质量活动由⽣产制造业扩⼤到⼯商企业领域。

4)⽯川馨
1.3质量铁三⾓
流程(过程)、技术(⼯具)、组织(⼈)三个⽅⾯是影响软件质量的铁三⾓。

1)流程(Flow)
*1*流程指⼀个或⼀系列有规律的⾏动,这些⾏动以确定的⽅式发⽣或执⾏,导致特定结果的出现。

*2*流程的好处
a)使得不可见的软件开发过程变得可见并可控;
b)流程驱动每⼀个研发⼈员的活动,减少了内耗,提⾼了效率。

2)技术
*1*技术的承载者是⼈
a)现有员⼯所承载的技术能⼒
b)公司发展过程中积累下来的技术能⼒
*2*技术从类型上分
a)开发技术
b)测试技术
d)结构⼯艺技术
3)组织
*1*通过技术和流程间接影响质量。

*2*组织对技术的影响
a)能确保具备相应技术能⼒的⼈去从事相应的活动
b)是否重视对技术的积累
4)流程、技术、组织三者之间的关系:
*1*组织是流程成功实施的保障,好的组织结构能够有效的促进流程的实施;
*2*流程对于产品的成功有着关键作⽤,⼀个适合于组织特点和产品特点的流程能够极⼤的提⾼产品开发的效率和产品质量。

*3*对企业来说,⼈是技术的载体,技术发展的⽅向应该与现在的开发流程和规范相结合,这样有利于专业技能的提⾼。

2.1 软件质量模型
ISO9126软件质量模型有6个特性,27个⼦特性组成。

测试⼯作需要依据该模型去测试、评价软件。

涉及到软件⽣命周期的⼏种质量的含义。

1)过程质量
2)内部质量
3)外部质量
4)使⽤质量
2.2 软件质量特性
1)功能性(Functionality)
功能性是指软件是否满⾜了客户的需求,其⼦属性有:
*1*合适性
提供的功能是⽤户所需要的,及⽤户所需要的功能软件系统已提供。

*2*准确性
此特性容易理解,在实际的⼯程应⽤中也常遇到,例如财务类软件系统提供给⽤户的功能是否满⾜⽤户对该功能的精确度要求。

软件,如果不涉及特殊⽤户的需求(如科研机构的特种应有),精度⼀般都容易满⾜。

*3*互操作性
软件系统与⼀个或多个周边系统进⾏信息交互的能⼒。

例如,运⾏在windows操作系统上的应⽤软件,与运⾏在Linux系统上的软件进⾏通信,如:Linux系统是数据的发送⽅,把数据发送到windows系统上,在windows系统上运⾏的应⽤软件需能 *4*安全性
指软件系统保护信息和数据的能⼒。

可以从以下两⽅⾯理解:
#1#防⽌未得到授权的⼈或系统访问相关的信息或数据;
#2#保证得到授权的⼈或系统能正常访问相关的信息或数据。

常见的安全性测试:
#1#⽤户验证:登录密码验证(如windows登录验证,邮箱验证等)、IP地址访问限制等;
#2#⽤户权限管理:验证低级别⽤户是否具有了⾼级别⽤户的权限,各级别⽤户权限都得到了实现。

例如windows 7操作系统,某些应⽤程序的运⾏必须以管理员⾝份才允许;
#3#系统数据的保护:例如对系统⽂件、⽤户密码⽂件等进⾏隐藏,机密⽂件内容进⾏加密、备份;
*5*功能性的依从性
遵循相关的标准(国际标准、国家标准、⾏业标准、企业内部规范等)约定或法规以及类似规定的能⼒。

例如:在中国研发与⽣产的医疗设备如果要在美国上市销售必须经过FDA(Food and Drug Administration美国⾷品及药物管理局)的审核, 2)可靠性(Reliability)
可靠性是指软件是否能够⼀直在⼀个稳定的状态上满⾜可⽤性。

*1*成熟性
软件系统防⽌内部错误扩散⽽导致失效的能⼒。

测试过程中常遇到的例⼦如:模块A更改了某参数,但没考虑到某参数同时被模块B调⽤,由于模块B并未作相关更改,结果使得模块B的相关功能失效。

*2*容错性
软件系统防⽌外部接⼝错误扩散⽽导致系统失效的能⼒。

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

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

例如:我们经常使⽤的windows系统有时会遇到系统不响应的情况,只好按Reset或关掉电源重新开机。

这种情况,当前未保存的数据当然是丢失了,系统重启后能否正常进⼊系统便是易恢复性的⼀种体现。

3)可⽤性(Usability)
可⽤性,是衡量⽤户使⽤软件需要付出多⼤的努⼒的质量属性。

其中,我们经常提到的易⽤性就是可⽤性的⼀个重要⽅⾯,指产品易于学习和使⽤,可减轻记忆负担等,具体可从以下⼏⽅⾯进⾏理解。

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

*2*易学性
易学性是指软件提供相关的辅助⼿段,帮助⽤户学习使⽤它的能⼒。

例如:是否具有在线帮助。

在线帮助常见的有两种,⼀种是跟随功能⽽变的帮助,如Word、Excel中的菜单项⿏标提⽰(tips);另⼀种是在线帮助⼿册,如同windows程序按快 *3*易操作性
易操作性指⽤户基本不⽤额外学习即能操作软件,包括多⽅⾯的内容。

例如:
#1#常⽤功能路径不要太深,最好能提供快捷键,且这些快捷键具有普适性(⽤户已⼴泛接受),如前⾯提到的windows程序激活帮助功能的快捷键F1。

⽬前有很多软件采⽤这种已符合⼈们的使⽤习惯的操作。

#2#最好提供⼀键返回桌⾯的功能,这⼀点苹果的Iphone⼿机做得⽐较好,⽆论⽤户当前在什么位置,只要按下“返回桌⾯”主键,⽴即可退出。

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

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

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

例如:我们在互联⽹上发表博⽂,点击“提交”后,⼀般情况都需等待⼏秒钟,然后⾃动跳转到博⽂显⽰页⾯,那么此等待时间,我们可以理解为系统响应的时间。

*2*资源效率
资源效率主要指软件系统在完成⽤户指定的业务请求所消耗的系统资源,如CPU占有率、内存占有率、通信带宽占有率、软件内部消息包资源占有率等。

例如不同业务功能之间,不同GUI界⾯相互之间的切换,如果切换过程中有明显的后影,或 5)可维护性(Maintainability)
可维护性,衡量对已经完成的软件进⾏调整需要多⼤的努⼒,其⼜可分为下⾯四个⼦属性。

*1*易分析性
指软件系统提供辅助⼿段帮助开发⼈员分析识别缺陷、失效产⽣的原因,找出待修复部分的能⼒。

这也是⼯程实践中很重要的⼀⽅⾯,可以减少缺陷定位的时间,提⾼开发⼈员⼯作效率。

采⽤系统⽇志记录的⽅法,如同windows的事件查看器( *2*易改变性
指软件缺陷的修复容易被实施,这与软件的设计有着密切关系。

例如设计上封装性好、⾼内聚(同层次设计时,⼀个实体只完成⼀个功能)、低耦合的代码,为未来可能的变化留有扩充余地,它的易改性会更好。

*3*稳定性
指软件系统在长时间连续⼯作环境下能否正常⼯作,不出错,⽆异常情况等。

测试⼈员常⽤长时间压⼒测试的⽅式检验软件的稳定性,稳定性与资源效率有紧密联系,例如内存的慢泄漏,时间越长,系统稳定性越差,内存资源占⽤越多,最后可 *4*易测试性
指从测试验证⾓度,软件存在可测试性的难易程度。

例如:UI界⾯,提⽰框对话框,按钮响应状态变化等是很容易观察到的,可测试性强;有明确的输⼊输出数据,尽管此数据对于⽤户来说可能不容易被看到,但通过某种⽅法仍可验证到,可 6)可移植性(Portability)
可移植性,是衡量软件是否能够⽅便地部署到不同的运⾏环境中的能⼒,它有下⾯⼏个特性。

*1*适应性
指软件系统⽆需做任何相应变动就能适应不同运⾏环境的能⼒,其中运⾏环境通常是指操作系统平台、数据库平台、硬件平台等。

例如我们在项⽬常遇到的情况,某系统软件原来运⾏在windows XP操作系统上,但后来由于Microsoft推出了wind *2*易安装性
指平台变化后,成功安装软件的难易程度。

有些软件可不作任何变化即可成功部署,有些需作部分变化,如安装过程增加⽤户选项等。

对于软件的安装过程,能尽量考虑⽤户少参与,多⼀些⾃动安装过程会让⽤户更放⼼。

*3*共存性
指软件系统在公共环境与其共享资源的其他系统共存的能⼒。

这个特性表明我们在测试时不仅需要关注⾃⾝软件特性的实现,还要关注本软件是否影响了其他软件的正常功能。

关于共存性,笔者曾遇⼀个这样的案例,在应⽤程序进⾏输⼊中⽂时,只要打开紫光拼⾳,则软件将⾃动退出。

还有⼀种是⼈为的限制,在已知情况下,软件A打开,限制软件B不能运⾏,有意防患,适合某特殊应⽤场景。

*4*易替换性
指软件系统的升级能⼒,包括在线升级、打补丁升级等。

易替换性相对于嵌⼊式产品软件系统来说,由于涉及硬件物料的更新换代,如某主控芯⽚、USB接⼝芯⽚的换代,还可能会触发底层驱动的升级。

相关文档
最新文档