功能测试之软件测试用例的理论

用文字描述出系统测试时的操作步骤,或许有些帮助

写测试用例好处

1)清晰思路、避免遗漏

当系统功能多且复杂时,根据系统每个模块,拆分功能点,花点时间思考并整理成文档,尽可能结合功能与业务,模拟不同场景,从根本上避免了直接测试系统的“手忙脚乱”。

2)明确测试进展

参考测试用例,可以清晰看到哪些用例执行了,哪些用例没有执行,从中看到测试进行到哪一步,以及结合问题管理平台,直观地从测试角度,分析项目进展。

3)系统模块缺陷率

根据测试用例发现的问题,可以看到哪个功能模块出现的bug较多。

设计方法

1)等价类划分

策略:将输入值划分为相互等价的类别,并选择一个测试用例来代表每个等价类。

描述:通过代表性测试用例覆盖每个等价类,以减少冗余测试。

示例:假设有一个登录页面,有用户名和密码两个输入框。可以将用户名输入划分为等价类:合法用户名、空用户名、非法用户名;将密码输入划分为等价类:合法密码、空密码、非法密码。然后从每个等价类中选择一个测试用例进行测试,例如选择合法用户名和合法密码的组合。

2)边界值:

策略:关注输入值的边界情况,即最小值、最大值和接近边界的值。

描述:测试边界值和接近边界的特殊情况,因为边界处常常存在错误。

示例:假设一个函数接受一个整数参数,范围是1到100。选择边界值和接近边界的测试用例,例如选择1、2、100、101作为输入值,以覆盖边界值和接近边界值的情况。

3)判定表

策略:根据系统的决策逻辑和条件组合,设计判定表以生成测试用例。

描述:将系统的条件和相应的动作组织成表格形式,然后根据条件的组合选择测试用例。

示例1:假设有一个根据温度和湿度来判断天气的决策表。表格中的条件包括温度和湿度的范围,动作是天气的判断。设计测试用例以覆盖不同的条件组合和对应的动作。

4)因果图

策略:通过绘制因果图,可视化系统功能和输入之间的因果关系,进而设计测试用例。

描述:考虑系统功能之间的因果关系,从而设计测试用例。

示例:假设有一个电商平台,用户根据价格和评级来筛选商品。绘制因果图以显示价格和评级作为输入条件,以及筛选商品作为输出结果。设计测试用例来覆盖不同的价格和评级组合。

5)错误推测法

策略:基于测试人员的经验和直觉,推测可能存在的错误,并设计测试用例来验证这些猜测。

描述:测试人员根据过去的经验和知识,推测可能存在的错误,并设计测试用例来尽可能多地验证这些猜测。

示例:假设有一个电子邮件发送功能,测试人员可能猜测错误的情况包括:发送空邮件、发送带有特殊字符的邮件、发送超过限制大小的邮件等。设计测试用例来验证这些错误情况。

6)场景法

策略:基于实际使用场景来设计测试用例,考虑用户的实际操作和使用情况。

描述:设计具有代表性的场景和相应的测试用例,以模拟真实的使用情况。

示例:假设有一个在线购物网站,设计场景如下:用户登录、浏览商品、加入购物车、结算订单。然后设计相应的测试用例来模拟这些场景。

7)正交法(不常用,需了解)

策略:使用正交表格设计测试用例,以覆盖系统不同的输入组合。

描述:通过选择一组正交表格,确保在最少的测试用例下覆盖尽可能多的输入组合。

示例:假设有一个控件如下案例。通过使用正交表格,选择不同的字体、字符样式、颜色、字号的组合进行测试。

常用正交设计表-举例

案例:字符属性设置程序
窗体中有多个控件(字体、字符样式、颜色、字号),每个控件有多个取值

  • 字体:仿宋、楷体、华文彩云

  • 字符样式:粗体、斜体、下划线

  • 颜色:红色、绿色、蓝色

  • 字号:20号、30号、40号

图片

步骤:
1、根据控件和取值数选择一个合适的正交表;

根据分析可知,该案例有4个控件,每个控件有3个取值。所以我们可以组合3^4 = 81个组合,那么在常用的正交表中,我们可以选择此表,那么本来要81个组合测试才能测得完的用例,根据正交表设计法,只需要进行9次测试即可。所谓,使用最小的测试过程集合获得最大的测试覆盖率。

图片

2、列举取值并编号,生成取值表;
接下来对控件和控件的取值进行排序,生成取值表:
 

图片

3、把取值表与选择的正交表进行映射;
根据取值表和所选择的正交表进行编号 进行映射,生成以下的实际测试用例:

图片

元素

1)目录

根据拆分的系统功能点,每个功能点可以用目录的方式区分,如一个系统的系统管理-用户管理-用户添加,那么系统管理就是一级目录,用户管理就是二级目录,用户添加就是三级目录;

2)测试项

同上,根据三级目录,一般用户添加包括的元素有用户名、密码输入框、保存按钮、取消,那么每个元素都可以分成一个测试项;

3)操作步骤

每一个测试项,都对应相应的操作步骤,可以分成操作步骤1、操作步骤2,操作步骤可以细化到,点击添加用户的按钮、输入框输入某某用户名密码点击保存按钮;

4)预期结果

操作步骤,在完成一系列动作之前,都要有对应预期结果作为参考,这个参考就是最初业务部门提供的需求分析文档,根据需求分析文档来告诉我们每一个功能要有什么样的结果;

5)实际结果

操作步骤,完成之后,需要记录实际的情况,如果与预期结果不符,就可以归于bug;

考虑是否可以将实际结果改成注释,避免与预期结果一一对应关系,解耦合。

6)优先级探索性测试

在设计测试用例时,并不能完全保证每个功能每个场景都设计到位,而且单纯执行测试的时候非常枯燥,那么加入一点发散性思维,进行一些非常规性操作,以用户的心态去使用系统,或是尽情地“破坏”系统,发现系统的问题。

真正的探索性测试需要对产品的深入了解,以及软件开发技术有一定的深度和宽度。

用例评审

测试用例编写完成后,需要在测试内部进行一次评审,评审的内容包括:功能是否完整、需求是否符合,使每一个测试人员在系统测试过程中,不存在主体思维的偏差。

同时用例评审也是一个很好的学习过程,每一位测试人在介绍系统时,能够意识到各自设计用例时的不足,包括自动化、性能都可以进行技术的探讨。

不需要用例情况

1)功能过于简单

2)急于交付,弊端就是不能保证测试的覆盖率。

弊端

用例粒度


  用例粒度好比一个剧本,写细了容易束缚了表演者的自我发挥,写粗了又担心表演者遗漏某些重要环节。
  如果你是一家传统软件公司,一个项目可能几个月甚至半年、一年才一次交付,那么你拥有充足的时间去设计你的测试用例,那么我建议你的用例能尽可能描述详细,不停的修复、补充、完善。
  然而在大多数互联网公司,基本都走敏捷,讲究小步快跑,快速试错,基本上产品迭代非常频繁,譬如一个公司的产品两周一个迭代。
  这给我们测试留下的执行测试的时间就极短,更别说写用例的时间,这时我们就不得不在某种程度上做个妥协,简化测试用例,不再对每一条用例做详细描述,而更多的是写测试点。
  遇到比较复杂的流程时,还是希望能尽可能将用例描述详细。测试点不表示不需要考虑各种用户场景,而是尽可能通过一句话能描述出这个场景的概要,这样测试人员在了解需求的前提下通过这么一句话概要就可以清楚知道需要执行那些用例,这对测试员的要求会相对更高点。  

用例模块化


  用例写多了,总会发现很多功能模块是类似的,例如查询功能,翻页功能,文本框校验,时间控件校验等等,这时可以学学编程思路,某段代码多处用到,那么就提取成一个公共方法,供各个地方调用。同样编写测试用例时,你也可以提取类似的测试用例,形成一个用例库,供相同的功能模块引用。

用例迭代


  用例走迭代,每个新迭代都居于上个迭代的用例上做增删改。例如假设我通过excel来管理我的用例,那么我每次新迭代开始时,我就复制一份旧的用例,居于复制而来的用例上做修改形成最新版的测试用例,这样我既能保留以前迭代的测试用例(可便于功能回溯),又可以有一个完整的当前系统的测试用例。

总结


  用例评审也是非常必须的,特别是一些经验老道或者业务熟悉的老司机,可以在用例评审上快速的帮忙指出用例的遗漏点,有助于测试人员打开思路,尽可能多的覆盖用户场景,值得注意的是用例评审上遇到不确定的,应立即记录下来,结束后及时找相关人员确认,避免猜测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414782.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络和Linux网络_14(IO多路转接)poll和epoll编程_服务器

目录 1. poll 1.1 poll函数 1.2 简易poll服务器 pollServer.hpp 1.3 poll的优缺点 2. epoll 2.1 epoll的相关函数 2.2 epoll的原理 2.3 简易epoll服务器 Epoll.hpp EpollServer.hpp 2.4 epoll的优点 2.5 水平触发和边缘触发 本篇完。 1. poll poll也是一种多路转…

Pixelmator Pro 智能调色抠图AI图像处理工具(含下载安装指南)

Pixelmator Pro 是 Mac 上的一款智能图像处理工具,他依靠 Mac 强大的芯片算法集成了非常强力的工具和功能,该软件主打一个智能,支持一键智能抠图,修复,只能颜色调整,甚至还贴心的做了图层自动命名 安装包&a…

AR与AI融合加速,医疗护理更便捷

根据Reports and Data的AR市场发展报告,到2026年,预计医疗保健市场中的AR/VR行业规模将达到70.5亿美元。这一趋势主要受到对创新诊断技术、神经系统疾病和疾病意识不断增长的需求驱动。信息技术领域的进步,包括笔记本电脑、计算机、互联网连接…

Linux环境下,针对QT软件工程搭建C++Test单元测试环境的操作指南

文章目录 前言一、安装QT二、安装CTest三、使用QT生成.bdf文件四、创建CTest工程注意事项 前言 CTest是Parasoft公司出品的一款可以针对C/C源代码进行静态分析、单元测试、集成测试的测试工具。本文主要讲解如何在Linux环境下,搭建QT插件版的CTest测试环境。 一、…

旅游项目day04

1. JWT有效期 封装用户登录对象, 在指定时间过期 2. 有些接口需要登录?有些不需要登录? 后端如何知道a需要登录,b不需要登录? 注解。 3. 目的地 一个区域下面包含多个目的地 数据库表: 1. 区域表 2.…

Go新项目-Golang使用RemoteAddr()获取远程主机地址的注意事项(9)

一、问题描述 http.Request 下的方法RemoteAddr() 可以获取客户端的地址和端口号,最近的一个项目中用到了这个方法。 使用过程中一直都没有什么问题,但是当项目上线之后就发现不管怎么获取ip,客户端地址都是127.0.0.1 。 对于这个问题一直…

gma 2.0.5 (2024.01.18) 更新日志(含 GmaGIS alpha-0 版)

安装 gma 2.0.5 pip install gma2.0.5注意:此版本没有Linux版! 编译gma的Linux虚拟机没有时间修复,本期Linux版继续暂停发布。 优化 1、climet.Index:现在,数据规定化处理时,Axis 轴上 Periodicity 内的每…

编译不带版本后缀的x264库

原始版本的x264编译动态库的话,生成的库名是这样的:libx264.so.163, 或libx264-163.dll。 make install后会生成软链接为 libx264.so 。那怎样不要这个后缀,也不要软链接,就要个libx264.so就得了呢?修改方式如下&…

CorelDRAW2024国内专业免激活版下载安装教程

CorelDRAW Graphics Suite2024订阅版涵盖了全部CorelDRAW图形处理组件,能够高效地完成矢量插图、布局、照片编辑和排版等项目,无论是个人用户还是大型企业,订阅版可以满足几乎所有设计从业者的工作需要,同时订阅版具有更优惠的价格…

SafeTpack—基于AURIX 2G的功能安全目标解决方案

产品概述 SafeTpack是专门针对于英飞凌AURIX 2G系列芯片的功能安全解决方案,由英飞凌下属子公司Hitex按照ISO26262-10作为独立于环境的安全要素(SEOOC)研发。根据ISO26262-5中的要求,系统需要根据不同ASIL等级的要求,针…

如何使用JS逆向爬取网站数据

引言: JS逆向是指利用编程技术对网站上的JavaScript代码进行逆向分析,从而实现对网站数据的抓取和分析。这种技术在网络数据采集和分析中具有重要的应用价值,能够帮助程序员获取网站上的有用信息,并进行进一步的处理和分析。 基…

Element-ui自定义表格头部-添加筛选条件

1.引用el-table-column属性render-header 2.在表格配置中自定义该方法 3.实现自定义需求 // 自定义某列表头为时间搜索renderDate(h, { column }) {return h(el-date-picker,{props: {value: this.selectTime,type: date,placeholder: 请选择排班时间,valueFormat: yyyy-MM-dd…