测试用例设计专栏

news/2024/4/30 3:08:29/文章来源:https://blog.csdn.net/h201601060805/article/details/127022789

哈喽大家好哎呀,今天给大家普及一下测试用例如何设计,看牛逼的大佬们是如何测试的。

测试用例笔试题

出题:在一个页面上有一个输入框,一个计数器(count)按钮,用于计算一个文本字符串中字母a出现的次数,请设计一系列测试用例来测试这个web界面请添加图片描述
很多朋友可能拿到这道题的时候已经开始写下123了,但是从经验上来说,追求数量而非质量的倾向,是一种低效的工作方式。

特别是在有面试官在旁边看你答题的时候,请保持沉思者保持10-15秒
能够针对题目提出一些问题的候选者会被认为是更有潜质的测试人员,比如大写还是小写?只是英文输入吗?计算完成后文本会被清除吗?多次按下按钮会发生什么事情?诸如此类问题。

通常来说,我们考虑一个测试对象至少要从以下六个方面来考:

  1. 功能性
  2. 易用性
  3. 可靠性
  4. 性能
  5. 安全性
  6. 兼容性

如果你是一个测试菜鸟,从功能性出发,你可以会列出下一个典型的列表:

  1. “banana”: 3 (一个合法的英文字)
  2. “A” 和"a" : 1 (一个简单有正常结果的合法输入)
  3. “” : 0 (测试一个结果为0的合法输入)
  4. NULL : 0 (简单的错误输入)
  5. “AA” 和 “Aa” 和 “aa” (个数大于1并且所有字符都是a/A的输入)
  6. “b” : 0 (一个简单的非空合法输入,结果为0)
  7. “aba” : 2(目标字符出现在开头或者结尾,以寻找循环边界错误)
  8. “bab” 1 (目标字符出现在中间)
  9. space/tabs : N (空白字符与N个A的混合)
  10. 不包含a的长字符串:N(N大于0)
  11. 包含a的长字符串:N

更优秀的测试工程师,会开始考虑后面五个方面,设计以下用例

  • 质疑界面的外观,调色板和对比度(这与相关应用风格一致么?)
  • 文本框太小了,建议加长以便显示更长的输入字符串
  • 这个应用能否在同一台服务器上运行多个实例,多个用户同时访问是否会出现问题?
  • 是否会根据用户的输入自动匹配内容?
  • 建议使用真实的数据,如从词典或书中选择输入内容。
  • 提出疑:“输入的数据是否会被保存”,输入字符串中可能会包含地址或者其他身份信息,并且这些信息如果被保存是否需要加密处理来保证用户数据的安全性。
  • 输入html和javaScript脚背语言,看是否会破坏页面渲染。
  • 尝试复制粘贴字符串
  • 提出疑问:“计算足够快么?在大并发下如何使用”
  • 提出疑问:“用户如何找到该页面”
  • 提出疑问:“有快捷键的设置没有?比如输入完字符敲入回车而不是点击提交按钮是否可行”

还有一些测试点,只有经验丰富的测试工程师才会想到

意识到计算会通过URL-encodedHttp GET请求传递到服务器,字符串可能会在网络传输时被截断,因此无法保证支持多长的URL

  • 建议将此功能参数化
  • 考虑该应用是否应该国际化
  • 考虑到其他语言的α
  • 考虑输入法的半角和全角输入是否相同
  • 考虑编写脚本或者手工采样来探知字符串长度的上线,然后确保在此区间内功能正常。
  • 考虑背后的实现和代码。也许已经有一个计数器遍历该字符串
  • 提出疑问:“HTTP POST方法和参数会被黑掉吗?也许有安全漏洞?”
  • 用脚本创建各种有趣的排列组合和字符串特性,如长度、a的个数等,自动生成测试输入和验证

游戏测试123事

1. 设计步骤

1.1 文档阅读

  • 一定不要不阅读需求文档,上来直接写需求用例,至少读三遍文档
    1 细致理解功能设计意图和设计思路
    2 避免粗略的理解带来的用例遗漏
    3 一些重要的数据可能隐藏在不起眼的语句中
    4 加深对功能的理解,否则随着时间的推移,可能会遗忘很多内容
    • 带着思考去阅读,如果让你设计这个功能,还有更优的选择吗?

1.2 功能细节探讨

  • 不明白的地方需要及时确认,切忌脑补想当然
  • 尽量早额确认细节,最好在写之前就确认完毕
  • 关注需求变更,需求变更之后,一定要跟程序和策划确认

1.3梳理逻辑

  • 文档不一定是按照标准流程写的,而且经常存在功能交叉的地方
  • 我们需要先梳理出框架之后,逐步细化

1.4 功能拓展性思考

  • 设计缺陷思考:升级;拆解;道具;领取道具数量,次数
  • 测试难点思考:领取次数,刷新(测试,不能直接等)
  • 关联度思考:道具存储问题
  • 特殊情况思考:断电,断网,服务器维护

1.5 兼容性相关思考

  • 版本兼容: 同时存在两个版本是,不同的版本
  • 功能兼容:老的功能中添加新的英雄
  • 操作系统版本兼容:mac和Windows
  • 分辨率兼容:美术展示等

2.功能模块划分

2.1 功能模块划分时应遵循什么样的规则?

  • 高内聚低耦合:购买月卡和购买单个分开
  • 重整体,轻局部:从整体关注

2.2 功能模块划分有哪些较好的方法?

  • 功能流程法:将功能的基本流程画出来。根据每个大的环节进行模块划分,然后再细化和差缺补漏。

  • 举例子:银行ATM的取款功能进行模块划分:
    插卡环节-> 密码登录环节->输入金额环节->取走钱币环节->取卡环节
    举例子:Dota这款游戏进行模块划分:
    dota->战斗中的内容->英雄->动画;技能
    dota->战斗中的内容->道具
    dota->战斗中的内容->地图
    dota->战斗之外内容->账号登录,按键设置

  • 按照类型划分法:按照功能包含的不同类型进行划分

  • 兵种测试,道具测试

  • 兵种:可以训练的不同兵种

  • 道具:可以消耗道具和不可消耗道具

  • 类型划分法比较适合用一个功能种类相对独立,种类之间关联度较低的情况

2.3 模块划分注意的事项

  • 不同的划分方法适用于不同的场景,要具体问题具体分析
  • 有时候一个功能选择结合多种方法进行划分
  • 划分方法不重要,划分原则更重要一些
  • 划分完毕后,要结合需求文档重新梳理,确保模块清晰。覆盖完整

3. 测试用例的编写

3.1 格式:

一个清晰的格式而非常重要
1可以让用例脉络清晰明了
2方便后续需求变化之后更新维护
3方便执行人员快速入手

  • 首页内容
    1、用例名称
    2、 用例对应的游戏版本
    3、 编写人,编写日期、备注
    4、修改人、修改日期、修改备注

正文页内容
1、功能逻辑图
2、用例id
3、模块名称
4、测试先决条件
5、输入信息
6、输出结果
7、备注信息

关于格式需要注意的注意点

1.尽量保持逻辑清晰
2.尽量保持一个输入只对应一个输出
3.保证每次更新用例之后都有明确的记录标注
4、尽量保证每一个用例内格式统一

3.2 常用的测试用例编写方法

  • 等价类划分
    等价类: 指的是在一个输入集合内。任何输入数据对数输出的验证来讲都是等效果的,所以我们只需要取少量代表性的就可以了
    边界值就是对等价类的一种补充
    因果图是输入和输出的一种关系判定表

3.3 测试用例编写注意事项

  • 输入条件要单一明确,尽量不要使用容易引起误解的词语
  • 输出要可判断且明确,最好不要用“显示正确”这种词汇
  • 测试步骤要可执行
  • 保持尽量高的覆盖度
  • 能抽象的尽量抽象出来,避免无意义的冗余

4.测试用例整理与维护

  • 需求变化后需要及时更新老的测试用例,并写清楚修改情况备注(修改内容,产品和开发负责人)
  • 测试用例应该尽量避免冗余,如果遇到重复的用例,需要根据实际情况进行修改
  • 注意测试用例的备份,写完后最好本地自己也备份一份,避免线上被人误删

2. 游戏bug详解

2.1 bug详解

  • 发现bug仅仅是测试工作的开始

2.2 Bug的鉴定标准

  • 与需求设计不符合
  • 违背常识

2.3 BUG 的生命周期;

发现bug --> 提交给开发 --> 开发修复 --> 测试验证 --> 通过后关闭–> 上线前回归
测试验证如果不通过 --> 不通过继续指派给开发

2.4 BUG的等价划分:
P0:致命错误,需要立即修复,如宕机,重起性报错等
P1:严重错误,需要紧急修复,如功能流程错误、数值错误等
P2:一般错误,允许一段时间内修复,如功能的简单错误、界面错误等
P3:无关紧要的错误,允许延期修复,如错别字、某个像素点缺失等等
2.5 BUG的提报标准
标题:【模块名称】+ 简短描述
测试环境:标明测试用的版本,系统,服务器,账号等。
描述:bug的详细描述,卡住可继续前进,卡住不能走
重现步骤:重现bug修复后的结果
备注:log,截图等
2.6 BUG的验证标准:
严格按照复现步骤验证
去除测试环境影响
验证标准:需要注明验证的版本、服务器等
拓展:是否对其他功能有影响,做简单回归
注意点:验证不能只看前端展现,更应关注后端数据
2.7 BUG的跟踪与推动:
每个人都有责任跟踪自己的bug的修复状态
及时与开发沟通,了解修复状态并提供修复过程中的支持
久不能修复的bug需要与开发和上级确认如何处理
bug修复后,需要及时验证
2.8 BUG的数据分析:
1 从bug级别:P2等级bug比较多,P0、P1较少,说明项目可以
2 从项目人员bug数据:
3 功能模块bug数据

3.弱网测试

3.1 弱网测试要解决的问题

  • 网络信号差的情况下,对游戏运行的影响
  • 高丢包率的网络环境,对游戏运行的影响
  • 不同网络信号之间切换的时候,对游戏运行的影响
  • 断线重连对游戏运行的影响
  • 前后端数据一致性问题

3.2 测试方法

  • 不同的系统测试工具是不一样的
  • mac可以使用network line
  • windos 可以使用Fiddler 这个抓包工具

4. 客户端性能测试-安卓

4.1 客户端性能测试指标

CPU

  • 这里指的是游戏进程所占的cpu占用率
  • 抛开场景谈CPU性能毫无意义
  • 安卓设备,90%的场景CPU占用率小于60%
  • ios设备,90%的场景CPU占用率小于80%

5. 客户端性能测试-ios

测cpu和内存
连接手机,选好app后点击recode
测FPS: instrument
连接手机,选好app后点recode

6. 游戏接口测试

接口:代码暴露出来的属性和方法

6.1 常见的接口分类

  • 程序自身内部的模块接口
  • 程序暴露给其他外部程序调用的接口

6.2 游戏接口测试的主要内容

  • 客户端与服务器之间的网络接口测试

6.3 游戏接口测试常用工具

使用jmeter或者脚本语言自己写

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

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

相关文章

Linux 逻辑卷精简卷报错问题解决

一、 故障描述 现象1:oraclelog目录提示坏道信息,进行修复后执行删除文件操作,目录不可使用。 现象2:lsblk看到目录出现重复,并且有tmeta,tdata卷出现(图一) 现象3:message日志出现多目录报错,持续写入(图二) 图一 检查lv #lvs -a 看到多出的pmspare,tdata,tmeta…

VSCode 使用教程-9.Node运行js出现 Cannot use import statement outside a module的问题

前言 js中导入公共模块,使用import的方式导入,用node运行js文件会出现Cannot use import statement outside a module的问题 问题描述 目录结构 └─src└─js└─ext.js└─main.js └─index.html在ext.js 文件写一些公共方法 export const m (f…

vue3 ts vite 项目快速构建

1.安装nodejs(建议装14版本稳定) 下载 | Node.js 中文网 装完之后会有一个命令叫 npm 可以在终端输入npm -v 来检查是否安装成功2.构建vite项目官方文档开始 {#getting-started} | Vite中文网 vite 的优势冷服务 默认的构建目标浏览器是能 在 script 标签上支持原生 ESM 和…

Java操作HDFS

1. 创建maven项目 New Project 2. 添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.…

steam搬砖汇率差项目详解

很久没有分享赚钱项目了&#xff0c;今天这里给大家介绍一个游戏搬砖的项目&#xff1a;steam游戏汇率差赚钱项目。 项目原理&#xff1a; Steam平台是一个国外游戏及装备售卖平台。而我们所谓的Steam游戏装备搬砖就是利用steam平台和网易的BUFF平台来操作。steam汇率差赚钱原…

十大经典排序算法综述(Java代码实现,思想通用)

关于十大排序的文章也有不少了&#xff0c;但感觉大部分在各个排序算法的适用场景、如何实现外排等细节方面没怎么讲&#xff0c;故总结了这篇文章&#xff0c;欢迎浏览 一、前言 内部排序是指排序时将待排序数据全部加载到内存的算法。 外部排序是指在处理海量数据排序时&…

什么是C语言?

什么是C语言&#xff1f; 文章目录什么是C语言&#xff1f;1.C语言的起源2.C语言的使用领域3. 为什么要学习C语言4.C语言的学习境界5.如何学习C语言6.学习C语言的推荐书籍1.C语言的起源 C语言之父是丹尼斯里奇&#xff1a;丹尼斯里奇&#xff08;1941年9月9日-2011年10月12日&…

Linux 简单命令 - cron 计划任务 、NTP

Linux 简单命令 - cron NTP cronNTP 一、cron 计划任务就是按照系统的时间(时刻、周期)执行指定的任务 系统服务&#xff1a; crond。 配置文件&#xff1a; /etc/crontab /var/spool/cron/用户名 配置记录格式&#xff1a; 分 时 日 月 周 任务操作命令 (用绝对路径、必要时…

集成学习详解

入门小菜鸟&#xff0c;希望像做笔记记录自己学的东西&#xff0c;也希望能帮助到同样入门的人&#xff0c;更希望大佬们帮忙纠错啦~侵权立删。 目录 一、集成学习的产生原因与相关定义 1、产生原因 2、相关定义 &#xff08;1&#xff09;同质集成 &#xff08;2&#xf…

第三章 学校与班级管理

01 学校组织与管理 02 班级与班集体 03 班主任与班主任工作 04 班级活动与班队活动 05 课外活动 02 班级与班集体 一、班级与班集体 二、班级管理 三、班级突发事件的处理 一、班级与班集体 &#xff08;一&#xff09;班级 了解 年龄、知识程度相近&#xff0c;有共同的学…

python学习—第一步—Python小白逆袭大神(第二天)

python进阶python语法继续学习数据结构数字字符串列表元组字典面向对象继承JSON异常处理try except finallyLinux命令作业来啦&#xff01;问题python语法继续学习 数据结构 数字 Number类型用于存储数值。 1、数学运算math模块及常用函数 菜鸟教程 导入math 代码示例&#…

微信小程序事件和页面跳转

一、页面跳转 1.非TabBar页面 一个小程序拥有多个页面&#xff0c;我们通过wx.navigateTo进入一个新的页面 我们通过下边点击事件实现页面跳转进行代码实现及参考 wx.navigateBack&#xff08;&#xff09;回退到上一个页面 wx.redirectTo&#xff08;url&#xff09;删除…

最新AWVS14.9.220913107 支持Windows使用教程(附下载地址)

主要内容&#xff1a;awvs14.9下载、awvs14.9使用教程、awvs14.9安装教程、awvs14.9批量扫描、awvs14.9用法、awvs最新版下载 使用方法 一键PJ 一键PJ则只需要在安装Acunetix软件后&#xff0c;运行pj工具即可 通用思路 修改hosts文件&#xff08;C:\Windows\System32\driv…

15天深度复习JavaWeb的详细笔记(十一)——VUE、Element

文章目录demo11-VUE、Element1&#xff0c;VUE1.1 概述1.2 快速入门1.3 Vue 指令1.3.1 v-bind & v-model 指令1.3.2 v-on 指令1.3.3 条件判断指令1.3.4 v-for 指令1.4 生命周期2&#xff0c;Element2.1 快速入门2.2 Element 布局2.2.1 Layout 局部2.2.2 Container 布局容器…

Spring 注解

事务注解 使用注解 EnableTransactionManagement 开启事务支持后&#xff0c;然后在访问数据库的Service方法上添加注解 Transactional 便可 * EnableTransactionManagement&#xff0c;会额外加载 4 个 bean * BeanFactoryTransactionAttributeSourceAdvisor 事务切面类 …

C# ASP.NET Web Core API (.NET 6.0)

目录 一、简介 二、创建项目 三、启动项目 四、开放访问权限 五、添加其他的API 结束 一、简介 ASP.NET Core Web API 是 ASP.NET Core MVC 的一个功能。ASP.NET Core MVC 包含了对 Web API 的支持。可以构建多种客户端的 HTTP 服务。ASP.NET Core Web API可用于在 .NET…

LeetCode 0328. 奇偶链表

【LetMeFly】328.奇偶链表 力扣题目链接&#xff1a;https://leetcode.cn/problems/odd-even-linked-list/ 给定单链表的头节点 head &#xff0c;将所有索引为奇数的节点和索引为偶数的节点分别组合在一起&#xff0c;然后返回重新排序的列表。 第一个节点的索引被认为是 奇…

8-Arm PEG-ACA,8-Arm PEG-Acrylamide,八臂-聚乙二醇-丙烯酰胺可用于自由基引发剂

一&#xff1a;产品描述 1、名称 英文&#xff1a; 8-Arm PEG-ACA 8-Arm PEG-Acrylamide 中文&#xff1a; 八臂-聚乙二醇-ACA 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Acrylate/Acrylamide PEG Multi-arm PEGs 4、分子量&#xff1a;可定制 5、质量控制&a…

C++之模拟实现<unordered_set/map>及位图和布隆过滤器

目录&#x1f308;前言&#x1f681;1、哈希表的改造&#x1f682;2、模拟实现的完整代码&#x1f683;3、哈希表的应用&#x1f684;3.1、位图的概念&#x1f685;3.2、位图的实现&#x1f686;3.3、位图完整代码&#x1f689;3.4、位图的应用&#x1f687;4、位图的变形&…

qt中的qmake.conf文件

qmake.conf文件是qt用于存放系统平台和编译器相关默认值的配置文件。qt为所支持的各种系统平台和对应编译器附加了相关的配置文件。其位置在QtInstallDIr/Qt5.12.0\5.12.0\msvc2015_64\mkspecs中。 windows台式机系统的默认配置​​​​​​这里的每一个文件夹代表一个qt所支…