【测试开发】OKR 小程序端黑盒测试报告
【测试报告】OKR 小程序端
| 项目名称 | 版本号 | 测试负责人 | 测试完成日期 | 联系方式 |
|---|---|---|---|---|
| OKR 小程序端 | 4.0 | 马铭胜 | 2025-03-25 | 15362558972 |
1、项目背景
1.1 OKR 用户端
在如今这个快节奏的时代中,个人和组织的成长往往依赖于清晰、明确且意义深远的目标。然而,如何设定并持续跟踪目标,保证目标达成,却是一个挑战。相信很多人都有过这样的经历:动力十足、信心满满地写下自己的目标,然而一段时间后,计划一拖再拖,目标不了了之。flag 立了又倒的情况是不是也常常在你身上出现呢?对于没有达成的目标,我们总有放弃的理由。但通过我们的小程序,这些理由都得以消除。
我们的小程序以 OKR 为核心,聚焦于“目标”和“关键结果”,引领用户理清未来成长目标,成为自我进步的设计者、团队发展的推动者。此外,我们将用户侧重为年轻群体,如学生和初创团队。旨在帮助年轻人更好地实现自我、规划未来,为自己的人生赋能。
1.2 OKR 管理端
已完成其黑盒测试,自动化测试:https://blog.csdn.net/Carefree_State/article/details/146425815
1.3 测试计划
测试类型:
对 OKR 小程序端进行功能测试、性能测试、界面测试、安全性测试、兼容性测试、易用性测试、弱网测试
编写自动化测试脚本,进行自动化回归测试
测试技术:
Python(3.8.0)、Miniu、JMeter、Apifox、FIddler
涉及的接口:
api-docs:https://api.bitterfree.cn/v3/api-docs
被测的系统:
欢迎二维码链接:https://api.bitterfree.cn
后端代码:https://github.com/CarefreeState/OKR-System4.0
前端代码(未开源,请找联系人)
2、测试分类
2.1 黑盒测试
1)功能测试

2)界面测试

3)易用性测试

4)安全性测试

5)兼容性测试

6)弱网测试

配置 PC 端微信代理:
- 找到 fiddler 的代理端口


- 重启微信选择代理连接
- 建议设置 127.0.0.1(如果是本机的话),如果是内网,要确保真的在一个局域网中
- 端口设置刚才找到的,大概率是 8888

其他问题参考文章:
https://zhuanlan.zhihu.com/p/642341676
https://blog.csdn.net/weixin_38125045/article/details/108238760
设置弱网:


ctrl f 找到 “m_SimulateModem”:

上面那个代表请求流延迟,下面的则是响应流延迟:
- 单位为 ms,含义为 1KB 需要加载的时间(每上传 1KB,延迟多少毫秒)
当然这个单位完全可以换算成速率,所以也可以说是上行速率与下行速率
2G、3G 网络设置:【Fiddler】使用Fiddler模拟弱网测试(2G/3G)_windows模拟低网速测试-CSDN博客
其中你会发现 3G 的时候在配置就是几毫秒的了,其实我们平时的网速大概率 1KB 的延迟为 0ms,打开弱网测试后,默认的 300 就已经很慢了,而其中 3G 算是弱网中较快的了,4G 的话应该称不上是弱网
为了更好的效果,模拟 2G 为例:

记得重新点击:

接下来打开小程序,进入对应页面进行弱网测试…
因为小程序有微信原生页面,所以不会一片空白
理论上,若弱网情况下访问流畅有以下特质:
- 请求体不大
- 服务端处理请求快,响应时间快
- 响应体不大
- 客户端请求与渲染性能大(时间复杂度低)
这样,哪怕上行/下行速率慢,页面也能很快渲染
2.2 黑盒测试结果与 BUG 提交
测试用例通过率:137/140 × 100% = 97.86%
1)多账号合并登录能力未合并
级别: 严重
环境: Windows、Apifox
版本: Windows 11 专业版、Apifox 2.7.1
描述: 账号 A 合并账号 B 后,账号 A 没有继承账号 B 的登录能力,比如账号 B 有密码,账号 A 没有,合并后,无法进行登录的操作
重现步骤:
- 准备一个账号 B,邮箱注册,并设置密码
- 账号 A 绑定该邮箱,触发账号合并
- 账号 A 通过密码尝试登录
预期结果: 登录成功
实际结果: 登录失败
可能的原因与解决方案: 没有考虑到这种情况,然而对于登录能力是非常需要兼容的!
状态: Closed
2)多账号合并时共同团队信息合并异常
**级别:**一般
环境: Windows、Apifox
版本: Windows 11 专业版、Apifox 2.7.1
描述: 两个账号有一个共同团队/团队树,账号合并后,发现团队/团队树中出现两个一样的成员(该账号在成员列表中出现了两次)
重现步骤:
- 准备小程序账号 A、密码账号 B、小程序账号 C
- 账号 C 创建一个团队并获取邀请码发给 A、B,邀请 A、B 加入,A、B 扫码后接受邀请
- 账号 A 合并账号 B 后
- 账号 C 查看团队成员列表
预期结果: 只有账号 A
实际结果: 账号 A 出现了两次
可能的原因与解决方案: 没有考虑到这种情况,需要特殊处理!
状态: Closed
3)多账号合并后被合并用户的 Token 无法继续访问系统
级别: 一般
环境: Windows、Apifox
版本: Windows 11 专业版、Apifox 2.7.1
描述: 小程序账号 A 合并密码账号 B 后,账号 B 用先前登录的 Token 无法继续访问系统
重现步骤:
- 小程序账号 A、密码账号 B
- 账号 B 登录系统以获取 Token
- 账号 A 合并账号 B
- 账号 B 使用该 Token 继续访问系统
预期结果: 正常访问
实际结果: 报不存在这个用户
可能的原因与解决方案: 没有考虑到这种情况,需要特殊处理,如缓存被合并的用户 id 到主用户的 id 的映射。
状态: Closed
2.3 自动化测试
- 使用 Apifox 进行小程序自动化测试(未开源)
- 小程序自动化测试项目链接: https://github.com/CarefreeState/OKR-Mini-Automation
2.4 自动化测试结果

- 接口自动化测试报告: https://testdoc.bitterfree.cn/apiautomation.html

- 小程序自动化测试报告: https://testdoc.bitterfree.cn/miniautomation/index.html
- 自动化测试截图记录链接: https://testdoc.bitterfree.cn/automationimages.html
def testCreateOkrCore(self):# 登录# self.mini.clear_auth()# self.page.get_element("page > view > view.login > button").click()# 创建 OKRself.creteOkr()# self.app.screen_shot()# 创建初始化第一象限self.firstQuadrantInit()# 创建初始化第一象限self.firstQuadrant()# 其他象限self.otherQuadrant()# 日记录按钮self.dayRecord()# 结束 OKRself.endOkr()# 结束self.mini.shutdown()
2.5 性能测试
性能测试覆盖的接口:

梯度负载测试配置:

2.6 性能测试结果
在可以接口能够正常响应的情况下,可上升到 45 个并发用户数,吞吐量可达 26 TPS;
性能测试报告:https://testdoc.bitterfree.cn/performance/report/index.html
3、遗留风险
测试时间紧张,小程序自动化测试只覆盖小部分功能,若项目迭代,需要花很多时间去做回归测试,所以在下个阶段尽可能需要完善自动化测试脚本!
4、测试结果评估
主要功能均已通过验证,本次测试工作已覆盖可见的需求,大部分 BUG 都已被测试提交并进行修复,项目已达到上线标准。为确保上线后的稳定性和用户体验,需采取观察线上数据,查看线上用户操作日志,及时跟进用户反馈等措施。
5、测试报告总览
https://testdoc.bitterfree.cn/
相关文章:
【测试开发】OKR 小程序端黑盒测试报告
【测试报告】OKR 小程序端 项目名称版本号测试负责人测试完成日期联系方式OKR 小程序端4.0马铭胜2025-03-2515362558972 1、项目背景 1.1 OKR 用户端 在如今这个快节奏的时代中,个人和组织的成长往往依赖于清晰、明确且意义深远的目标。然而,如何设定…...
HTTP 1.0和2.0 有什么区别?
HTTP 1.0和HTTP 2.0是互联网中用于数据传输的重要协议,两者在功能和性能上有显著差异。 以下是它们的主要区别: HTTP 1.0 的特点: 单一连接:每个请求需要独立连接,导致高延迟和资源浪费。文本传输:使用文…...
部署高可用PostgreSQL14集群
目录 基础依赖包安装 consul配置 patroni配置 vip-manager配置 pgbouncer配置 haproxy配置 验证 本文将介绍如何使用Patroni、Consul、vip-manager、Pgbouncer、HaProxy组件来部署一个3节点的高可用、高吞吐、负载均衡的PostgresSQL集群(14版本)&…...
JavaScript 对事件的反应机制
JavaScript 对事件的反应机制 JavaScript 对事件的反应机制是网页实现用户交互的核心,主要通过事件监听与处理函数实现对用户行为的响应。以下是关键要点解析: 一、事件机制基础 1. 事件的定义 事件是用户或浏览器在页面上的动作(如点击、…...
Vue3中keep-alive缓存组件应用场景。
文章目录 一、KeepAlive是什么?二、基本使用1.例子2.keep-alive使用 三、其他属性3.1 包含/排除3.2 最大缓存实例数3.3 缓存实例的生命周期 总结 一、KeepAlive是什么? 是一个内置组件,它的功能是在多个组件间动态切换时缓存被移除的组件实例…...
Pythonload JSON文件需要手动关闭吗?
在Python中使用 json 模块加载JSON文件时,通常不需要手动关闭文件。 例如,使用以下方式加载JSON文件: import json with open(data.json, r) as f: data json.load(f) 在上述代码中,使用 with 语句打开文件,它会在代码…...
SCI论文阅读指令(特征工程)
下面是一个SCI论文阅读特征工程V3.0,把指令输入大模型中,并上传PDF论文,就可以帮你快速阅读论文。 优先推荐kimi,当然DeepSeek、QwQ-32B等大语言模型也可以。测试了一下总结的还不错,很详细。 请仔细并深入地阅读所提…...
CosyVoice2在Windows系统上本地部署的详细步骤
CosyVoice2在Windows系统上本地部署的详细步骤: 下载源码并初始化: 确保你的设备上安装了Git。打开命令提示符(cmd),执行以下命令来克隆仓库:git clone --recursive https://github.com/FunAudioLLM/CosyVo…...
鸿蒙入门——ArkUI 跨页面数据同步和应用全局单例的UI状态存储AppStorage 小结(三)
文章大纲 引言一、AppStorage 应用全局的UI状态存储1、StorageProp和StorageLink装饰器建立联系2、StorageProp2.1、StorageProp使用规则2.2、StorageProp变量的传递/访问规则2.3、StorageProp支持的观察变化2.4、StorageProp 值初始化和更新 3、StorageLink3.1、StorageLink使…...
RabbitMQ 核心组件及功能详解
RabbitMQ 是一个开源的消息代理和队列服务器,其核心架构由以下关键组件构成: 一、核心组件架构 #mermaid-svg-mIHqbpvVt25Kpyl0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-mIHqbpvVt25Kpyl0 .error-icon{fil…...
海思烧录工具HITool电视盒子刷机详解
HiTool是华为开发的一款用于海思芯片设备的刷机和调试工具,可对搭载海思芯片的机顶盒、智能电视等设备进行固件烧录、参数配置等操作。以下为你详细介绍: 功能用途 固件烧录:这是HiTool最主要的功能之一。它能够将下载好的适配固件文件烧录到…...
探秘 C++ 双星系统模型:实现快速值切换
在软件开发的世界里,有时我们会遇到需要频繁在两个值之间进行切换的场景。为了高效地处理这类情况,我们可以设计一个专门的类来实现这个功能。今天,我们就来详细介绍一个用 C 实现的双星系统模型类 Turner,它能够帮助我们轻松地在…...
AI 生成内容(AIGC):从文本到视频的完整流程
近年来,AI 生成内容(AIGC, AI-Generated Content) 迅速发展,从文本、图片到音频、视频,AI 在创意内容生成方面展现出了惊人的能力。AIGC 不仅提升了内容创作效率,还降低了成本,使得普通用户也能…...
使用VS2022编译CEF
前提 选择编译的版本 CEF自动编译,在这里可以看到最新的稳定版和Beta版。 从这里得出,最新的稳定版是134.0.6998.118,对应的cef branch是6998。通过这个信息可以在Build requirements查到相关的软件配置信息。 这里主要看Windows下的编译要…...
WebMvcConfigurer 的 addResourceLocations
在 Spring Boot 的 addResourceLocations 方法中,file: 是一个 URL 前缀,用于指示资源的位置是本地文件系统路径。以下是详细解释: 一、file: 的作用 file: 是 Java 中用于表示本地文件系统的 URL 前缀。它告诉 Spring Boot,资源…...
Pytorch学习笔记(八)Learn the Basics - Save and Load the Model
这篇博客瞄准的是 pytorch 官方教程中 Learn the Basics 章节的 Save and Load the Model 部分。 官网链接:https://pytorch.org/tutorials/beginner/basics/saveloadrun_tutorial.html 完整网盘链接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m …...
正则表达式基本语法和Java中的简单使用
先来个例子 public static final Pattern CHINESE_PATTERN Pattern.compile("[\\u4e00-\\u9fa5]"); / 检测字符串是否包含汉字 String text "Hello 世界"; boolean hasChinese CHINESE_PATTERN.matcher(text).find(); // 返回 true// 提取所有汉字 Mat…...
Mysql 回表查询,什么是回表查询,如何拒绝sql查询时的回表问题
文章目录 1. 什么是回表(回表查询)2. 如何减少回表3. 使用案例3.1 问题分析3.2 避免回表查询3.3 开始优化前言: 在继续讲解专栏内容之前,先学习几个概念,以便更好了解: 什么是聚簇索引什么是回表查询这篇文章详细分析 回表查询。聚簇索引的理解可以进入这篇文章:什么是聚…...
Spring Boot响应压缩配置与优化
一、核心工作机制 1.1 自动协商触发条件 Spring Boot的响应压缩功能基于智能协商机制,需同时满足以下条件方可触发: 客户端支持:请求头包含Accept-Encoding: gzip/deflate数据量阈值:响应体大小超过预设值(默认2KB&…...
常考计算机操作系统面试习题(三上)
目录 1. 为何要引入与设备的无关性?如何实现设备的独立性? 2. 页面置换先进先出算法 3. 页面置换先进先出算法,4个页框 4. 进程优先级调度算法 5. 短作业优先调度策略 6. 平均内存访问时间计算 7. 页式存储和段式存储的物理地址计算 …...
MATLAB 绘制空间分布图 方法总结
方法一:用mapshow函数 figure(1); hold on %% 添加陆地 land shaperead(landareas); mapshow(landareas.shp, FaceColor, [1 1 1], EdgeColor, [0.3 0.3 0.3],FaceAlpha,0)%% 添加站点 for i 1:size(mycmap,1)mapshow(lon(label i),lat(label i),displaytype,po…...
Maven工具学习使用(三)——坐标和依赖
坐标元素 Maven坐标是通过一些元素定义的,元素包括groupId、artifactId、version、packaging、classifier groupId:定义当前Maven项目隶属的实际项目。Maven项目和实际项目不是一对一的关系。一个实际的项目对应的Maven模块可能会有很多,比如SpringFramework。groupId不应…...
命令模式(Command Pattern)★
命令模式(Command Pattern) 如果任务有多个复杂的操作,可以使用命令模式将任务的操作封装为命令对象。这些命令对象可以在需要时按顺序执行,方便管理任务执行的逻辑和回滚操作。 示例: class Command { public:virtu…...
深度学习论文: Image Segmentation Using Text and Image Prompts
深度学习论文: Image Segmentation Using Text and Image Prompts Image Segmentation Using Text and Image Prompts PDF: https://arxiv.org/abs/2503.10622v1 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/…...
Docker+Ollama+Xinference+RAGFlow+Dify+Open webui部署及踩坑问题
目录 一、Xinference部署 (一)简介 (二)部署 (三)参数 (四)错误问题 (五)Xinference配置Text-embedding模型 (六)Xinference配…...
Axure项目实战:智慧城市APP(四)医疗信息(动态面板、选中交互应用)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:智慧城市APP医疗信息模块 主要内容:医疗信息模块原型设计与交互 应用场景:医疗信息行业 案例展示: 案例视频&…...
缓存设计模式
缓存设计模式(Cache Design Pattern)是一种用于存储和管理频繁访问数据的技术,旨在提高系统性能、降低数据库或后端服务的负载,并减少数据访问延迟。以下是几种常见的缓存设计模式,并用 Python Redis 进行示例代码实现…...
第十三章:优化内存管理_《C++性能优化指南》_notes
优化内存管理 一、内存管理基础概念二、自定义分配器三、智能指针优化重点知识代码示例:智能指针性能对比 四、性能优化关键点总结多选题设计题答案与详解多选题答案设计题示例答案(第1题) 一、内存管理基础概念 重点知识 动态内存分配开销…...
【网络通信安全】基于华为 eNSP 的链路聚合、手工负载分担模式与 LACP 扩展配置 全解析
目录 一、引言 二、链路聚合技术基础 2.1 链路聚合的定义与作用 2.2 链路聚合的工作原理 2.3 链路聚合的模式分类 三、华为 eNSP 简介 3.1 eNSP 的概述 3.2 eNSP 的安装与配置 3.2.1 安装环境要求 3.2.2 安装步骤 3.2.3 配置虚拟网卡 四、手工负载分担模式配置 4.…...
RK3568笔记八十: Linux 小智AI环境搭建
若该文为原创文章,转载请注明原文出处。 最近小智AI火了,韦老师出了 Linux 小智 AI 聊天机器人 版本,想移植到 RK3568上, 由于和韦老师硬件不同,所以需要交叉编译一些库,为后续移植做准备。 一、环境 1、…...
