软件测试作业指导书_第1页
软件测试作业指导书_第2页
软件测试作业指导书_第3页
软件测试作业指导书_第4页
软件测试作业指导书_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、测试作业指导书测试作业指导书 基础篇 .5 001什么是软件缺陷(BUG) .5 002影响软件质量的原因 .5 003提高软件质量的方法 .6 004软件测试的目标与定义 .6 005软件测试中的原则 .7 006如何成为一个好的软件测试员 .9 007软件测试的阶段划分 .11 008测试用例的设计方法 .12 01测试用例的特征: .12 02测试用例的设计原则 .12 03等价类划分方法 .12 04边界值分析方法 .14 05因果图方法 .17 06判定表驱动分析方法 .19 07功能图分析方法 .23 08场景设计方法 .24 09测试用例设计综合策略 .24 10测试用例的设计步

2、骤 .25 009软件测试的基本方式 .25 01黑盒测试 .25 02白盒测试 .25 03静态测试 .25 04动态测试 .25 010软件测试的基本方法 .25 01过测试和失败测试 .25 02等价类划分 .26 03数据测试 .26 04状态测试 .26 05其他黑盒测试方法 .28 实践篇 .30 001测试流程图 .30 002测试准备 .31 003如何做好式样理解 .31 004关于测试用例的设计 .31 005测试数据的准备 .32 006测试的实施 .33 007测试过程中的变更管理 .34 008如何填写 QA 票和BUG票 .34 009文档管理工具(CVS)的使用

3、.35 010BUG管理工具(QAMS)的使用.35 基础篇 001什么是软件缺陷(bug) 1 软件未达到产品说明书表明的功能 计算器的产品说明书可能声称它能够准确无误的进行加、减、乘、除运算。如果按下加 号(+)键,结果什么反应也没有,根据该条规则,这就是个软件缺陷。假如得到错误的 答案,根据规则,同样是软件缺陷 2 软件出现了产品说明书指明不会出现的错误 产品说明书可能声称计算机永远不会崩溃、锁死或者停止反应。假如狂敲键盘会使计算 器停止接受输入,根据本条规则,这是一个软件缺陷 3 软件功能超出产品说明书指明范围 假如我们发现除了加减乘除之外计算器还可以求品方根,而这一功能哪儿都没提。干

4、劲 十足的程序员加入这项功能可能因为觉得这是一项创举,根据本条规则,这是软件缺陷。 4 软件未达到产品说明书虽未指出但应达到的目标 这条规则可能让人感觉有些矛盾和奇怪,但是这样是为了抓住产品说明书上遗漏之处。 在测试计算器时,会发现电池没电会导致计算机不正确。没有人会考虑应如何应付这种 情况,使计算机反应正常,而盲目以为电池永远充足了电。测试要持续进行到电池完全 没电,是少要看到电力不足的迹象。产品说明书指出电力不足无法正确计算,但未指出 会怎样,根据本条规则,这是软件缺陷。 5 软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。 本条规则是全面的。软件测试人员是第

5、1 个真正使用软件的人。如果发现某些地方不对 劲,无论什么原因,都要认定为软件缺陷。对于计算器来说,可能觉得按键太小;也许 等号(=)键的位置放得不好按;也许显示屏在亮光下很难以看清,根据本条规则,这些 都是缺陷。 注意:每一个使用过一些软件的人都会对如何改进有一些要求和意见。要编写令所有用户都 喜欢的软件是不可能的。作为软件测试人员,在运用第 5 条测试规则时应记住这一点。最好 能全面地客观评价,做到合情合理。 002影响软件质量的原因 影响软件质量的原因很多,具体地说,主要有以下几点: 1 用户原因 需求不清;二义性 2 产品说明书 没有产品说明书;说明书不够全面、经常更改 3 设计方案

6、与产品说明书是一样的,片面、易变 4 交流不够、交流上有误解或者根本不进行交流 在应用应该做什么或不应该做什么的细节(应用的需求)不清晰的情况下进行开发 5 软件复杂性 图形用户界面(GUI) ,客户/服务器结构,分布式应用,数据通信,超大型关系型数据库 以及庞大的系统规模,使得软件及系统的复杂性呈指数增长,没有现代化开发经验的人 很难理解它。 6 程序设计错误 跟所有的人一样,程序员也会出错 7 时间压力 软件项目的日程表很难做到准确,很多时候需要预计和猜测。当最终期限迫近和关键时 刻到来之际,错误也就跟着来了。 8 自负 自负的人更喜欢说:“没问题” ;“这件事很容易” ;“几个小时我就能

7、拿出来” ,太多不 切 实际的“没问题”结果只能是引入错误。 9 代码文档贫乏 贫乏或者差劲的文档使得代码维护和修改变的异常艰辛,其结果是带来许多错误。事实 上,在许多机构并不鼓励其程序员为代码编写文档,也不鼓励程序员将代码写得清晰和 容易理解,相反他们认为少写文档可以更快的进行编码,无法理解的代码更易于工作的 保密(“写的艰难必定读的痛苦” ) 10.软件开发工具 可视化工具,类库,编译器,脚本工具,等等,他们常常会将自身的错误带到应用软件 中。就像我们所知道的,没有良好的工程化作为基础,使用面向对象的技术只会使项目 变得更复杂。 003提高软件质量的方法 1 软件工程化 2 CMM 能力成

8、熟度模型 Capability Maturity Model for Software 3 软件测试 004软件测试的目标与定义 软件测试的目的决定了如何去组织测试,在项目的不同阶段,测试的目的也不相同。 1 在 UT(Unit Test)阶段,测试的目的是为了尽可能多地找出错误,那么 UT 阶段测试就应该 直接针对软件比较复杂的部分或是以前出错比较多的位置。在此阶段,可以引用 Grenford J. Myers 在The Art of Software Testing一书中的观点: 软件测试是为了发现错误而执行程序的过程; 测试是为了证明程序有错,而不是证明程序无错误。 好的测试方案是极可能

9、发现迄今为止尚未发现的错误的测试方案; 成功的测试是发现了至今为止尚未发现的错误的测试。 这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但 是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目的,查找 不出错误的测试就是没有价值的,事实并非如此。 首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征, 可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮 助我们设计出有针对性地检测方法,改善测试的有效性。 其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。详 细而严谨的可靠

10、性增长模型可以证明这一点。 2 SI 测试阶段的目的是为了给最终用户提供具有一定可信度的质量评价,那么测试就应该 直接针对在实际应用中会经常用到的商业假设。 在这一阶段不仅要验证 UT 测试的结果,检测出软件本身的缺陷,更重要的是要站在用 户的角度找出我们在软件开发过程中的不合理的地方,最终的目的是让用户满意。 对于软件产品的不同角色来说,他们的测试目的也是不同的。 用户:通过测试来暴露错误 开发者:通过测试来证明自己开发的产品不存在错误 测试人员:找出软件缺陷,尽可能早一些,并确保其得以修复 测试从狭义上说,就是:凭借测试用例 Test Case运行程序发现错误的过程。 005软件测试中的原

11、则 1 完全测试程序是不可能的 在软件测试的过程中,想要进行完全测试,找出所有软件缺陷,并使软件臻于完美,实 际上这是不可能的,即使最简单的程序也不行,主要有如下 4 个原因: 输入量太大 输出结果太多 软件实现途径太多 软件说明书没有客观标准。从不同的角度看,软件缺陷的标准不同。 2 软件测试是有风险的行为 正因为完全测试程序是不可能的,那么在测试的过程中必定会对某些你认为是重复 的或者没必要的或者为了节省时间,而将其提出,如果决定不去测试所有的情况,这就 是选择了风险。既然不可能做完全测试,那么这种风险就是无法避免的了。软件测试员 要学会的一个主要原则就是如何把无边无际的可能减少到可以控制

12、的范围,以及如何针 对风险制定做出明智抉择,去粗存精。 3 测试无法显示潜伏的软件缺陷 软件测试工作与防疫员的工作极为相似,可以报告已发现的软件缺陷,却无法报告 潜伏的软件缺陷。你可以进行测试,查找并报告软件缺陷,但是不能保证软件缺陷全部 找到。唯一的方法是继续测试,可能还会找到一些。 4 找到的软件缺陷越多,就说明软件缺陷越多 通常,软件测试员在没有找到软件缺陷之前拼命地琢磨。找到一个之后,就会接二 连三地找到更多。其中的原因是: 程序员怠倦。和我们大家一样,程序员也要休假。编写一天代码还不错,第二天就 会烦躁不安了。一个软件缺陷很可能是泄露附近有更多软件缺陷的信号。 程序员往往犯同样的错误

13、。每个人都有偏好。一个程序员总是反复犯下自己容易犯 的错误。 某些软件缺陷实际上是大灾难的征兆。软件的设计或者体系常常会出现基础问题。 软件测试员可能会发现某些软件缺陷开始似乎毫无关联的,但是最后才知道它们是 由一个极其严重的原因造成的。 但是,如果无论如何也找不出软件缺陷,那么也有可能是软件经过精心编制,确实 存在极少软件缺陷 5 反复使用相同的测试会使软件具有抵抗力 在测试过程中你会发现经过几个回合的测试之后,该发现的软件缺陷都被发现了,在测 试下去也不会有新的发现了。这时,软件测试员,需要采用其他新的方法,对程序的不 同部分进行测试,以找出更多软件缺陷。 6 并非所有的软件缺陷都能修复

14、这要求软件测试员能过进行良好的判断,搞清楚在什么情况下不能追求完美。项目小组 需要对每一个软件缺陷进行取舍,根据风险决定哪些需要修复,哪些不要。 不需要修复软件缺陷的主要原因有: 没有足够的时间。在任何一个项目中,通常是软件功能较多,而代码编写人员和软 件测试人员较少,而且在项目进度中没有为编制和测试留出足够的空间。常常会在 不可更改的交付期限内,必须按时完成软件。 不算真正的软件缺陷。在某些特殊场合,错误理解、测试错误或者说明书变更会把 软件缺陷当作附加功能来对待。 修复的风险太大。修复一个软件缺陷可能导致其他软件缺陷出现;在紧迫的产品发 布进度压力之外,修改软件将冒很大的风险。不去理睬未知

15、软件缺陷,以避免出现 未知新缺陷的做法也许是安全之道。 不值得修复。不常出现的软件缺陷和在不常用功能中出现的软件缺陷可以放过;可 以躲过和用户有办法预防或避免的软件缺陷通常不用修复。这些都要归结为商业风 险决策。 7 要尽早、不断地进行测试 测试是无穷近的,而测试的时间又是有限的,所以我们要尽早地开始测试,尽快地找出 软件缺陷,以便降低修复成本。在几个回合的测试以后,没有再检测出 BUG,不能说程序 没有错误,只能说还没有找到错误,没有人能够找出程序中所有的错误,没有任何软件 产品是完美无错的,我们能做的只是不断地进行测试。 8 测试用例可以帮助我们有效地进行测试 “好的测试用例是极可能发现迄

16、今为止尚未发现的错误的测试用例” ,可见测试用例对在 软件测试中占有很重要的地位,它可以弥补软件测试员在测试时的遗漏、偏差以及经验 上的不足,给我们的测试提供依据。同时测试用例也是作为向用户提供的质量保证的重 要依据之一。 9 程序员应避免测试自己的程序 “自负”是影响程序质量的原因之一,程序员测试的目的是证明程序的无错,基于这种 心理,程序员是很难测试自己程序中的 BUG 的。另一方面,程序员在理解式样的时候难 免会有偏差,如果测试自己的程序是很难找出这些偏差的。 10. 正确和错误的测试 软件测试员测试的目的是要找出软件潜在的错误和缺陷,这里的错误和缺陷不仅指软件 本身的错误,还要检测软件

17、对错误的处理能力,所以我们在测试的时候既要准备正确的 数据也要准备错误的数据,一般来说测试错误的 CASE 比正确的 CASE 要多很多。 11. 群集现象 在测试的过程中,会发现某些画面 BUG 特别多,某些功能会出现 BUG 群集的现象,所以 要重视这些群集现象,并且及时的采取对策。 12. 杜绝随意性 软件测试时一定要有测试依据的,测试人员不能按照自己的想法凭空想象来评判对错。 软件测试员是客户的眼睛,是第一次看到软件的人,代表客户说话,应力求完美。但力 求完美的同时,最好能全面地客观评价,做到合情合理。 006如何成为一个好的软件测试员 现在,大多数公司把软件测试视为技术工程专业工作。

18、他们意识到在项目组中培训软件测试 员,并在开发过程中早期投入工作可以制造出质量更优的软件。 下面是大多数软件测试员应具备的素质: 沟通能力。一名理想的测试者必须能够同测试涉及到的所有人进行沟通,具有与技 术(开发者)和非技术人员(客户,管理人员)的交流能力。既要可以和用户谈得 来,又能同开发人员说得上话,不幸的是这两类人没有共同语言。和用户谈话的重 点必须放在系统可以正确地处理什么和不可以处理什么上。而和开发者谈相同的信 息时,就必须将这些活重新组织以另一种方式表达出来,测试小组的成员必须能够 同等地同用户和开发者沟通。 技术能力。就总体言,开发人员对那些不懂技术的人持一种轻视的态度。一旦测试

19、 小组的某个成员作出了一个错误的断定,那么他们的可信度就会立刻被传扬了出去。 一个测试者必须既明白被测软件系统的概念又要会使用工程中的那些工具。要做到 这一点需要有几年以上的编程经验,前期的开发经验可以帮助对软件开发过程有较 深入的理解,从开发人员的角度正确的评价测试者,简化自动测试工具编程的学习 曲线。 自信心。开发者指责测试者出了错是常有的事,测试者必须对自己的观点有足够的 自信心。如果容许别人对自己指东指西,就不能完成什么更多的事情了。因为开发 和测试的立场不同,面对问题的时候测试人员要有自信坚持自己的观点,而不能轻 信开发人员的说法。 外交能力。当你告诉某人他出了错时,就必须使用一些外

20、交方法。机智老练和外交 手法有助于维护与开发人员的协作关系,测试者在告诉开发者他的软件有错误时, 也同样需要一定的外交手腕。如果采取的方法过于强硬,对测试者来说,在以后和 开发部门的合作方面就相当于“赢了战争却输了战役” 。 幽默感。在遇到狡辩的情况下,一个幽默的批评将是很有帮助的。 很强的记忆力。一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记 忆深处挖掘出来,这一能力在测试过程中的价值是无法衡量的。因为许多新出现的 问题和我们已经发现的问题相差无几。 耐心。一些质量保证工作需要难以置信的耐心。有时你需要花费惊人的时间去分离、 识别和分派一个错误。这个工作是那些坐不住的人无法完成的

21、。 怀疑精神。可以预料,开发者会尽他们最大的努力将所有的错误解释过去。测式者 必须听每个人的说明,但他必须保持怀疑直到他自己看过以后。 自我督促。干测试工作很容易使你变得懒散。只有那些具有自我督促能力的人才能 够使自己每天正常地工作。 洞察力。一个好的测试工程师具有“测试是为了破坏”的观点,捕获用户观点的能 力,强烈的质量追求,对细节的关注能力。应用的高风险区的判断能力以便将有限 的测试针对重点环节。 不懈努力。软件测试员总是不停尝试。他们可能会碰到瞬间即逝或者难以重建的软 件缺陷。他们不会心存侥幸,而是尽一切可能去寻找。 创造性。测试显而易见的事实,那不是软件测试员。他们的工作是相处富有创意

22、甚 至超常的手段来寻找软件缺陷。 追求完美。他们力求完美,但是知道某些无法企及时,不去苛求,而是尽力接近目 标。 判断准确。软件测试员要决定测试内容、测试时间,以及看到的问题是否算作真正 的缺陷。 说服力。软件测试员找出的软件缺陷有是被人认为不重要,不用修复。测试员要善 于表达观点,表明软件缺陷为何必须修复,并通过实际演示力陈观点。 软件测试员的一个基本素质是打破砂锅问到底。他们喜欢找出那些深藏不露的系统冲突。 他们乐于处理最复杂的问题。他们外表上热衷于来回奔忙,追求尽善尽美。 软件测试员的任务是检查和批评同事的工作,挑毛病,公布发现的问题。这样难免与项 目组中的其他人员会产生摩擦,下面是保持

23、小组成员和睦的建议: 早点找出软件缺陷。这是软件测试员的当然任务,但是不容易做到。在三个月之前 而不是在产品即将发布前夕找出严重的软件缺陷,会产生更小的影响,更容易让人 接受。 控制情绪。诚然,软件测试员真心喜爱自己的工作,当发现严重的软件缺陷时乐不 自胜。但是,如果兴冲冲地闯进程序员同事的房间告诉他程序中存在不可救药的软 件缺陷,他不会高兴的。 不要总是报告坏消息。假如意外发现某些代码没有软件缺陷,就大声宣扬。花一些时间找程 序员聊聊天。如果总是报告坏消息,别人就会惟恐避之不及。 007软件测试的阶段划分 1 单体测试 单元测试的对象是软件设计的最小单位模块。单元测试的依据是详细设描述,单元

24、测试 应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试时,系 统内多个模块可以并行地进行测试。在这个测试阶段所发现的往往是编码和详细设计的错误。 2 结合测试 也可以称作“集成测试” ,是组装软件的系统测试技术,按设计要求把通过单元测试的各个 模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误。 3 系统测试 系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能正常 工作并完成所赋予的任务。 系统测试主要有以下的几种类型 : 恢复测试 :主要检查系统的容错能力 。 安全测试 :检查系统对非法侵入的防范能力。 强度测试 :检查程序对异常

25、情况的抵抗能力。 性能测试 :检查测试数据在超负荷环境中运行,程序是否能够承担。 4 回归测试 确定软件修改和变更后仍然满足所有软件要求。回归测试是有选择地重复已有的确认测试, 而不开发新的测试。回归测试需要针对修改或者变更的程序进行验证,并且对该程序修正或 者变更相关的功能点进行验证。回归测试不是一个独立的测试阶段,是贯穿在所有测试阶段 中反复进行的过程。 008测试用例的设计方法 测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。简单的说,测试 用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且达到程序所涉及 的执行结果。 测试用例的设计方法与测试的基本方法

26、有类似之处,测试用例是对软件测试的设计,然后基 于测试用例来进行软件测试的实施。 01测试用例的特征: 1 最有可能抓住错误的 2 不是重复的、多余的 3 一组相似测试用例中最有效的 4 既不是太简单,也不是太复杂 02测试用例的设计原则 1 测试用例的代表性:能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的 和越界的以及极限的输入数据、操作和环境等。 2 测试结果的可判断性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相 应的期望结果。 3 测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。 03等价类划分方法 1. 定义 是把所有可能的输入数据,即程序

27、的输入域划分成若干部分(子集),然后从每一个子集中选 取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方 法。 2.划分等价类: 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是 等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以 把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件 就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有 效等价类和无效等价类。 1) 有效等价类 是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有

28、效等价 类可检验程序是否实现了规格说明中所规定的功能和性能。 2)无效等价类 与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的 输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。 设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经 受意外的考验,这样的测试才能确保软件具有更高的可靠性。 3.划分等价类的标准: 1) 完备测试、避免冗余; 2) 划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整 个集合; 3) 并是整个集合:完备性; 4) 子集互不相交:保证一种形式的无冗余性; 5) 同一

29、类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映 射到相同的执行路径。 4.划分等价类的方法 6) 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个 无效等价类。如:输入值是学生成绩,范围是 0100; 7) 在输入条件规定了输入值的集合或者规定了必须如何的条件的情况下,可确立一个 有效等价类和一个无效等价类; 8) 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。 9) 在规定了输入数据的一组值(假定 n 个),并且程序要对每一个输入值分别处理的情 况下,可确立 n 个有效等价类和一个无效等价类。 例:输入条件说明学历可为:

30、专科、本科、硕士、博士四种之一,则分别取这四种这四 个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。 10) 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和 若干个无效等价类(从不同角度违反规则) ; 11) 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价 类进一步的划分为更小的等价类。 5.设计测试用例 在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无 效等价类,然后从划分出的等价类中按以下三个原则设计测试用例: 1) 为每一个等价类规定一个唯一的编号; 2) 设计一个新的测试用例,使

31、其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步, 直到所有的有效等价类都被覆盖为止; 3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所 有的无效等价类都被覆盖为止。 04边界值分析方法 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法 是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。 1 与等价划分的区别 1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要 作为测试条件。 2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。 2边界值分析方法的考虑: 长期的测试工

32、作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生 在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。 使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界, 就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数 据,而不是选取等价类中的典型值或任意值作为测试数据。 3常见的边界值 1)对 16-bit 的整数而言 32767 和 -32768 是边界 2)屏幕上光标在最左上、最右下位置 3)报表的第一行和最后一行 4)数组元素的第一个和最后一个 5)循环的第 0 次、第 1 次和倒数第 2 次、

33、最后一次 4边界值分析 1)边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分 的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。 2)等价类划分: I.可以考虑作出如下划分: a、 输入 (i)=0 b、 输出 (a)=0 和 (b) Error II.测试用例有两个: a、输入 4,输出 2。对应于 (ii) 和 (a) 。 c、 输入-10,输出 0 和错误提示。对应于 (i) 和 (b) 。 3) 边界值分析: 划分(ii)的边界为 0 和最大正实数;划分(i)的边界为最小负实数和 0。由此得到以下 测试用例: a、输入 最小负实数 b、输入 绝对值

34、很小的负数 c、输入 0 d、输入 绝对值很小的正数 e、输入 最大正实数 4) 通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、重量、大 小、速度、方位、尺寸、空间等。 5) 相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最 高/最低、 最短/最长、 空/满等情况下。 6)利用边界值作为测试数据 项边界值测试用例的设计思路 字符 起始-1 个字 符/结束+1 个 字符 假设一个文本输入区域允许输入 1 个到 255 个 字符,输入 1 个和 255 个字符作为有效等价类;输入 0 个和 256 个字符 作为无效等价类,这几个数值都属于边界条件值

35、。 数值 最小值-1/最 大值+1 假设某软件的数据输入域要求输入 5 位的数据值,可以使 用 10000 作为最小值、99999 作为最大值;然后使用刚好小 于 5 位和大于 5 位的 数值来作为边界条件。 空间 小于空余空 间一点/大于 满空间一点 例如在用 U 盘存储数据时,使用比剩余磁盘空间大一点 (几 KB)的文件作为边界条件。 7)内部边界值分析: 在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的 规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过 程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确

36、实 属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。 内部边界值条件主要有下面几种: a)数值的边界值检验:计算机是基于二进制进行工作的,因此,软件的任何数值运算都有 一定的范围限制。 项范围或值 位(bit)0 或 1 字节(byte) 0 255 字(word)065535(单字)或 0(双字) 千(K) 1024 兆(M) 吉(G) b)字符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中 ASCII 和 Unicode 是常见的编码方式。下表中列出了一些常用字符对应的 ASCII 码值。 字符ASCII 码值字符ASCII 码值 空 (null) 0A65 空格

37、 (space) 32a97 斜杠 ( / ) 47Z90 048z122 冒号 ( : ) 58 单引号 ( ) 96 64 c)其它边界值检验 5.基于边界值分析方法选择测试用例的原则 1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范 围边界的值作为测试输入数据。 例如,如果程序的规格说明中规定:重量在 10 公斤至 50 公斤范围内的邮件,其邮费计算 公式为。作为测试用例,我们应取 10 及 50,还应取 10.01,49.99,9.99 及 50.01 等。 2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多 一的数作

38、为测试数据。 比如,一个输入文件应包括 1255 个记录,则测试用例可取 1 和 255,还应取 0 及 256 等。 3)将规则 1)和 2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。 例如,某程序的规格说明要求计算出每月保险金扣除额为 0 至 1165.25 元,其测试用例 可取 0.00 及 1165.24、还可取一 0.01 及 116526 等。 再如一程序属于情报检索系统,要求每次最少显示 1 条、最多显示 4 条情报摘要,这时 我们应考虑的测试用例包括 1 和 4,还应包括 0 和 5 等。 4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的

39、第一个元素和最 后一个元素作为测试用例。 5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测 试用例。 6)分析规格说明,找出其它可能的边界条件。 错误推测法 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方 法。 1错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。 1) 例如, 输入数据和输出数据为 0 的情况;输入表格为空格或输入表格只有一行。 这些 都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。 2) 例如,前面例子中成绩报告的程序,采用错误推测法还可补充设

40、计一些测试用例: I.程序是否把空格作为回答 II.在回答记录中混有标准答案记录 III. 除了标题记录外,还有一些的记录最后一个字符即不是 2 也不是 3 IV.有两个学生的学号相同 V.试题数是负数。 3) 再如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特 别测试的情况: I.输入的线性表为空表; II.表中只含有一个元素; III. 输入表中所有元素已排好序; IV. 输入表已按逆序排好; V. 输入表中部分或全部元素相同 05因果图方法 是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程 序输入条件的各种组合情况。 1因果图法产生的

41、背景: 等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、 输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但 多个输入条件组合起来可能出错的情况却被忽视了。 如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须 考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设 计,这就需要利用因果图(逻辑模型) 。 2因果图介绍 1) 4 种符号分别表示了规格说明中向 4 种因果关系。 2) 因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原 因) ,右结点表示输出状态

42、(或称结果) 。 3) Ci 表示原因,通常置于图的左部;ei 表示结果,通常在图的右部。Ci 和 ei 均可取值 0 或 1,0 表示某状态不出现,1 表示某状态出现。 3因果图概念 1) 关系 恒等:若 ci 是 1,则 ei 也是 1;否则 ei 为 0。 非:若 ci 是 1,则 ei 是 0;否则 ei 是 1。 或:若 c1 或 c2 或 c3 是 1,则 ei 是 1;否则 ei 为 0。 “或”可有任意个输入。 与:若 c1 和 c2 都是 1,则 ei 为 1;否则 ei 为 0。 “与”也可有任意个输入。 2) 约束 输入状态相互之间还可能存在某些依赖关系,称为约束。例如,

43、 某些输入条件本身不可能 同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。 A.输入条件的约束有以下 4 类: E 约束(异):a 和 b 中至多有一个可能为 1,即 a 和 b 不能同时为 1。 I 约束(或):a、b 和 c 中至少有一个必须是 1,即 a、b 和 c 不能同时为 0。 O 约束(唯一) ;a 和 b 必须有一个,且仅有 1 个为 1。 R 约束(要求):a 是 1 时,b 必须是 1,即不可能 a 是 1 时 b 是 0。 B.输出条件约束类型 输出条件的约束只有 M 约束(强制):若结果 a 是 1,则结果 b 强制为 0。 4. 采用因果图

44、法设计测试用例的步骤: 1)分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果 (即输出条件), 并给每个原因和结果赋予一个标识符。 2)分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关系, 根据这些关系,画出因果图。 3)由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不可能出现,为 表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。 4)把因果图转换为判定表。 5)把判定表的每一列拿出来作为依据,设计测试用例。 06判定表驱动分析方法 判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。 1判定表的优点

45、 能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定 表能够设计出完整的测试用例集合。 在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻 辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。 2.“阅读指南”判定表 12345678 觉得疲倦? YYYYNNNN 感兴趣吗? YYNNYYNN 问 题 糊涂吗? YNYNYNYN 重读 继续 跳下一章 建 议 休息 3. 判定表通常由四个部分组成如下图所示。 1)条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关 紧要。 2)动作桩(Ac

46、tion Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约 束。 3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。 4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。 4.规则及规则合并 1)规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿 条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条 规则,既条件项和动作项有多少列。 2)化简:就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着极为 相似的关系。 5.规则及规则合

47、并举例 1)如下图左端,两规则动作项一样,条件项类似,在 1、2 条件项分别取 Y、N 时,无论条 件 3 取何值,都执行同一操作。即要执行的动作与条件 3 无关。于是可合并。 “”表示与 取值无关。 2)与上类似,下图中,无关条件项“”可包含其他条件项取值,具有相同动作的规则可 合并。 3)化简后的读书指南判定表 1234 你觉得疲倦吗? -YN 你对内容感兴趣吗? YYNN 问 题 书中内容使你胡涂吗? YN- 请回到本章开头重读 x 继续读下去 X 跳到下一章去读 x 建 议 停止阅读,请休息 x 6.判定表的建立步骤:(根据软件规格说明) 1)确定规则的个数.假如有 n 个条件。每个条

48、件有两个取值(0,1),故有 2n 种规则。 2)列出所有的条件桩和动作桩。 3)填入条件项。 4)填入动作项。等到初始判定表。 5)简化.合并相似规则(相同动作) 。 07功能图分析方法 一个程序的功能说明通常由动态说明和静态说明组成.动态说明描述了输入数据的次序或转 移的次序.静态说明描述了输入条件与输出条件之间的对应关系.对于较复杂的程序,由于存 在大量的组合情况,因此,仅用静态说明组成的规格说明对于测试来说往往是不够的.必须用 动态说明来补充功能说明.功能图方法是用功能图 FD 形式化地表示程序的功能说明,并机械 地生成功能图的测试用例. 功能图模型由状态迁移图和逻辑功能模型构成.状态

49、迁移图用于 表示输入数据序列以及相应的输出数据.在状态迁移图中,由输入数据和当前状态决定输出 数据和后续状态.逻辑功能模型用于表示在状态中输入条件和输出条件之间的对应关系.逻 辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定.测试用例则是由测试中经 过的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成.功能图方法 其实是是一种黑盒白盒混合用例设计方法。 (功能图方法中,要用到逻辑覆盖和路径测试的概念和方法,其属白盒测试方法中 的内容. 逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计方法.该方法要求测试人员对程序 的逻辑结构有清楚的了解.由于覆盖测试的目标不同,逻辑覆

50、盖可分为:语句覆盖,判定覆盖, 判定-条件覆盖,条件组合覆盖及路径覆盖.下面我们指的逻辑覆盖和路径是功能或系统水平 上的,以区别与白盒测试中的程序内部的.) 1.功能图 功能图由状态迁移图和布尔函数组成.状态迁移图用状态和迁移来描述.一个状态指出数据 输入的位置(或时间),而迁移则指明状态的改变.同时要依靠判定表或因果图表示的逻辑 功能. 2.测试用例生成方法 将节点代替状态,用弧线代替迁移,则状态迁移图就可转化成一个程序的控制流程图形式.问 题就转化为程序的路径测试问题(如白盒测试)问题了. 3.测试用例生成规则 为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起

51、 来,从功能图生成实用的测试用例,须定义下面的规则.在一个结构化的状态迁移(SST)中, 定义三种形式的循环:顺序,选择和重复.但分辨一个状态迁移中的所有循环是有困难的. 4.从功能图生成测试用例的过程 1)生成局部测试用例:在每个状态中,从因果图生成局部测试用例.局部测试用例由原因值 (输入数据)组合与对应的结果值(输出数据或状态)构成。 2)测试路径生成:利用上面的规则(三种)生成从初始状态到最后状态的测试路径。 3) 测试用例合成:合成测试路径与功能图中每个状态中的局部测试用例.结果是初始状态 到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。 08场景设计方法 现在

52、的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一 事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入到 软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例, 同时使测试用例更容易理解和执行。 基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直 黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可 能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流 1 和 3) ;也 可能起源于另一个备选流(如备选流 2) ,或者终止用例而不再重新加入到某个流(如备选 流 2 和 4) 。 09测试用例设计综合策略 1)在任何情况下都必须使用边界值分析方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论