软件测试的W模型,就要求测试与开发同步,在开发设计需求设计说明书的时候就开始测试流程,一般情况下,讨论需求设计的时候需要测试主管或者组员的参与,了解这个项目设计的总体情况。事实上,测试用例的编写一般是在需求设计说明书定下来之后才真正的开始的。因为测试用例的内容要以需求设计说明书为依据,设计说明书上没体现的功能,不需要在测试用例中体现。编写测试用例(这里指功能测试用例的编写),首先要做的就是设计测试用例的模板。每个公司都有适合自己公司用例编写的模板,各有各的特点。测试用例的格式包括,测试用例摘要、测试用例需求编号(一个需求设计说明书可以分好几个用例编写)、编写用例的日期、编写人员、编写日期、前置条件、准备数据等等。格式没有固定的要求,可以根据自己测试用例设计的思路,对测试用例的格式作相应的改变。下面以一个登陆窗口为例,说说我设计登陆界面的思路和方法。我把这个测试用例分为三层结构,表单测试、逻辑判断、业务流程。第一层,表单测试为最底层(最基础的)。这部分的测试用例是对登陆窗口这个界面的输入框、按钮功能、界面等最基本功能的测试。一般来说登陆用户名和登陆用户密码是输入框的形式体现,那么,我们需要的是针对这两个输入框进行功能的测试。这时,我们只要考虑这个输入框的功能,而不需要考虑业务方面的内容。这样,我们考虑就是这个输入框的长度限制是多少?能否输入特殊字符?能否输入全角字符?当然,登陆窗口还有其他按钮,例如登陆按钮、退出按钮、界面设计等,这一层的测试用例只对他们最简单的功能的测试。我觉得这一层的测试用例对新开发项目很重要,也必须执行,因为这些是最基本的功能保证,当项目进入维护阶段后,如果没有修改就不需要执行这部分的测试了或者说把这层的用例优先级置为最低,时间不充足的情况就不用去执行。第二层,逻辑判断层。根据需求的设计,各功能之间的简单逻辑联系。以登陆窗口为例,账号登录,账号和密码必须对应才能登录,否则登录失败。根据这一点,我们就可以从这个要求设计这一层测试用例。例如,账号和密码不一致时;账号为空时;密码为空时;账号密码对应时等等情况。输入这些情况时,程序是作怎么样的逻辑控制的?控制是否正确?是否有相应的提示信息?我觉得,这一层的用例时最常规的一层,平时使用这个软件用经常碰到的一些情况,在常规测试或修改这部分的功能之后,这一部分的测试用例也必须执行。第三层,业务流程层。这部分不关心软件的本身的基本功能,而是关心这个软件的业务有没有实现,不同的需求就有不同的业务需求。以登陆窗口为例,就可能有不同的需求,可能用户要求停用的账号能够登录系统(可能要求登录后不允许进行其他 *** 作),也可能用户直接要求停用的用户账号不准登录系统。根据不同的业务需求,就有不同的业务流程。这样这层的测试用例,我们就只要考虑业务需求,仍然以登录窗口为例,我们就只要考虑删除的用户能否登录?停用的用户能否登录?超级用户是如何登录的?普通用户是何种方式登录的?简单的说,这层的用例只描述业务流程,不关心具体这个业务是怎么实现的,执行这部分用例时,不要考虑哪个输入框控制了多少长度,能否输入空格等其他功能,因为这部分的测试需要基于上面两层的测试用例都已经测试通过了,所以在项目维护阶段或者说时间很紧迫的阶段,我们只需要执行这部分的用例,保证业务能够通畅的完成。其实个人觉得在执行这部分用例时,对包含了对基本功能的测试,一些明显的问题应该能被发现,虽然严格来说测试覆盖率很低,但是基本能达到要求。这三层的组合起来才是一个完整的测试用例。这是我个人对测试用例设计的一个思路和方法。真正设计这个测试用例的时候,可能会使用到黑盒测试用例的方法,例如等价类划分、边界值分析、错误猜测法(主要是个人经验)、正交分解等方法针对具体情况设计测试用例。分层测试用例的思路主要来自对自动测试实现的考虑。因为我觉得,如果需要实现自动化测试就必须对测试用例进行细分,划分得越细就越有利于自动化的实现。以上三层的划分也并不是很全面,需要在实践中不断完善,例如可以增加对数据库的部分功能的数据校验的分析。总之,测试用例写的细致、全面、步骤清晰,那么无论是用手工测试的方法还是用自动化测试的方法实现,只要能完整的跑完整个测试用例,就达到了测试的目标了。
什么是测试用例
测试用例也叫测试案例,是在执行测试之前由测试人员编写的指导测试过程的重要文档,主要包括:用例编号、测试目的、测试步骤、预期结果等
注意:不同公司使用的用例模板可能存在差异,但都大同小异
为什么要写测试用例
1、防止测试点的遗漏,让测试覆盖的更全面
2、方便做版本的回归测试
3、监督测试过程,评估结果
4、提高测试效率,避免盲目测试
5、缩短周期,比如当版本更新或升级时,只需修正少部分测试用例即可,用例资源可以做到重复使用
测试用例编写依据
1、业务需求文档或需求规格说明书
2、开发文档,比如概要设计文档、详细设计文档
3、参考已开发出来的程序,即一边对照程序+需求文档,一边写测试用例
4、与开发人员、需求人员、客户进行沟通确认
什么是好的测试用例
1、用例覆盖率最大化:好的测试用例是完整的用例集合,能够完全覆盖测试需求
2、测试数据的准确性:等价类划分准确,每个等价类范围的数据,测试效果一致
3、测试数据的全面性:保证所有可能的边界值和边界条件涵盖在内,且正确识别
设计测试用例的常见方法
1、等价类划分法
2、边界值分析法
3、错误推测法
4、因果图法
5、判定表法
6、正交排列法
7、功能图分析法
8、场景法等
其中,等价类划分法、边界值法、错误推测法是平时工作中最常用的方法,也是设计好一个测试用例的装备武器,本节课主讲等价类划分法和边界值分析法。
方法一:等价类划分法
将所有可能的输入数据划分为若干子集,从每一个子集中,挑选任意输入数据,测试效果是一样的。那么这样的子集就是一个等价类。
比如有一个需求是:某输入框只能输入-99(含)至99(含)之间的整数,且不能为空
有效等价类(有效数据)可划分为:
-99至0之间的任意整数
0至99之间的任意整数
无效等价类(无效数据)可划分为:
小于-99的整数
大于99的整数
为空的情况
非整数的情况(浮点数、字母、特殊字符、中文字符)
如下图:
方法二:边界值分析法
对输入或输出的边界值进行测试的一种黑盒测试方法,即选取边界值进行测试。因为测试数据的边界值在程序中最容易出错,所以边界值应该重点测试。
还是以上面需求为例:某输入框只能输入-99(含)至99(含)之间的整数,且不能为空
有效边界值包括:
-99(最小边界值)
-98(有效最小次边界值)
-1(边界值)
0(边界值)
1(边界值)
98(有效最大次边界值)
99(最大边界值)
无效边界值包括:
-100(无效最小次边界值)
100(无效最大次边界值)
备注:测试过程中,只要是需要输入数据的地方,就可以使用等价类划分法和边界值分析法,这两个方法一般是搭配使用的。
方法三:错误推测法
基于对被测软件系统的理解、过往经验以及个人直觉,推测出软件可能存在的缺陷,从而有针对性地设计测试用例的方法。
即错误的 *** 作,比如输入输出数据为0或空格等容易错误的情况。将其作为测试用例来执行。
等价类划分
2 边界值:应选取正好等于、刚刚大于、刚刚小于边界值作为测试数据3 错误推测法:进行错误的 *** 作,验证程序是否对出错的场 景和情况有应对能力。4 因果图法/判定表法:适合于检查程序输入条件的各种组合情况。5 场景法:场景描述的业务流程 基本流:主要是功能的正常 *** 作流程 分支流:需要程序做非法判断处理
1测试用例的定义
测试用例就是设计一种情况,软件程序在这种情况下,能够正常运行且达到程序所设计的运行结果。如果软件程序在这种情况下不能正常运行且反复出现这种问题,则可以判定软件有缺陷,可以记录在缺陷跟踪系统中,待问题修复,新版本部署,软件测试工程师利用同一个用例来回归测试这个问题,确保问题被修复。
2 测试用例设计方法
(1)等价类划分法
(2)边界值分析法
(3)因果图法
(4)错误推荐法
(5)判定表法
(6)正交试验法
(7)功能图法
(8)场景法
3 测试用例编写
测试用例格式:用例编号、所属模块、用例名称、前置条件、用例步骤、预期结果、实际结果、编写人员、编写时间
0 文档介绍
提示:请用户根据项目的实际测试状况,裁剪本测试用例模板。
01 文档目的
02 文档范围
03 读者对象
04 参考文献
提示: 列出本文档的所有参考文献(可以是非正式出版物),格式如下:
[ 标识符 ] 作者,文献名称,出版单位(或归属单位),日期
例如:
[ AAA ] 作者,《立项建议书》,机构名称,日期
[ SPP-PROC-ST ] SEPG,系统测试规范,机构名称,日期
05 术语与缩写解释
缩写、术语 解 释
SPP精简并行过程,Simplified Parallel Process
…
1 接口-路径测试用例
1 1 被测试对象(单元)的介绍
12 测试范围与目的
1 3 测试环境与测试辅助工具的描述
14 测试驱动程序的设计
15 接口测试用例
接口A的函数原型
输入/动作期望的输出/相应实际情况
典型值…
边界值…
异常值…
接口B的函数原型
输入/动作期望的输出/相应实际情况
典型值…
边界值…
异常值…
…
16 路径测试的检查表
检查项 结论
数据类型问题
(1)变量的数据类型有错误吗?
(2)存在不同数据类型的赋值吗?
(3)存在不同数据类型的比较吗?
变量值问题
(1)变量的初始化或缺省值有错误吗?
(2)变量发生上溢或下溢吗?
(3)变量的精度不够吗?
逻辑判断问题
(1)由于精度原因导致比较无效吗?
(2)表达式中的优先级有误吗?
(3)逻辑判断结果颠倒吗?
循环问题
(1)循环终止条件不正确吗?
(2)无法正常终止(死循环)吗?
(3)错误地修改循环变量吗?
(4)存在误差累积吗?
内存问题
(1)内存没有被正确地初始化却被使用吗?
(2)内存被释放后却继续被使用吗?
(3)内存泄漏吗?
(4)内存越界吗?
(5)出现野指针吗?
文件I/O问题
(1)对不存在的或者错误的文件进行 *** 作吗?
(2)文件以不正确的方式打开吗?
(3)文件结束判断不正确吗?
(4)没有正确地关闭文件吗?
错误处理问题
(1)忘记进行错误处理吗?
(2)错误处理程序块一直没有机会被运行?
(3)错误处理程序块本身就有毛病吗?如报告的错误与实际错误不一致,处理方式不正确等等。
(4)错误处理程序块是“马后炮”吗?如在被它被调用之前软件已经出错。
…
2 功能测试用例
2 1 被测试对象的介绍
2 2 测试范围与目的
2 3 测试环境与测试辅助工具的描述
2 4 测试驱动程序的设计
2 5 功能测试用例
功能A描述
用例目的
前提条件
输入/动作期望的输出/相应实际情况
示例:典型值…
示例:边界值…
示例:异常值…
功能B描述
用例目的
前提条件
输入/动作期望的输出/相应实际情况
……
3 健壮性测试用例
3 1 被测试对象的介绍
3 2 测试范围与目的
3 3 测试环境与测试辅助工具的描述
3 4 测试驱动程序的设计
3 5 容错能力 / 恢复能力测试用例
异常输入/动作容错能力/恢复能力造成的危害、损失
示例:错误的数据类型…
示例:定义域外的值…
示例:错误的 *** 作顺序…
示例:异常中断通信…
示例:异常关闭某个功能…
示例:负荷超出了极限…
4 性能测试用例
4 1 被测试对象的介绍
4 2 测试范围与目的
4 3 测试环境与测试辅助工具的描述
4 4 测试驱动程序的设计
4 5 性能测试用例
性能A描述
用例目的
前提条件
输入数据期望的性能(平均值)实际性能(平均值)
性能B描述
用例目的
前提条件
输入数据期望的性能(平均值)实际性能(平均值)
……
5 图形用户界面测试用例
5 1 被测试对象的介绍
5 2 测试范围与目的
5 3 测试环境与测试辅助工具的描述
5 4 测试驱动程序的设计
5 5 测试人员分类
类别特征
A类
B类
……
56 用户界面测试的检查表
检查项测试人员的类别及其评价
窗口切换、移动、改变大小时正常吗?
各种界面元素的文字正确吗?(如标题、提示等)
各种界面元素的状态正确吗?(如有效、无效、选中等状态)
各种界面元素支持键盘 *** 作吗?
各种界面元素支持鼠标 *** 作吗?
对话框中的缺省焦点正确吗?
数据项能正确回显吗?
对于常用的功能,用户能否不必阅读手册就能使用?
执行有风险的 *** 作时,有“确认”、“放弃”等提示吗?
*** 作顺序合理吗?
有联机帮助吗?
各种界面元素的布局合理吗?美观吗?
各种界面元素的颜色协调吗?
各种界面元素的形状美观吗?
字体美观吗?
图标直观吗?
…
6 信息安全性测试用例
6 1 被测试对象的介绍
6 2 测试范围与目的
6 3 测试环境与测试辅助工具的描述
6 4 测试驱动程序的设计
6 5 信息安全性测试用例
假想目标A
前提条件
非法入侵手段是否实现目标代价-利益分析
……
假想目标B
前提条件
非法入侵手段是否实现目标代价-利益分析
……
7 压力测试用例
7 1 被测试对象的介绍
7 2 测试范围与目的
7 3 测试环境与测试辅助工具的描述
7 4 测试驱动程序的设计
7 5 压力测试用例
极限名称A 例如“最大并发用户数量”
前提条件
输入/动作输出/响应是否能正常运行
例如10个用户并发 *** 作
例如20个用户并发 *** 作
…
极限名称B
前提条件
输入/动作输出/响应是否能正常运行
…
8 可靠性测试用例
8 1 被测试对象的介绍
8 2 测试范围与目的
8 3 测试环境与测试辅助工具的描述
8 4 测试驱动程序的设计
8 5 可靠性测试用例
任务A描述
连续运行时间
故障发生的时刻故障描述
……
统计分析
任务A无故障运行的平均时间间隔(CPU小时)
任务A无故障运行的最小时间间隔(CPU小时)
任务A无故障运行的最大时间间隔(CPU小时)
任务B描述
连续运行时间
故障发生的时刻故障描述
……
统计分析
任务B无故障运行的平均时间间隔(CPU小时)
任务B无故障运行的最小时间间隔(CPU小时)
任务B无故障运行的最大时间间隔(CPU小时)
9 安装 / 反安装测试用例
9 1 被测试对象的介绍
9 2 测试范围与目的
9 3 测试环境与测试辅助工具的描述
9 4 测试驱动程序的设计
9 5 安装 / 反安装测试用例
配置说明
安装选项描述是否正常使用难易程度
全部
部分
升级
其它
反安装选项描述是否正常使用难易程度
附录:评审意见
以上就是关于如何设计一个完整的测试用例全部的内容,包括:如何设计一个完整的测试用例、如何设计好测试用例、常见的软件测试用例设计方法有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)