如何编写一份完整的软件测试报告?(进阶版)百分之90不知道
背景
作为测试从业者,编写测试用例,测试计划,测试报告都是必经之路,最近完成了年终述职以及版本准出,感觉测试报告或者各类报告真是职场人不可或缺的一项技能,趁着热乎劲🔥,写下一些注意事项吧~
01
什么是测试报告?
要写测试报告,首先得知道到底什么是测试报告?
测试报告:是完成测试工作之后,测试人员交出的一份总结性汇报文档
这既是对于你测试工作的一个总结,也是对于你测试对象的一个评估!
02
测试报告是给谁看的?
既然测试报告主要包含这两部分,那么另一个问题就是测试报告要写给谁看?
给领导?还是产品?还是开发?还是企业里的任何人?
这一点很重要!!!所以,问题来了,你的测试报告是给谁看的?在企业中一般是给所有与这个项目有关的人看的,包括你的主管,项目领导,产品,运营,前后端开发等等,甚至是销售人员所以这一份报告怎么样才能让所有人都能看懂?怎么样让所有人都能一眼看到他想要的内容?
03
测试报告应该怎么写?
既然你的测试报告要给这么多不同岗位的人提供他们想要的信息,那就应该有一个逻辑,一个贯穿始终的逻辑!我们先看看一份测试报告应该包含什么?然后再看一下这份测试报告的内容应该以什么方式呈现?
测试报告的内容
工作内容
首先,这份报告要体现你的工作内容,一个大项目搞了一年半载,一个小的功能回归就点了几下鼠标,这都是你的工作,说白了,和你下地干活没有任何区别
下地:犁地,播种,灌溉……收获粮食(结果)
测试:功能,性能,压力……软件稳定和健壮(结果)
所以这份报告应该体现你的工作内容!包括但不限于:
-
功能测试:
系统全部功能的走查/验证/回归,系统设计规格书内的功能是否全部实现,是否正常操作产生了异常预期
-
性能测试:
系统整体性能的验证,在平时工作时,CPU和MEM的剩余;在极限场景下,系统的剩余性能,能否稳定工作(苟延残喘)
-
压力测试:
一般考察7*24h下,系统的稳定情况,微信可否连续聊天,抖音能否持续推送视频,连续登录10000次账号成功率是否高于99.9999%
-
安全测试:
这里就要考虑系统的各种安全情况,例如SQL注入,网络攻击等
-
UI测试:
这要求测试人员以一个真实用户的角度,去考虑这一功能的呈现,该有的弹框是不是都有,图标设计的是不是对称,某一功能的路径会不会太深
-
兼容性测试:
这就包括多种兼容性,软件兼容性比如新旧版本的游戏能否互通,硬件兼容性比如市面常见的手机电脑能否支持该软件的平稳运行,甚至于蓝牙耳机鼠标等各种外设
-
数据一致性测试:
这种数据一致性体现在各个方面,SQL查询结果是否正确,返回值是否正常,网络数据传输前后是否完全一致
-
可靠性测试/异常测试:
一般都考虑各种异常情况下的系统反馈,比如系统剩余空间不足5%检查软件能否正常运行,弱网丢包率高于50%语音通话的质量能否接受,读写过程中插拔外设是否对原始数据有损坏
软件结果
这里包含的也比较繁多,就像你下地秋收一样,如何评判你的劳动成功?颗粒是否饱满,每亩产量是否充足,坏果率大概是多少?
但是一定要记住,不是所有人都会懂你这些技术细节,所以需要一句简单的总结,来告诉所有人经过你的测试工作,软件质量到了一个什么样的地步?【例如】
-
当前软件版本质量:高
各项功能均已正确实现,系统经过7*24小时无任何稳定性问题,复合准出标准,予以准出!
-
当前软件版本质量:中
各项功能基本实现,系统经过7*24小时存在稳定性问题,遗留问题主要分为3类:第一,第二,第三,问题出现后系统可自动恢复,带风险准出!
-
当前软件版本质量:低
各项功能基本实现,仍存在遗留问题,系统经过7*24小时仍存在稳定性问题,包括内存泄漏等严重问题,不予准出!
你的价值
虽然这叫一份测试报告,但是有些软件庞大,光功能点就动辄成百上千,大的模块都有十几个,你一个人是测不完的,那怎么办?难道就只是呈现你的测试工作就可以了吗?
当然不行!
还是以CSDN为例,我的工作就是测试Android端APP,我测试了功能(发帖,看帖,评论等),性能(系统多后台下浏览,24h连续浏览等),兼容性(市面主流安卓机)
那我就只写这么多吗?
比如A同学负责Web端的测试(Windows&Mac),B外包同学负责IOS端的测试,C团队参与了弱网情况的软件稳定性测试,这些所有的进展都要在这里汇总,因为这一份测试报告就是整个项目的出口,而不是你一个人工作的呈现!
当然,ABC团队可能都有自己的测试报告,你可以引用
当前弱网情况下软件稳定性:高,在丢包率30%以下时,发帖成功率可达到87.91%;丢包率50%以上时,会给用户提示“请检查网络”并禁用发帖功能;
测试报告的结构
说完了测试报告应该有哪些内容,那么就该说说这些内容应该如何排列组合了
1、首先呈现出你的结论
很多领导基本就只看这一点了,直接给出当前软件结论,如果软件质量高,没啥问题,他们就根本不会接着往下看了,这里其实有点像议论文的总分结构,先总述,后分开详述
2、当前遗留问题&排期
我前面说过了,如果这里没有遗留问题,一定是你的问题,而不是系统没有任何问题!任何系统都一定会存在各种各样的bug,大到内存泄漏,小到token提示信息缺失,如果没有遗留问题,说明你的测试工作还不到位,加油再测吧~
当前遗留严重问题
原则上有严重问题其实是不能发版的,但是如果不影响用户使用或者有应对措施就可以
-
比如CSDN客户端会crash,但是前提是需要连续刷24h,这样的客户场景一般难以遇到;
-
比如CSDN在多后台情况下打开就闪退,那么可以弹窗提示客户手动清理后台后再次尝试打开;
所有的严重问题必须在下一个版本完成迭代!!!
剩余遗留问题给出排期
那么剩下的就是一些普通问题或者提示性问题,虽然不严重,但它是问题就得解决,必须得给出排期,并且精确到责任人,比如这么几类情况
-
这个问题可能对用户影响更大,下个版本必须解;
-
这个问题有点难解,第二个版本再排期;
-
这个问题现在连头绪都没有,长期跟踪;
3、软件版本&算法/组件版本
这里一定要写清楚所有的软件版本,方便以后问题的迭代和回溯(甩锅),比如像下面这样
-
当前软件版本号V1.2.3
-
推荐算法模型为recommend_20220407_1305_alpha
-
当前软件MD5值为23gk2hf2v3uf2y3g23guy
-
软件包升级下载链接为https:test0407/download/test.apk
-
以此类推……
4、全业务回归情况
这里要写出系统测试情况,做了什么测试,覆盖了多少轮,一个是体现你的工作(摸鱼)情况,另一个反馈完整的软件质量,比如:
-
功能测试:ALL:100,PASS:96,FAIL:4,BLOCK:0,通过率96%
-
性能测试:ALL:100,PASS:81,FAIL:9,BLOCK:10,通过率90%(BLOCK不能算在已执行里面,这里是81/90)
-
以此类推……
5、各类专项进展&竞品分析
还是上面说过的其他团队的进展,或者你这产品的卖点,做一个专项,要有评测和竞品分析
虽然这两项往往都是合在一起的,但是这里我分开举例吧,比如自动编辑博文专项:
-
对于百字文章,成功率高达100%,对于错别字的识别,成功率高达99.86%;
-
对于千字文章,成功率高达97.03%,对于错别字的识别,成功率高达96.28%;
-
对于万字文章,成功率不低于80%,对于错别字的识别,成功率不低于75%;
再比如发帖耗时的竞品分析:
-
发帖耗时这一方面,在各量级的文章下都优于友商不知网:
-
优势是发帖耗时更低,只需要183ms,速度领先35.76%;
-
劣势是弱网下发帖的成功率太低,仅27.30%,同样网络下低于不知网的49.72%;
其实你们也发现了,我这文章里全是字,你们也不想看,所以这里有一些小技巧,能画📈的就画图表,问题清单或者问题描述也可以用xmind的形式绘制出来,该复杂的地方就复杂,该简单的时候就简单,详略得当,我就随便举两个🌰吧
【例1】自动编辑博文专项
-
对于百字文章,成功率高达100%,对于错别字的识别,成功率高达99.86%;
-
对于千字文章,成功率高达97.03%,对于错别字的识别,成功率高达96.28%;
-
对于万字文章,成功率不低于80%,对于错别字的识别,成功率不低于75%;
【例2】一键编辑的竞品分析
在一键编辑成功率这一方面,整体的成功率较高,符合预期;在低量级的文章下优于友商全知网,而且随着文章量级增加,成功率的变化比较平稳
-
优势是2000字以下的文章,不知网的成功率要明显优于全知网;
-
劣势是2000字以上的文章,不知网的成功率略逊于全知网,且耗时更长,建议长文本分批量编辑后合并;
总结:给大家准备了从功能测试到测试开发全套测试视频课程+项目实战+面试宝典+简历模板
需要的小伙伴可以点击主页,验证消息填写:000即可获取
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九, 银行业务测试
十,大数据测试和业务分析
十一:项目实战
相关文章:

如何编写一份完整的软件测试报告?(进阶版)百分之90不知道
背景 作为测试从业者,编写测试用例,测试计划,测试报告都是必经之路,最近完成了年终述职以及版本准出,感觉测试报告或者各类报告真是职场人不可或缺的一项技能,趁着热乎劲🔥,写下一些…...
python企业微信小程序发送信息
python企业微信小程序发送信息 在使用下面代码之前先配置webhook 教程如下: https://www.bilibili.com/video/BV1oH4y1S7pN/?vd_sourcebee29ac3f59b719e046019f637738769 然后使用如下代码就可以发消息了: 代码如下: #codinggbk import r…...

Java入门篇 之 逻辑控制(练习题篇)
博主碎碎念: 练习题是需要大家自己打的请在自己尝试后再看答案哦; 个人认为,只要自己努力在将来的某一天一定会看到回报,在看这篇博客的你,不就是在努力吗,所以啊,不要放弃,路上必定坎坷&#x…...
Android Google登录并获取token(亲测有效)
背景: Android 需要用到Google的登录授权,用去token给到服务器,服务器再通过token去获取用户信息,实现第三方登录。 我们通过登录之后的email来获取token,不需要server_clientId;如果用server_clientId还…...

npm ERR! code ELIFECYCLE
问题: 一个老项目,现在想运行下,打不开了 npm install 也出错 尝试1 、使用cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org cnpm install 还是不行 尝试2、 package.json 文件,去掉 那个插件 chorm…...

Mgeo:multi-modalgeographic language model pre-training
文章目录 question5.1 Geographic Encoder5.1.1 Encoding5.1.2 5.2 multi-modal pre-training 7 conclusionGeo-Encoder: A Chunk-Argument Bi-Encoder Framework for Chinese Geographic Re-Rankingabs ERNIE-GeoL: A Geography-and-Language Pre-trained Model and its Appli…...

[激光原理与应用-75]:西门子PLC系列选型
目录 一、西门子PLC PLC系列 二、西门子PLC S7 1200系列 2.1 概述 2.2 12xx系列比较 三、西门子 PLC 1212C系列 四、主要类别比较 4.1 AC/DC/RLY的含义 4.2 AC/DC/RLY与DC/DC/DC 4.3 直流输入与交流输入比较 4.4 继电器输出与DC输出的区别 一、西门子PLC PLC系列 …...

Linux上编译sqlite3库出现undefined reference to `sqlite3_column_table_name‘
作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 在Ubuntu 18上编译sqlite3库后在运行程序时出现undefined reference to sqlite3_column_table_name’的错误。网上的说法是说缺少SQLITE_ENABLE_COLUMN_M…...

第十五章 EM期望极大算法及其推广
文章目录 导读符号说明混合模型伯努利混合模型(三硬币模型)问题描述三硬币模型的EM算法1.初值2.E步3.M步初值影响p,q 含义 EM算法另外视角Q 函数BMM的EM算法目标函数LEM算法导出 高斯混合模型GMM的EM算法1. 明确隐变量, 初值2. E步,确定Q函数3. M步4. 停止条件 如何应用GMM在聚…...

自动化测试如何准备测试数据
其实大部分类型的测试都需要去准备测试数据。 手工测试:一些基础数据,比如配置数据等等是需要去准备的;自动化测试:基础需要准备,现有数据,动态运行时产生的数据是需要准备的;性能测试…...

javaEE -13(6000字CSS入门级教程 - 2)
一:Chrome 调试工具 – 查看 CSS 属性 首先打开浏览器,接着有两种方式可以打开 Chrome 调试工具 直接按 F12 键鼠标右键页面 > 检查元素 点开检查即可 标签页含义: elements 查看标签结构console 查看控制台source 查看源码断点调试ne…...
vscode 使用python无法导入库
刚刚在使用vscode,编辑python时,在使用语句 import matplotlib.pyplot as plt 时出现报错,但是在命令行下和conda环境中没有报错 在尝试 pip uninstall matplotlib pip install matplotlib后无法解决 之后再发现是工作的目录出错导致的,…...

三维向量旋转
三维向量旋转 问题描述问题分析 v ⃗ ∣ ∣ \vec{v}_{||} v ∣∣的旋转 v ⃗ ⊥ \vec{v}_{\bot} v ⊥的旋转 v ⃗ \vec{v} v 的旋转结论致谢 问题描述 如图1所示,设一个向量 v ⃗ \vec{v} v 绕另一个向量 u ⃗ [ x , y , z ] T \vec{u}[x,y,z]^{T} u [x,y,z]T…...

顺序表——leetcode
原地删除数据 我们的思路这里给的是双指针,给两个指针,从前往后移动,如果不是val就覆盖,如果是我就跳过,大家一定要看到我们的条件是原地修改,所以我们不能另开一个数组来实现我们这道题目。 这里我们给两…...

Kaprekar 7641 - 1467= 6174
package homework;import java.util.Arrays;import util.StringUtil;/*** 数学黑洞数6174,即卡普雷卡尔(Kaprekar)常数, 它的算法如下: 取任意一个4位数(4个数字均为同一个数的除外)࿰…...

李宏毅机器学习笔记.Flow-based Generative Model(补)
文章目录 引子生成问题回顾:GeneratorMath BackgroundJacobian MatrixDeterminant 行列式Change of Variable Theorem简单实例一维实例二维实例 网络G的限制基于Flow的网络构架G的训练Coupling LayerCoupling Layer反函数计算Coupling Layer Jacobian矩阵计算Coupli…...
Java使用Spark入门级非常详细的总结
目录 Java使用Spark入门 环境准备 安装JDK 安装Spark 编写Spark应用程序 创建SparkContext 读取文本文件 计算单词出现次数 运行Spark应用程序 总结 Java使用Spark入门 本文将介绍如何使用Java编写Spark应用程序。Spark是一个快速的、通用的集群计算系统,它可以处理…...

kubernetes集群编排——k8s存储
configmap 字面值创建 kubectl create configmap my-config --from-literalkey1config1 --from-literalkey2config2kubectl get cmkubectl describe cm my-config 通过文件创建 kubectl create configmap my-config-2 --from-file/etc/resolv.confkubectl describe cm my-confi…...

【软件STM32cubeIDE下H73xx配置串口uart1+中断接收/DMA收发+HAL库+简单数据解析-基础样例】
#【软件STM32cubeIDE下H73xx配置串口uart1中断接收/DMA收发HAL库简单数据解析-基础样例】 1、前言2、实验器件3-1、普通收发中断接收实验第一步:代码调试-基本配置(1)基本配置(3)时钟配置(4)保存…...
jdk8和jdk9中接口的新特性
jdk8之前:声明抽象方法,修饰为public abstract。 jdk8:添加声明静态方法,默认方法。 jdk9:添加声明私有方法 jdk8: ①接口中声明的静态方法只能被接口来调用,不能使用其实现类进行调用 静态方法的声明&…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...