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

发表于:2015-5-26 10:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:印记嘟嘟    来源:51Testing软件测试网采编

  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程序按快捷键F1自动调出帮助手册内容。
  *3*易操作性
  易操作性指用户基本不用额外学习即能操作软件,包括多方面的内容。例如:
  #1#常用功能路径不要太深,最好能提供快捷键,且这些快捷键具有普适性(用户已广泛接受),如前面提到的windows程序激活帮助功能的快捷键F1。目前有很多软件采用这种已符合人们的使用习惯的操作。
  #2#最好提供一键返回桌面的功能,这一点苹果的Iphone手机做得比较好,无论用户当前在什么位置,只要按下“返回桌面”主键,立即可退出。
  #3#操作尽量简单,例如软件的安装或升级,按提示点击“下一步”且不要太长的时间或多个选择路径。
  4)效率(Efficiency)
  效率,这里指衡量软件正常运行需要耗费多少时间及物理资源,是性能测试的重点内容。
  *1*时间效率
  时间效率主要指软件系统在各业务场景下完成用户指定的业务请求所需的响应时间。
  例如:我们在互联网上发表博文,点击“提交”后,一般情况都需等待几秒钟,然后自动跳转到博文显示页面,那么此等待时间,我们可以理解为系统响应的时间。
  *2*资源效率
  资源效率主要指软件系统在完成用户指定的业务请求所消耗的系统资源,如CPU占有率、内存占有率、通信带宽占有率、软件内部消息包资源占有率等。例如不同业务功能之间,不同GUI界面相互之间的切换,如果切换过程中有明显的后影,或速度太慢,很可能资源占用方面没有处理好。
  5)可维护性(Maintainability)
  可维护性,衡量对已经完成的软件进行调整需要多大的努力,其又可分为下面四个子属性。
  *1*易分析性
  指软件系统提供辅助手段帮助开发人员分析识别缺陷、失效产生的原因,找出待修复部分的能力。这也是工程实践中很重要的一方面,可以减少缺陷定位的时间,提高开发人员工作效率。采用系统日志记录的方法,如同windows的事件查看器(eventvwr),把软件执行代码的轨迹或某些错误、状态进行记录,是一种常见的方法。
  *2*易改变性
  指软件缺陷的修复容易被实施,这与软件的设计有着密切关系。例如设计上封装性好、高内聚(同层次设计时,一个实体只完成一个功能)、低耦合的代码,为未来可能的变化留有扩充余地,它的易改性会更好。
  *3*稳定性
  指软件系统在长时间连续工作环境下能否正常工作,不出错,无异常情况等。测试人员常用长时间压力测试的方式检验软件的稳定性,稳定性与资源效率有紧密联系,例如内存的慢泄漏,时间越长,系统稳定性越差,内存资源占用越多,最后可能导致系统瘫痪。
  *4*易测试性
  指从测试验证角度,软件存在可测试性的难易程度。例如:UI界面,提示框对话框,按钮响应状态变化等是很容易观察到的,可测试性强;有明确的输入输出数据,尽管此数据对于用户来说可能不容易被看到,但通过某种方法仍 可验证到,可测试性次子。对鉴于系统设计原因,某种用户场景难于验证,测试的条件苛刻,需特定的实验室条件,如高温高压等,这种情况需考虑改变软件内部状 态,通过发布特殊版本进行测试。易测试性作为可维护性的子属性之一,与质量是否存在必然的正向关系呢,即能不能说越容易测试的软件,其质量将越好。从工程 最佳实践来看,这种必然的关系倒并不成立,但反过来是成立的,越难验证的软件,其存在问题的风险将可能成倍增大。
  6)可移植性(Portability)
  可移植性,是衡量软件是否能够方便地部署到不同的运行环境中的能力,它有下面几个特性。
  *1*适应性
  指软件系统无需做任何相应变动就能适应不同运行环境的能力,其中运行环境通常是指操作系统平台、数据库平台、硬件平台等。例如我们在项目常遇到的情况,某系统软件原来运行在windows XP操作系统上,但后来由于Microsoft推出了windows 7,windows 8,应用新系统的用户比比皆是,新用户需要某系统软件能在新平台上正常运行。这种因平台的变化,系统应用软件的适应性在设计之初是需考虑的。
  *2*易安装性
  指平台变化后,成功安装软件的难易程度。有些软件可不作任何变化即可成功部署,有些需作部分变化,如安装过程增加用户选项等。对于软件的安装过程,能尽量考虑用户少参与,多一些自动安装过程会让用户更放心。
  *3*共存性
  指软件系统在公共环境与其共享资源的其他系统共存的能力。这个特性表明我们在测试时不仅需要关注自身软件特性的实现,还要关注本软件是否影响了其他软件的正常功能。
  关于共存性,笔者曾遇一个这样的案例,在应用程序进行输入中文时,只要打开紫光拼音,则软件将自动退出。还有一种是人为的限制,在已知情况下,软件A打开,限制软件B不能运行,有意防患,适合某特殊应用场景。
  *4*易替换性
  指软件系统的升级能力,包括在线升级、打补丁升级等。易替换性相对于嵌入式产品软件系统来说,由于涉及硬件物料的更新换代,如某主控芯片、USB接口芯片的换代,还可能会触发底层驱动的升级。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号