测试用例与软件测试基础

一、软件测试基础

软件:简单的理解就是软件是一个集合,包含三个部分:程序代码、文档、数据

软件测试:软件测试就是为了发现错误而审查软件文档、检查软件数据和执行程序代码的过程。其目的在于在软件交付使用前充分发现缺陷并协助相关部门定位、解决缺陷,最后交付一个高质量的软件给用户。软件测试是软件生存周期的一个重要阶段,其主要任务是对被测对象,从初期的需求规格说明书,到最后的系统交付使用,整个过程进行检查、验证,以确保软件质量。

测试目的:基于不同的立场,存在着两种完全不同的测试目的。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。而从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证被测软件已正确地实现了用户的需求,确立人们对软件质量的信心。

Bug:Bug的定义很广泛,在软件使用过程中所出现的任何一个可疑问题,或者导致软件不能符合设计要求或者不能满足消费者需求的问题都是Bug,即使这个Bug在实践中是可行的。有时候,Bug并不是程序错误。例如,软件没有按照一般用户的使用习惯来运行,此时也可以把这个问题看成是该软件的一个Bug。从另外一个方面来理解,Bug就是缺陷、不完美的意思。一切不完美的地方,我们都可以认为其是一个Bug。

二、测试用例

测试用例(Test Case是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

测试用例用到的技术:

(一)白盒技术

白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础设计测试用例。

逻辑覆盖

程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖最有代表性的路径的测试用例。下面分别讨论几种常用的覆盖技术。

语句覆盖

为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。语句覆盖是指设计足够的测试用例,使被测试程序中每个语句至少执行一次。

判定覆盖

判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次,因此判定覆盖也称分支覆盖

条件覆盖

条件覆盖是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。

判定条件覆盖

该覆盖标准指设计足够的测试用例,使得判定表达式的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。

条件组合覆盖

条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。

路径覆盖

路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径。

在实际的逻辑覆盖测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例,以达到路径覆盖测试标准。

循环覆盖

基本路径测试

(二)黑盒技术

等价类划分

⑴划分等价类:

①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类

②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类

③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类

④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类

⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。

⑵确定测试用例:

①为每一个等价类编号。

②设计一个测试用例,使其尽可能多地覆盖尚未被覆盖过的合理等价类。重复这步,直到所有合理等价类被测试用例覆盖。

③设计一个测试用例,使其只覆盖一个不合理等价类。

边界值分析

使用边界值分析方法设计测试用例时一般与等价类划分结合起来。但它不是从一个等价类中任选一个例子作为代表,而是将测试边界情况作为重点目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据。

⑴如果输入条件规定了值的范围,可以选择正好等于边界值的数据作为合理的测试用例,同时还要选择刚好越过边界值的数据作为不合理的测试用例。如输入值的范围是[1,100],可取0,1,100,101等值作为测试数据。

⑵如果输入条件指出了输入数据的个数,则按最大个数、最小个数、比最小个数少1、比最大个数多1等情况分别设计测试用例。如,一个输入文件可包括1--255个记录,则分别设计有1个记录、255个记录,以及0个记录的输入文件的测试用例。

⑶对每个输出条件分别按照以上原则⑴或⑵确定输出值的边界情况。如,一个学生成绩管理系统规定,只能查询95--98级大学生的各科成绩,可以设计测试用例,使得查询范围内的某一届或四届学生的学生成绩,还需设计查询94级、99级学生成绩的测试用例(不合理输出等价类)。

由于输出值的边界不与输入值的边界相对应,所以要检查输出值的边界不一定可能,要产生超出输出值之外的结果也不一定能做到,但必要时还需试一试。

⑷如果程序的规格说明给出的输入或输出域是个有序集合(如顺序文件、线形表、链表等),则应选取集合的第一个元素和最后一个元素作为测试用例。

错误推测

测试程序时,人们可能根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例,这就是错误推测法。

因果图

等价类划分和边界值方法分析方法都只是孤立地考虑各个输入数据的测试功能,而没有考虑多个输入数据的组合引起的错误。

综合策略

每种方法都能设计出一组有用例子,用这组例子容易发现某种类型的错误,但可能不易发现另一类型的错误。因此在实际测试中,联合使用各种测试方法,形成综合策略,通常先用黑盒法设计基本的测试用例,再用白盒法补充一些必要的测试用例。

作用:

指导测试的实施

测试用例主要适用于集成测试系统测试回归测试。在实施测试时测试用例作为测试的标准,测试人员一定要按照测试用例严格按用例项目和测试步骤逐一实施测试。并对测试情况记录在测试用例管理软件中,以便自动生成测试结果文档。

根据测试用例的测试等级,集成测试应测试那些用例,系统测试回归测试又该测试那些用例,在设计测试用例时都已作明确规定,实施测试时测试人员不能随意作变动。

规划测试数据的准备

在我们的实践中测试数据是与测试用例分离的。按照测试用例配套准备一组或若干组测试原始数据,以及标准测试结果。尤其象测试报表之类数据集的正确性,按照测试用例规划准备测试数据是十分必须的。

除正常数据之外,还必须根据测试用例设计大量边缘数据和错误数据。

编写测试脚本的"设计规格说明书"

为提高测试效率,软件测试已大力发展自动测试。自动测试的中心任务是编写测试脚本。如果说软件工程中软件编程必须有设计规格说明书,那么测试脚本的设计规格说明书就是测试用例。

评估测试结果的度量基准

完成测试实施后需要对测试结果进行评估,并且编制测试报告。判断软件测试是否完成、衡量测试质量需要一些量化的结果。例:测试覆盖率是多少、测试合格率是多少、重要测试合格率是多少,等等。以前统计基准是软件模块或功能点,显得过于粗糙。采用测试用例作度量基准更加准确、有效。

分析缺陷的标准

通过收集缺陷,对比测试用例和缺陷数据库,分析确证是漏测还是缺陷复现。漏测反映了测试用例的不完善,应立即补充相应测试用例,最终达到逐步完善软件质量。而已有相应测试用例,则反映实施测试或变更处理存在问题。

三、案例分析

设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能":

(1) 划分等价类并编号,下表等价类划分的结果

输入等价类 有效等价类无效等价类

日期的类型及长度 ①6位数字字符  ②有非数字字符  ③少于6位数字字符

④多于6位数字字符

年份范围 ⑤在1990~2049之间⑥小于1990  ⑦大于2049

月份范围 ⑧在01~12之间⑨等于00  ⑩大于12

(2) 设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:

测试数据 期望结果   覆盖的有效等价类

200211 输入有效    ①、⑤、⑧

(3) 为每一个无效等价类设计一个测试用例,设计结果如下:

测试数据 期望结果   覆盖的无效等价类

95June 无效输入    ②

20036     无效输入    ③

2001006 无效输入 ④

198912 无效输入 ⑥

200401 无效输入 ⑦

200100 无效输入  ⑨

200113 无效输入  ⑩

四、娱乐分享

《树上十只鸟》

(其实这个笑话的就集中的体现出了一种软件测试的思想)

某日,老师在课堂上想考考学生们的智商,就问一个男孩:“树上有十只鸟,开枪打死一只,还剩几只?”

男孩反问:“是无声手枪么?”  “不是.”

“枪声有多大?”  “80~100分贝.”

“那就是说会震的耳朵疼?”  “是.”

“在这个城市里打鸟犯不犯法?”  ‘不犯.”

“您确定那只鸟真的被打死啦?”

“确定.”老师已经不耐烦了,”拜托,你告诉我还剩几只就行了,OK?”  “OK.鸟里有没有聋子?”  “没有.”

“有没有关在笼子里的?”  “没有.”

边上还有没有其他的树,树上还有没有其他鸟?”  “没有.”

“方圆十里呢?”  “就这么一棵树!”

“有没有残疾或饿的飞不动的鸟?”  “没有,都身体倍棒.”

“算不算怀孕肚子里的小鸟?”  “都是公的.”

“都不可能怀孕?”  “???,决不可能.”

“打鸟的人眼里有没有花?保证是十只?”  “没有花,就十只.”

老师脑门上的汗已经流下来了,下课铃响起,但男孩仍继续问:“有没有傻的不怕死的?”   “都怕死.”

“有没有因为情侣被打中,自己留下来的?”  “笨蛋,之前不是说都是公的嘛!”

“同志可不可以啊!”   “????.,性取向都很正常!”

“会不会一枪打死两只?”  “不会.”

“一枪打死三只呢?”  “不会.”  “四只呢?”  “更不会!”

“五只呢?”

“绝对不会!!!”

“那六只总有可能吧?”

“除非你他妈的是猪生的才有可能!”

“?好吧,那么所有的鸟都可以自由活动么?”  “完全可以.”

“它们受到惊吓起飞时会不会惊慌失措而互相撞上?”

“不会,每只鸟都装有卫星导航系统,而且可以自动飞行.”

“恩,如果您的回答没有骗人,”学生满怀信心的回答,“打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,  就一只不剩.”  老师当即倒!

时间: 2024-10-08 22:32:36

测试用例与软件测试基础的相关文章

软件测试基础学习笔记

LR学习笔记 I.         软件测试基础 1.     软件的概念:程序与文档的结合. 2.     软件缺陷的概念:指计算机的硬件.软件系统或应用软件出现的错误,即为BUG. 1)     硬件错误原因:设计错误和硬件部件老化失效 2)     软件错误原因:软件开发企业设计错误引发 3.     软件生命周期的概念:从软件需求的定义.产生直到被废弃的生命周期. II.         软件测试的定义 1.     测试:包含硬件测试和软件测试 2.     测试用例:针对需求规格说明

软件测试基础知识

软件测试基础知识 1.  软件质量与软件测试 软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成过程的文档.数据以及程序进行测试 软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力 2.  软件测试与质量保证 软件测试只是质量保证工作中的一个环节,软件质量保证与软件测试是软件质量工程的两个不同层面的工作: 质量保证:通过预防.检查与改进来保证软件质量,采用全面质量管理和过程改进的原理来开展质量保证工作,主要关注软件质量的检查与测试,主要着眼于软件开发活动

《软件测试基础》读书报告:第四章 输入空间划分

<软件测试基础>读书报告 第四章 输入空间划分 为了更直接地使相同测试需求的值集合是恰好合适,划分输入空间的方式直接的根据输入值的参数来定义输入域.输入参数可能是方法的参数和全局变量,也可能是系统当前的表现状态,或者干脆是用户级给定的一个输入,这都要根据实际情况来划分.总输入域中划分出若干个区域,从这些区域中选出一些值来进行测试. 从参数的域开始,把每个域可能的值划到块里,从块中选取适当的值来组成测试用例的过程就是输入域建模的过程.对于输入与的划分,一般是基于程序相应的某周特性,程序的输入,程

软件测试基础(1)

目录 l 软件测试基础 l 掌握软件测试相关的概念 l 掌握软件生命周期以及各阶段相关的工作 l 掌握测试的对象和原则 l 了解软件开发模型 l 掌握软件测试模型及各模型的特点 l 掌握软件测试的方法和类型 l  了解软件测试质量及测试与QA的关系.区别 测试相关概念 IT( information technology )信息科技和产业的意思 软件:一系列按照特定顺序组织的计算机数据和指令的集合程序+数据+文件 产品:能够供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物

软件测试基础入门知识点

软件测试基础入门知识点 一.行业前景 前言 ? 程序员之间流传着这样一句话:有人喜欢创造世界,他们做了开发工程师,有人喜欢挑毛病,所以他们做了测试工程师. 什么是软件测试 软件测试就是利用手工或测试工具按照测试方案和流程对产品进行功能和性能测试,简单的来说就是为软件做"质检". 软件测试的重要性 ? bug 的经济损失: ? 软件 bug 对我们的生活,工作都会带来毁灭性的破坏.据悉,每年的软件 bug 会让整个市场经济带来近600亿美元的损失! 成立软件测试部门的原因 软件测试能提前

第2章, 软件测试基础

2.1.1,什么是软件测试 软件测试的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估 60%以上的软件错误并不是程序错误,而是分析和设计错误,因此做好软件需求和软件阶段的测试工作就显得非常重要 2.1.2,什么是软件质量 软件质量定义:软件特性的总和,软件满足规定或者潜在用户需求的能力 2..1.3,软件测试与质量保证的区别 质量保证:质量保证的重要工作通过预防.检查与改进来保证软件质量,着重于软件的开发过程.步骤和产物 软件测试:对软件开发的过程产物以及软件进行剖析,软件

软件测试基础知识——测试用例设计方法

软件测试的分类: 1.按软件功能测试分类:基于规格说明的测试(传统黑盒测试.基于规格说明测试).基于控制流的测试(白盒测试) 传统黑盒测试:边界值.等价类.决策表.因果图 白盒测试:语句覆盖.判断覆盖.条件覆盖.MC/DC覆盖.基本路径覆盖. 基于规格说明测试:状态机.UML.Petri网.Z规约 其他测试:冒烟测试.随机测试.错误猜测测试.故障树测试.基于蜕变的测试 2.根据测试阶段分类: 单元测试:对软件中最小的可测单元进行验证,可以是一个函数.一个类.一个类的方法. 集成测试:将单元模块组

软件测试基础知识大全

1.   软件生命周期(SDLC)的六个阶段 1.问题的定义及规划       此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性. 2.需求分析       在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析.需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础."唯一不变的是变化本身.",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行. 3.软

软件测试基础-软件测试分类

  毕业季,校招了很多新人,要对新人进行培训.所以整理一下测试的基础文档,作为备份,适合纯小白,如您不是就可以不继续看了~~ 1.软件测试定义: 软件测试是为了证明程序有错,通过运行程序发现其中存在的问题.程序有错不仅仅包括程序运行时的bug,还包括是否满足用户的需求,是否符合常规使用习惯,效率等等. 2.软件测试分类: 2.1按是否测试代码分: (1)白盒测试:注重于内部结构,又称为结构测试或逻辑驱动测试.需要读写代码,根据程序内部逻辑结构和编码结构设计,准备相应测试数据进行测试. (2)黑盒