如何编写具有完备性的测试用例 ? 具体思路是什么 ? 全套解决方案打包呈现给你 。

设计测试用例应该算是测试人员最为主要的工作之一 ,好的测试用例往往具有覆盖性强 ,扩展性高以及复用性好等特点 。该如何设计出好的测试用例 ?是我们每一位测试人员需要重点思考的问题 ,下面是我对设计测试用例设计的思考 :

1.建立设计用例框架

 

所谓的流程覆盖 ,就是对产品中存在的主要场景进行覆盖测试 ,参考依据就是产品原型的流程图以及用户的主要场景 ,通过流程图中的路径所进行的覆盖;

而功能的覆盖 ,主要指的是两个方面 ,分别为功能宽度的覆盖和功能深度的覆盖 ,具体原则就是先进行功能宽度(范围)的覆盖,再进行功能深度(方法)的覆盖。

类型覆盖就是针对质量模型中的特性,从测试的角度去覆盖测试 ,比如质量模型有易用性特性 ,你就可以通过易用性测试进行验证 。所以,最后的测试类型主要包括 :

  • 功能测试(在上面已经考虑,这里就可以忽略)

  • 易用性测试

  • 兼容性测试

  • 可靠性测试

  • 安全性测试

  • 性能测试

2.对应的测试方法

3.测试的颗粒度

如果我们面对一个庞大而又复杂的系统时,如果系统中的每个功能都要考虑的很细 ,那么无疑会给我们带来很大的工作量 。而且很多时候也没必要 ,你永远也不能把电商系统的支付功能和站内信功能按照同样的方式去设计 ,因为本身它们的重要程度就不一样。 所以设计测试用例的颗粒度自然也会不同 。那么该如何确定测试用例的颗粒度呢 ? 就是按照功能的重要程度来确定所使用的测试方法,越重要的功能使用的方法及策略会越多 ,反之就越少 。具体的使用步骤就是 :

 

  1. 确定功能测试范围 ,根据项目迭代的情况 ,确定本次版本所要测试的范围(确定范围边界) 。

  2. 给对应功能设置级别 ,一般按照严重程度可以划分为四个等级 ,划分等级的目的就是为了后面设计测试用例和使用测试策略时的侧重点是不同的 。若没有等级划分 ,就很难确定出使用的测试方法以及测试策略 。

  3. 针对每个功能给出设计的测试方法和测试策略 ,总体原则就是重要的功能测试方法会用的越多 ,同时测试策略也会加强该功能的测试 ,反之就会减少对其的测试 。这样可以将更多的时间花在重点功能上 。

按照以上步骤 ,结合一个案例就会得出如下的结果 ,如下图 :

4.如何设计测试用例

最后让我们回到最开始的问题 ,如何设计测试用例呢 ? 你可以按照如下的流程进行设计 :

 

  1. 提取测试点 ,主要是指根据需求提取测试点 ,需要与测试点不一定是一对一的关系 ,有时候可以是多个需求对应一个测试点 ,有时候也可以是一个需求能提取出多个测试点 。

  2. 使用测试方法对测试点设计测试用例 ,通过上面提取的测试点 ,然后根据对应的测试方法进行设计测试用例 。

  3. 复验回检测试用例,进入这个阶段,一般你的测试用例已经写完,你更多的是将已经编写的用例再进行一次检查 ,确实是否覆盖了需求 ?是否了不同的测试类型 ? 是否已经覆盖了相对应的方法 ?总之 ,你的目的就是为了捡漏补全 。

  4. 确定测试套件, 为了后续进行测试组合成各种套件,以便后续测试使用 。

下面我们就按照上面的框架去设计测试用例 ,依次先考虑 :流程 -> 功能 ->其它测试类型 。

1.流程测试

首先 ,要站在整体的角度进行全局思考 ,理解用户需求及使用场景,这样能更好的梳理出用户的常用场景 ,当然一般在产品原型中也提供了产品流程图 。然后我们使用场景法和流程图的方法来设计这一类型的测试用例 。比如如下的流程图 :

以上的流程图,一般有两种覆盖的方式,就是全覆盖和部分覆盖 。若进行全覆盖的话 ,就需要将每一个分支进行组合后覆盖 ,虽然从覆盖上来说是全的 ,但是花在用例上的陈本太高 ,大大超出了我们的正常的工作量 ,所以不建议这样覆盖。

最可取的办法将每一个分支至少覆盖一次就可以了 ,这样的话就会大大降低用例数量 ,比如上图就可以变为 :

  • 流程1 :P1-d1-d2-d3-P5(基本流)

  • 流程2 :P1-d1-P2-d2-d3-P5(备选流-走P2分支)

  • 流程3 :P1-d1-d2-P3-d3-P5(备选流-走P3分支)

  • 流程4 :P1-d1-d2-d3-P4-P5(备选流-走P4分支)

下图是一个实际的案例 ,虽然流程少但是就可以按照这种流程去覆盖 。

 

2.功能测试

对单个功能设计测试用例的话 ,我们就可以按照先从需求提取测点,然后再设计测试用例的步骤来进行 ,比如下面的这个需求

最终将需求点转化为了测试用例 ,具体如下 :  

通过上面的案例可以看到 ,如果没有提取测试点这一步骤 ,其对应的测试用例就很容易遗漏掉,所以,在设计测试用例的过程中提取测试点是一个很重要的步骤 。

最后,就是从测试点到最终的测试用例的这一步其实就是用的不同的测试方法,具体方法可参考上面的测试方法,因这是一个很大的话题,暂时不在这里介绍,我在后面的文章进行详述 。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全国疫情实时监测系统(附源码)

目录 一.项目背景 1.有力支持疫情防控知识传播 2.迅速锁定“涉疫”人员流动轨迹 3.开展疫情发展态势预测与溯源 4.一图胜过千言万语!!! 二.研究过程(项目技术的利用) 1.总述 2.所用技术介绍 2.1Python 2.2Pyt…

从零开始学Linux之gcc命令

首先我们需要知道有两种编程语言 编译型语言:要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序,例如C、C、go语言、汇编语言等,使用的转换工具称为编译器。 解释型语言:一边执行一边转换&a…

解析电子名片二维码生成:便捷、灵活、个性化

在当今信息爆炸的时代,名片已经成为商务社交不可或缺的工具之一。然而,随着技术的不断发展,传统的纸质名片已经逐渐被电子名片生成二维码所取代。电子名片二维码不仅具备了传统名片的基本信息展示功能,更融合了数字化优势&#xf…

记一次java项目本地正常执行,打完包之后执行发现没有对应的类或配置的问题

1、起因 线上有个spark的任务出了问题(该任务是通过sparkstreaming读取kafka中的数据,处理完之后推到es中),问题出在kafka中数据是有更新的,但是es中的对应索引中的数据却只更新到月初,因此我需要排查处理…

IDEA 取消参数名称提示、IDEA如何去掉变量类型提醒

一、IDEA 取消参数名称显示 取消显示形参名提示 例如这样的提示信息 二、解决方法 1、File—>Setting–>Editor—>Inlay Hints—>Java 去掉 Show Parameter hints for 前面的勾即可,然后Apply—>Ok 2、右键Disable Hints

爬虫学习笔记-Cookie登录古诗文网

1.导包请求 import requests 2.获取古诗文网登录接口 url https://so.gushiwen.cn/user/login.aspxfromhttp%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx # 请求头 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like …

自定义注解实现记录日志功能(注解支持SpEL表达式)

一、首先创建个接口类Log import java.lang.annotation.*;/*** description: 自定义操作日志记录注解* author xizc**/ Target({ ElementType.PARAMETER, ElementType.TYPE, ElementType.METHOD }) Retention(RetentionPolicy.RUNTIME) Inherited Documented public interface …

JUnit

前言:自动化就是selenium脚本来实现的,JUnit是java的单元测试工具,只不过我们在实现自动化的时候需要借助一下JUnit库里面提供的一些方法。 1、Test Test :表示方法是测试方法,执行当前这个类的时候,会自动…

Unity之做一个最简单的FPS游戏demo

目录 😋FPS游戏Demo 💤1.新建FPS模板项目 ⚒️2.装备枪 💣3.设置射击功能 📺4.制造一个子弹预制体 🎮5.发射子弹 说起来小编学Unity差不多一个月了,都是利用上班摸鱼时间学的(doge.jpg&…

java+springboot校园体育场地预约预订使用系统vue+ssm

研究内容和研究方法 1.研究内容 网站主要包括管理员和用户两个部分,用户可以登录与注册自己的基本信息、查询哪些场地可以使用、提前预约场地、取消预约的场地、使用完场地后进行缴费。管理员可以审批用户的注册信息、对用户信息进行增删改查、查询场地的使用情况、…

【C++干货基地】C++引用与指针的区别:深入理解两者特性及选择正确应用场景

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 哈喽各位铁汁们好啊,我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的…

秋招面试—JS篇

2024 JavaScript面试题 1.new 操作符的工作原理 ①.创建一个新的空对象 ②.将这个对象的原型设置为函数的 prototype 对象 ③.让函数的this指向该对象,为函数添加属性和方法 ④.最后返回这个对象 2.什么是DOM,什么是BOM? DOM:文档对象…

AI日报:谷歌的“双子时代”:将第二代人工智能嵌入其所做的一切

谷歌强大的大型多模式模式Gemini正在进军搜索、广告、云、Bard等领域。Bard的付费订阅即将到来吗? 文章目录 一览Bard订阅即将到来?一代人工智能进入谷歌广告YouTube正在崛起收入上升但股价下跌 一览 谷歌首席执行官、母公司Alphabet的桑达尔皮查伊表示&…

Kotlin 协程:用源码来理解 ‘viewModelScope‘

Kotlin 协程:用源码来理解 ‘viewModelScope’ Kotlin 协程是 Kotlin 语言的一大特色,它让异步编程变得更简单。在 Android 开发中,我们经常需要在后台线程执行耗时操作,例如网络请求或数据库查询,然后在主线程更新 UI…

VBoxManage 命令行使用

VBoxManage: 序号命令作用1VBoxManage list vms# 查看当前所有虚拟机2VBoxManage list runningvms # 查看当前正在运行的虚拟机3VBoxManage startvm 虚拟机名 --type gui # 启动虚拟机4VBoxManage startvm 虚拟机名 --type headless# 无前端图形界面方式启动虚拟机…

Elasticsearch:构建自定义分析器指南

在本博客中,我们将介绍不同的内置字符过滤器、分词器和分词过滤器,以及如何创建适合我们需求的自定义分析器。更多关于分析器的知识,请详细阅读文章: 开始使用 Elasticsearch (3) Elasticsearch: analyzer…

Debezium发布历史101

原文地址: https://debezium.io/blog/2021/01/07/debezium-1-4-final-released/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Debezium 1.4.0.Final 发布 2021 年 1 月 7 日 作者: 克里…

C#中的WebApi响应Accept头,自动返回xml或者json

Global.asax.cs中的Application_Start方法添加 GlobalConfiguration.Configuration.Formatters.Clear(); GlobalConfiguration.Configuration.Formatters.Add(new XmlMediaTypeFormatter()); GlobalConfiguration.Configuration.Formatters.Add(new JsonMediaTypeFormatter())…

工作七年,对消息推送使用的一些经验和总结

前言:不管是APP还是WEB端都离不开消息推送,尤其是APP端,push消息,小信箱消息;WEB端的代办消息等。因在项目中多次使用消息推送且也是很多项目必不可少的组成部分,故此总结下供自己参考。 一、什么是消息推…

Vue.js 中子组件向父组件传值的方法

Vue.js 是一款流行的 JavaScript 前端框架,它提供了一套完整的工具和 API,使得开发者可以更加高效地构建交互式的 Web 应用程序。其中,组件化是 Vue.js 的一个核心概念,通过组件化可以将一个复杂的应用程序拆分成多个独立的部分&a…