项目上线出Bug:我踩过的4个大坑及事后反思

news/2024/11/6 13:46:36/

最近参与的拥有7大模块的系统项目,从去年11月开始开发,共5个月左右。

该项目是用Java+Node.js开发,开发人员含外包将近10位,测试人员A从头跟到尾,其他测试人员都是紧急时刻从其他项目临时调来,包含兄弟部门开发人员B、刚毕业测试人员C,仅有的1位10多年测试经验的外援同学也只加入3天时间。

部署到预生产环境后,甲方项目经理发来了3封bug邮件,让我对自己产生了怀疑和失望。于是对出现的问题进行分类,总结原因主要有以下几点:

与项目经理沟通不充分

  • 项目经理发给甲方在预生产环境试用的测试账号是我曾经发给项目经理的在测试环境的账号。

  • 甲方项目经理在预生产环境试用前,项目经理未同步消息给组员预先进行预生产环境内测。

测试流程未切实贯彻好

预生产环境未做确认。测试测试环境测试通过后,未在预生产环境与业务人员一起做回归测试,暴露出明显的bug,比如“列表页有数据但是导出Excel中数据是空的”,“测试帐号全部出现权限配置错误”。

由于测试人员病假,预生产(包括账号权限配置)未做确认测试就被上线到生产环境。

功能缺陷

  • 开始日期和结束日期逻辑关系未做校验;

  • 含税和不含税金额逻辑关系未做校验;

  • 文本字段输入超长字符(前端未做限制+数据表字段未设置合适的字段类型与长度)。

预生产环境缺少铺底测试样例数据

预生产环境样例数据不够,更加不足以支撑后期性能测试。

针对以上出现的问题,吸取前期的经验教训,便于在后续模块及发布版本中做出如下改进。

与项目经理充分沟通

像这次项目经理要求提供账号时,应该问清楚需要哪个环境的,测试、预生产还是生产环境,能避免因为账号使用问题让甲方试用时受阻。

在预生产环境做确认测试

测试环境测试通过后,需要在预生产环境做确认测试。举个例子,台账数据的列表页导出功能,在测试环境上点击导出,可以导出Excel数据到本地,而在预生产环境上导出数据却是空的。

如果在预生产上严格执行这步测试流程,不至于出现这样的功能缺陷。

这里也提醒读者,工作中出现个人原因缺席可能会影响上线等重点里程碑事件时,一定要提前跟所有干系人沟通到位,争取得到各方支援,或延迟上线或缩减上线功能,总之保证把好质量这一最后一关。

即使后期出现质量事件,也有个交代。

确认产品需求

由于项目的需求文档是乙方设计同学D编写的,其颗粒度很粗。举个简单的例子,页面的导出功能,一句话描述如下所示:“导出数据为EXCEL文档格式,数据范围与系统权限一致。”

提供的原型如下图:


除了表明导出格式这个重点信息外,其他限制未作说明,比如列表页数据表第一列是复选框,那么用户勾选某些复选框后执行导出操作,系统是导出勾选的数据还是依然导出的是列表页上的所有数据?

诸如这样的例子不计其数,几乎每个功能在需求文档上都不能完整地呈现。

这种情况下,要对功能进行多次确认,找开发、找乙方需求D,如果推不动,向上推,找到项目经理,让项目经理找D的上级,能不能解决那也是上层商务的事情了。

编写完备的测试用例集

需求确认后,测试用例编写的颗粒度需要细到单个按钮。不能急于求成,不能因为项目经理的催促或是需求的不明确或是开发同学的低水平而减少测试用例编写的详细度,囫囵吞枣,必然会造成产品质量的低劣,尤其需要重视异常场景的覆盖。

这次用户大批量试用过程中,反馈系统导入功能体验较差。分析了需求文档和测试用例后,发现异常场景除了必填项校验外几乎没有覆盖到。导入功能总结有如下的异常场景:

1、填写必填项,不填写非必填项,应该可导入成功;

2、未填必填项,填写非必填项,应该不能导入;

3、填写的日期字段不符合系统支持的格式,日期字段异常校验(日期=32,2月有30日,这些百度能搜到更详细的,不在本文叙述重点内,感兴趣的同学自行搜索);

4、填写的数字字段填写为非数值格式,比如对demical类型的字段填写成文本型;

5、填写的金额字段超出数据表设计的长度;

6、选择的下拉选项超出模板给定的下拉列表范围;

7、填写的文本字段长度超过前端限制的字符或者数据表设计的字段长度。

预生产环境添加铺底数据

通过权限配置表在后台配置各角色账号权限,每个模块每个列表页分别以不同级别的账号录入不少于11条数据(系统默认每页显示条数=10),随着每次更新迭代加入验证数据的累积,也是在积累后期性能测试的基础数据。当然,这些基础数据的子页面也是需要有各种明细数据的。

不经历风雨怎能见彩虹,希望每一位热爱测试的读者能吸取前期经验教训,在测试之路跌倒爬起来,越战越勇!


粉丝福利


为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】


http://www.ppmy.cn/news/169291.html

相关文章

React 18 组件通信 将props传递给子组件

参考文章 将 Props 传递给组件 React 组件使用 props 来互相通信。每个父组件都可以提供 props 给它的子组件,从而将一些信息传递给它。 Props 类似于HTML 标签属性,可以通过它们传递任何 JavaScript 值,包括对象、数组和函数。 通过标签…

Ansible基础五——条件语句、循环语句、handlers、任务失败处理

文章目录 一、 循环语句1.1 单量循环1.2 多量循环1.3 老版本用法1.4 loopregister 二、条件判断2.1 根据变量状态判断2.2 根据变量是否存在判断2.3 根据事实判断2.4 多条件判断2.4.1 and用法2.4.2 or用法 2.5 循环判断2.6 根据上个任务结果判断 三、handlers处理程序四、任务失…

GitLab从旧服务器迁移到新服务器(空间不足,gitlab安装报错)

注意事项:迁移前首先要保证新旧服务器上的GitLab版本号一致,而且gitlab的包要符合安装的系统gitlab安装,系统与安装包不一致导致的安装错误。 1.查看当前GitLab版本 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION显示为 12.5.5。…

C++11:智能指针

目录 1、智能指针含义 2、智能指针的分类 1、智能指针含义 (1)C智能指针是一种用于管理动态内存的指针,可以自动进行内存管理,避免了手动管理内存所带来的问题。 (2)智能指针的核心思想是资源分配即初始…

IP地址、子网划分

目录 一、IP地址1.IP地址表示2.分类IP地址3.无分类编址 CIDR4.特殊IP地址 二、子网划分1.子网、子网掩码、子网划分VLSM2.网络地址、广播地址3.示例1:等分为两个子网3.1 划分前:3.2 划分后: 4.示例2:等分为四个子网3.1 划分前&…

Arthas 的简单使用

安装 Arthas 根据操作系统,从Arthas 官方 GitHub 仓库下载相应的 Arthas 安装包。 执行 Arthas 打开命令行工具,进入 Arthas 安装目录并执行以下命令: java -jar arthas-boot.jar 在启动时,Arthas 会自动检测到本机上所有运行…

2021年全球与中国净水器行业市场规模及发展前景分析

2021年全球与中国净水器行业市场规模及发展前景分析 本报告研究全球与中国市场净水器的发展现状及未来发展趋势,分别从生产和消费的角度分析净水器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品…

反渗透、超滤和电渗析技术的区别

净水器的品牌系列比较多,大多采用两种过滤技术,即反渗透和超滤,所以,净水器产品也按技术分为两类,其一是以RO反渗透净水器为代表的纯净水机,另一种是以超滤机为代表的超滤净水机。 反渗透 反渗透&#xf…