更高级别的测试

当程序无法实现最终用户要求的合理功能时,就会发生一个软件错误。

根据这个定义,即使完成了一次非常完美的模块测试,仍然不能保证已经找出了程序的所有错误。因此,要结束整个测试任务,必须进行其他形式的更深入的测试,将这些新型形式的测试称为“更高级别的测试”

软件开发周期的文档说明:

●要求规格说明定义了为什么要开发程序

●目标定义了程序要做什么,以及做得怎样

●外部规格说明了程序对用户的准确表现

●与后续阶段相关的文档越来越详细地规定了程序是如何建立起来的

确定软件开发周期7个阶段包括了信息的沟通,理解和转换,以及大多数的软件错误都源于信息处理中的故障,现在有三个方法来预防和识别这些错误。

  1. 可以是软件开发过程更加精密,以防其中有很多错误。
  2. 引入独立的验证过程,在进入下一阶段前尽可能多地发现错误。
  3. 对不同的阶段的采用不同的测试方法,应该在开发和测试过程之间建立一对一的联系。

●模块测试的目的是是发现程序与规格说明之间的不一致

●功能测试的目的是为了说明程序未能符合其外部规格说明

●系统测试的目的是为了证明软件产品与其初始目标不一致

注:我们讨论功能测试,系统测试,验收测试和安装测试的过程。这里忽略了集成测试。因为集成测试往往不是作为独立测试步骤,而且在增量模块测试中,它是模块测试的隐含部分。

1.功能测试

功能测试是一个试图发现程序与其外部规格说明之间存在的不一致的过程。外部规格说明是一份最终的用户角度对程序行为的精确描述。

功能测试通常是一项黑盒操作,也就是说,依赖早期的模块测试过程来实现理想的白盒逻辑规则。

在功能测试时,需要对规格说明进行说明以获取测试用例集,如等价类划分,边界值分析,因果图分析和错误猜测法。最后应该牢记测试的目的是为了暴露程序的错误以及规格说明不一致之处,而不是为了证明程序符合外部说明。

2.系统测试

系统测试并不是测试整个系统或程序功能的过程。因为有了功能测试这样会显得多余。系统测试有着特定的目的:将系统或程序与其初始目标进行比较,给定这个目标后,隐含两方面的含义:

  1. 系统测试并不局限于系统,如果产品是一个程序,那么系统测试就是一个试图说明程序作为一个整体是如何不满足其目标的过程。
  2. 根据定义,如果产品没有一组书面的,可度量的目标,系统测试将无法进行。

再寻找程序与其目标不一致的过程中,应重点注意那些设计外部规格说明所犯的错误。这也暗示了与功能测试不同,外部规格说明不能作为系统测试用例的基础,否则就破坏了系统测试的目标。另一方面,也不能用文档本身表示测试用例,因为这些文档并不包含对接口的准确描述。

克服方法:利用程序的用户文档,通过分析目标文档来设计系统测试,分析用户文档来阐明测试用例。

目标虽已阐明,但没有确认生成测试用例的方法,仅含一些含糊却有用的指南来指导如何编写测试用例,以证明程序与中的目标文档每一句都存在不一致性。事实上,设计好的系统测试用例比设计系统或程序需要更多的创造性。

2.1能力测试

最明显的系统测试类型是判断目标文档提及的每一项能力是否确实以实现,能力测试的语句是逐条检查目标文档,语句定义了一个“要做什么”,就判断该程序是否满足,这种类型的测试常常在不同的计算机情况下运行,又是人工对目标文档和用户文档进行比较久足够了。

2.2容量测试

是使程序经受大容量数据的检验,例如:编译器可能要处理编译规模非常大的源程序,编译器可能需要处理一个包含上千模块的程序等等。而操作系统的作业队列可能已经达到饱和容量。如果程序需要处理跨越不同的卷,则应产生足够的数据使程序从一个卷转到另一个中。故:容量测试的目的是为了证明程序不能处理目标文档中规定的数据容量

2.3强度测试

强度测试使程序承受高负载或强度的检验。所谓高强度就是指在短时间间隔内达到数据或操作的数量峰值。类似一名打字员,容量测试是判断打字员能否处理大篇幅的稿子,而强度测试是判断打字员能否达到每分钟50个单词的速度。

基于web的应用程序是最长接受强度测试的软件之一,在这里,我们需要确信是应用程序以及硬件能够处理一定容量 的并发用户,但有人会狡辩说,也许数百万人在同一时刻访问该站点,但这是不现实的,我们需要弄清用户群,然后设计一个强度测试,体现出可能访问站点的最大人群的情况。

2.4易用性测试

今天的软件系统,尤其那些广大的商业市场而设计的软件。通常有广泛的人为因素的研究。列举测试中的一些问题:

  1. 每个用户界面是否能够根据最终用户的智力,教育背景和环境进行了调整
  2. 程序输出是否有意义,不模糊且没有计算机杂乱信息
  3. 诊断错误(如错误信息)是否直接。
  4. 整体的用户界面是否在语法,惯例,语义,格式,风格和缩写方面展现出相当程度的概念完整性。
  5. 在准确性极为重要的环境中,如网上银行系统,输入中是否有足够的冗余信息例如:该系统可能会要求输入账号,用户名和PIN来验证访问账号信息是合法用户。
  6. 系统是否包含过多或不大可能遇到的选项?
  7. 对于所有的输入,系统是否返回了某些类型的及时的确认消息。
  8. 程序是否易用。如输入是否区分大小写这一点对用户来说是否清楚。此外,如果需要浏览一系列的菜单操作,返回主菜单的方法是否清楚。

2.5安全型测试

安全性测试是设计测试用例来破坏程序安全性检查的过程。举例来说,我们可以设计测试用例来规避操作系统的内存保护机制,破坏数据库管理系统的数据安全机制。设计这种测试用例的方法之一是研究类似系统中已知的安全问题,然后生成测试用例,尽量暴露被测系统存在的相似问题。

基于web的应用程序常常比绝大多数程序所需的安全测试级别更高,对于电子商务网站尤其如此,尽管已经有了足够多的技术(密码学)允许客户在因特网上安全地完成交易,但不能单纯地依赖技术的应用来确保安全。

2.6性能测试

很多软件都有特定的性能或效率目标,这些特性描述在特定负载和配置环境下程序响应时间和吞吐量,再一次强调,由于系统测试的目的是为了证明程序不能实现其目标,因此,应设计测试用例来说明程序不能满足其性能目标。

2.7存储测试

类似的,软件可能偶尔有存储目标,举例来说,可能描述了程序使用内存和辅存的容量,以及临时文件或溢出文件的大小,应用测试用例来证明这些存储目标没有得到满足。

2.8配置测试

诸如操作系统,等都支持多种硬件配置,包括I/O设备,通信线路,或不同的存储容量。通常可能配置的数量非常大,无法面面俱到,但至少有一种类型的设备,以最大最小的配置来测试程序。如软件本身的配置可忽略掉某些程序组件,或可运行在不同的计算机上,软件所有可能的配置都应测试到。

如今的软件都设计在可运行的多种操作系统环境下,因此如果设计此类程序,应该在该程序面向的所有操作环境中进行测试。

2.9兼容性/配置/转换测试

大多数开发软件并不是全新的,常常为了替换掉某些不完善的软件,往往有着特定的目标,设计现有系统的兼容以及现有系统的转换过程。针对这些目标测试程序,测试用例的目的是为了兼容性目标未被满足,转换过程为生效。将数据从一个系统转换到另一个系统时,应尽力发现这些错误。升级数据库管理就是一个例子。很多不同的方法测试这个过程,但这些方法都高度依赖于所用的数据库系统。

2.10安装测试

有些类型的软件系统安装过程非常复杂,测试安装过程是系统测试中一个重要的部分,对于包在软件安装包的自动安装系统而言,尤其重要,安装如果出现错误,可能会影响用户对软件的成功体验。

2.11可靠性测试

当然,所有类型的测试是为了提高软件的可靠性,但软件的目标中包含了对可靠性的特别描述,就必须专门设计可靠性测试。此种类型的软件证明或测试听起来很复杂,但是对于那些必须维持非常高的正常时间运行时间的系统。重要性日益增加。

2.12可恢复性测试

诸如操作系统,数据库管理系统,和远程处理系统等软件,通常有可恢复性目标,说明系统是如何从错误、硬件失效和数据错误中恢复过来,系统测试的一个目标是为了证明这些恢复机制不能够正常发挥作用。我们可以故意将程序错误步入某个系统中,判断系统是否可以从中恢复。诸如内存错误,I/O错误等硬件错误可以模拟。而如通信中的线路噪音或数据库中的无效指针等数据错误也可以模拟出来。以分析系统的反应。

2.13适用性测试

时间: 2024-10-08 15:20:29

更高级别的测试的相关文章

6.EVE-NG网卡桥接,带您走进更高级的实验

文章列表(关注微信公众号EmulatedLab,及时获取文章以及下载链接) 1.EVE-NG介绍(EVE-NG最好用的模拟器,仿真环境时代来临!) 2.EVE-NG安装过程介绍 3.EVE-NG导入Dynamips和IOL 4.EVE-NG导入QEMU镜像 5.EVE-NG关联SecureCRT,VNC,Wireshark 6.EVE-NG网卡桥接,带您走进更高级的实验 7.EVE-NG硬盘扩容,存储海量镜像 8.EVE-NG定制个人镜像,脚本快速导入 9.EVE-NG容纳H3C.Huawei,

【转】判断浏览器版本是否是ie8以下浏览器,如果是调到提示换更高级版本浏览器页面

转自:判断浏览器版本是否是ie8以下浏览器,如果是调到提示换更高级版本浏览器页面 (function(window) {    var theUA = window.navigator.userAgent.toLowerCase();    if ((theUA.match(/msie\s\d+/) && theUA.match(/msie\s\d+/)[0]) || (theUA.match(/trident\s?\d+/) && theUA.match(/trident

建立一个更高级别的查询 API:正确使用Django ORM 的方式(转)

add by zhj: 本文作者是DabApps公司的技术主管,作者认为在view中直接使用Django提供的ORM查询方法是不好的,我对此并不赞同,可能作者 写这篇文章是给Django的初学者看,所以在说明方法演进时有些罗嗦,至少方法1是没有必要说的. 本文介绍了如何给QuerySet类增加方法属性.作者写本文时,Django1.7还在开发中,没有发布.在Django1.7版本中提供了这个功能, 见https://docs.djangoproject.com/en/dev/releases/1

设置更高级别的关键字

robot framework中除了内置的关键字,以及低级别的用户自定义关键字外,为了使用例更加整洁,我们还可以形成更高级别的关键字 方法如下: 在Keywords里面设置 其中Run Success和Run Fail When Devide Is 0 就是设置的更高级别的关键字由一些低级别的关键字组成,如自定义关键字Divide Calculate 和内置关键字Should Be Equal As Integers和Run Keyword And Expect Error

在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试

原文:在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 在 WPF 开发时,有 Snoop 的帮助,UI 的调试将变得非常轻松.使用 Snoop,能轻松地查看 WPF 中控件的可视化树以及每一个 Visual 节点的各种属性,或者查看数据上下文,或者监听查看事件的引发. 不过,更强大的是支持使用 PowerShell 脚本.这使得它即便 UI 没有给你提供一些入口,你也能通过各种方式查看或者修改 UI. 本文内容 Snoop PowerShell 入口 自带的 Powe

数飞表单引擎系统高级版测试及下载

公司网址:  http://www.soarwell.com   电子信箱: [email protected]下载网址1 : http://www.saas88.com/download/SZOA2015free.rar 软件简介: 数飞OA高级版V6.6主要实现表单自定义.流程自定义.公告文档管理.常用流程审批.资源管理.电子邮件收发.公文审批:可实现Office在线编辑.电子印章:支持手机浏览器访问,支持邮件提醒:可通过微信访问.可支持微信提醒.数飞OA高级版V6.6包含表单引擎.流程自定

【转】建立一个更高级别的查询 API:正确使用Django ORM 的方式

这个就比较深入啦... http://www.oschina.net/translate/higher-level-query-api-django-orm 结论: 在视图和其他高级应用中使用源生的ORM查询代码不是很好的主意.而是用django-model-utils中的PassThroughManager将我们新加的自定义QuerySet API加进你的模型中,这能给你以下好处:     啰嗦代码少,并且更健壮.     增加DRY,增强抽象级别.     将所属的业务逻辑推送至对应的域模型

这样“断舍离”,你会活得更高级

来源:慈怀读书会 断舍离,是近年来比较流行的说法,它提醒我们舍弃那些无意识中膨胀的物欲,呼吁人们扔掉那些不必要的,不再让人怦然心动的东西,留下重要的东西,过简单的生活. 其实,膨胀的何止是物欲,该扔掉的又何止是堆满屋子的东西,过时的思想,守旧的观念,一直坚持的原则,都和成长中的我们格格不入. 如果我们不愿改变,一味因循守旧,那我们失去的可能是财富,可能是朋友,也可能是人生的大好机会. <你坚持的原则其实害了你>这本书讲述的是另外一种断舍离:那些我们曾经忽略的细节和想法,那些我们自以为正确而一直

币圈进化,IFO、IHO玩法更高级,李笑来Candy“糖果”野望未来

如果说"链圈一日,人间一月"是区块链创业者们的感叹,那么"币圈一日,人间一年"则是玩币一族对数字货币的惊叹. 不管是区块链创业者还是数字货币玩家,如果不紧跟节奏,很快就会成为落后分子. 何玺今天要聊的,是当前区块链领域发展十分迅猛.火热的李笑来"糖果(分叉币)". 一.糖果(分叉币)的由来 我们知道,总量有限的比特币背后其实是一套基于算法的技术.随着比特币的不断发展,当前的可挖的比特币数量已经越来越少(目前,比特币全球仅剩420万枚可挖).与比特