软件测试人员眼中的项目上线流程

(六·一节快乐,花儿一样的少年)

目前公司项目偏多,平均每周五天基本上有四天都会有项目上线,有时一天会上线至少二个版本,就在昨天刚上线了一个项目,星期一才提测的一个项目,星期二就安排上线了,所以悄悄地告诉小伙伴们,昨晚俺加班了(再悄悄地告诉大家其实这个昨晚已经过去很久了~微笑脸)。

今天跟小伙伴们分享一下王豆豆公司的上线流程。

01

早会

每天早晨上班之后,都会开早会,早会主要是回朔昨天的内容、今天的计划、需要解决的问题三个方面。

开发每个人讲自己的情况后。

主持人:“测试呢?”

测试A:... ...

测试B:... ...

王豆豆:“XX项目,昨天已经将所有的测试点测试完全了,今天开发合到master上回归测试完成之后就可以上线了。”

开发A:“我一会儿就合"

王豆豆:"好的"

散会之后,一小时过去了.....

王豆豆问开发A:"合完了没“

开发A:”还没有,还在做code review"

然后再一小时间过去了,代码还是没有从分支到master上。

上午下班前问:”什么时候能合完吗?"

开发A自信满满地说:”下午上班就能合完了“

02

回归测试

一直到下午三点左右,代码才合并到master上,果真是合并十分钟,等待四小时,不过这样也有好处,项目组内只有项目leader才有合并代码的权限,他在合并代码之前会再做一次code review,这样最大程度保证代码的正确性。

回归测试步骤:

1.确定测试环境,配置参数

2.回归主要的流程

3.将以前提的bug再次回归

4.回归主要的异常流程

王豆豆回归测试时主要就是由这几个方面组成的。

如果有需要跟第三方系统联测的情况,那么代码合前到master时,需要设计测试用例场景覆盖需求与第三方系统测试人员联测,三方联测最是花费时间,所以测试过程中如果有这个需求一定要提前安排好时间,与联测人员约好相应的时间,联测在回归测试阶段也会进行。

回归测试主要以正向流程为主,目的是检查业务流程是否完整、接口是否联通、数据是否正确等几个方面。

确定回归测试服务器:

王豆豆目前公司有十台测试服务器,平时根据项目、业务需求和测试任务的不同,在不同的测试服务上拉分支进行测试。

几轮测试完成之后,确定要上线时再将分支合并到master上,然后其中固定的一台测试服务器上进行回归,这台服务器只用于回归master分支,这样就保证了测试任务的独立性,同时也能保证测试上线配置不会遗漏。

针对上述情况,王豆豆举例说明:

假设我们有5台测试服务器,分别命名为test1、test2、test3、test4、test5。

刚好今天王豆豆就接到了一个新的测试任务,接到任务之后,王豆豆就会询问测试小伙伴们哪台服务器是现在没人用的?

假设今天test3没人用,那王豆豆就选择test3作为本次测试任务的测试服务器。

确定了测试服务器,开发转测之后,王豆豆就会在test3这台机器上部署代码(我们是用jenkins自动部署,早已脱离了手工去部署代码),配置数据,进行测试。

通过几轮的测试,当项目满足上线需求之后,会让开发将代码从分支合到master上进行回归。

回归测试时,就会将代码部署到test1上,test1所对应的代码版本一定是master,这时就会在master上进行回归测试。

03

上线前准备

回归测试完成之后,通过测试,表明项目已经具备上线的要求了,那这时就开始做上线前的准备,上线前准备一般会为三个步骤:

第一步:确定上线策略

a.上线顺序

如果有多个系统上线,上线顺序是怎么样的?经常我们会有三个系统一起上线,那么A、B、C三个系统的依赖关系是怎么样的?

比如B系统的上线功能依赖于A系统的上线功能,那么就先上A系统,再上B系统,项目中上线顺序根据实际情况确定上线。

b.修复数据策略

如果功能上线之后出现BUG,应该怎么处理?一般我们会设一个开关,当新功能一旦出现问题,将开关打开,走原来的老流程。

如果上线之后出现BUG,BUG影响的数据应该怎么修复?有时会单条单条的修改数据,但如果数据量太大,单条修复数据这个工作量就很大,那么在有可能出现BUG地方设置一个点,有可能是task任务,重新跑原来的流程,也有可能是设置一个状态,一旦数据出现问题,无法正常进入下一个流程,那么设置状态为error,当BUG解决后,可以重试,修复错误数据。

c.旧数据分析

这个分析并不是每个项目都需要,仅限新功能上线后分影响老数据的那些项目。

举一个简单的例子:

前阵子做了一个流程改造的项目,以前流程是:

用户数据----》先在A系统核验通过----》入库到A系统----》再同步到B系统进行业务操作----》最后再将数据同步到A系统

流程改动之后:

用户数据----》先入库到B系统,在B系统通过校验后----》入库到B系统---->再同步到A系统入库----》B系统进行业务操作---》最后再将数据同步到A系统

针对这个流程改造项目上线之后,一定会有部分数据在上线之前是走的老流程,同时整个流程又没走完,那么在上线的时候就需要新流程去兼容老流程遗留下的数据,我们当时是增加了一个校验,在老流程中数据是从A系统同步到B系统的,在新流程中数据是从B系统同步到A系统,那么在B系统同步到A系统时增加一个校验去判断A系统中是否有相应数据的存在,没有才同步。

第二步:写上线申请邮件

上线之前,项目测试负责人要写上线申请邮件,邮件内容包括有:

1.数据配置

有没有开关?有就需要配置。

数据库有没有修改?有新增表,需要事先增表,有修改表结构,需要改表结构。

有没有外部接口?有就需要配置接口URL,否则流程不能跑通,回调也不能通。

等等,根据实际情况来写。

2.上线注意点

可以写本次项目上线后,会引起的风险,哪些地方可能容易出现问题?需不需要加上监控等?又或者上线之后,需要人为地去监控数据。

3.在邮件中写清楚上线策略

(第一步中考虑到的上线策略)

第三步:配置线上环境数据

根据测试人员编写的上线申请邮件,在上线之前在线上环境中配置好数据,根据邮件来配置,所以在编写邮件的时候需要将配置写全,这些配置可以根据开发人员提测时的转测邮件来写,或者测试过程中的补充配置,谨记配置要写完整。

完全以上步骤之后,就可以择良辰开始上线了,一般上线的权限只有几个人有,所以上线的人员是固定的,上代码时需要先将线上环境的job停掉,我们也是用jenkins进行自动化部署,只是需要人为的打版号、标签,部署版本,停Djob任务,上线完全之后,启动Djob任务等。

04

上线之后

对于测试人员来说,并不是你测试完全,项目上到线上(生产)环境上就OK了,就不关你的事了,而实则项目上线之后才是真正对测试人员的考验,测试人员经常疑或为什么总有一些BUG是在线上环境中才会被发现?

王豆豆总结了几点:

1.线上环境数据的复杂度是测试环境不能比拟的。

2.业务操作的不可控性

3.实际场景的复杂性

基于以上三点,这也就是为什么线上环境总是出现一些测试环境不能发现的BUG,排除测试人员漏测的情况。

故,上线之后,测试人员需要做好以下二件事:

第一,灰度测试

项目上线之后,首先是测试人员开始做灰度测试。

灰度测试时,可以设置由业务开关或者白名单之类做控制,只要少量数据或添加在白名单上的数据可以走新业务流程。

灰度测试完全之后,也就是将所有业务流程走完,检查各项数据的正确性、流程是否通、流程是否完整等等检查点。

确定无问题时,再将开关打开,再开放少量真实用户数据。

第二,监控线上数据

灰度测试时就已经在监控线上数据和检查线上数据,但因为灰度测试时数据量比较少,有时并不足以引发新问题,所以测试人员需要继续观察线上数据。

测试人员需要在项目上线之后的几个小时内,重点监控线上数据的流向,一旦数据有异常,立即采取措施,回滚代码又或者重新打开开关等,尽量将线上bug引起的损失降到最低,接下来就开始修改bug和修复数据。

在这个时候,测试人员对数据的敏感性特别就要发挥出来,有时似错非错的数据正是BUG的前兆,千万不要掉意轻心。

整个项目上线前后的流程就大致如此,不管是上线前的准备还是上线之后数据的观察都是一环扣一环,这些步骤有息息相关,前面的准备工作做得足,那么后面监控数据就会相对轻松,因为不容易出现问题。

原文发布于微信公众号 - 资深Tester(zishentester)

原文发表时间:2018-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏枕边书

从 PHP 到 Java

前言 ---- 最近主要编程语言从 PHP 转到了 Java。这一个多月的经历对我很有意义,所以写文章记录一下。 编程语言各有侧重,它们之间的比较没什么意义,所...

3845
来自专栏腾讯大数据的专栏

百亿级实时消息推送的实战之道,与王者荣耀一趟车就是这么稳!

腾讯移动推送(信鸽)高级工程师甘恒通在本场架构师峰会上分享了《腾讯移动推送(信鸽)百亿级实时消息推送的实战经验》,解析了信鸽实时精准推送系统的演进与实践。

1K3
来自专栏BestSDK

用户为王(二)

"如果说你的桌面是一座城堡,那么应用就是城堡里挂着的画" 当前的几大手机操作系统把每个服务都区别开来。用户下载下来放在桌面的每个应用都和其他应用没什么联系。所以...

2536
来自专栏靠谱PM

为什么你的原型总是改-页面流程篇

首先:上文中提到过业务流程图是从产品视角来看产品或功能,交互原型图是以用户的视角来看产品或功能,从这点上划分页面流程图也是以用户的视角来看产品或功能。

1084
来自专栏编程微刊

进阶攻略|前端最全的框架总结

前端的技术日渐更新,最近得空,花了一上午的时间,将前端常见的UI框架总结了一下,在开发的过程之中,有了这些,不断能够提高自己的工作效率,还可以在工作之余了解更多...

39910
来自专栏Android 开发者

Android Sunflower 带您玩转 Jetpack

△ 插图作者:Virginia Poltrack 在 Google I/O 2018 开发者大会上,我们推出了 Android Jetpack,其中包含的 An...

1451
来自专栏大魏分享(微信公众号:david-share)

非网络专业人士再谈SDN--KVM虚拟网络的规划与设计

从Gartner分析报告谈起 根据Gartner的《Gartner2016年度新兴技术成熟度曲线》,目前SDx目前处于期望膨胀期的末期,也标志着此类技术基本已经...

3008
来自专栏情情说

「4+1视图」学习与理解

之前经常看到文章中提到「4+1视图」,对其也有片面的理解,但一直没有实践过,不清楚其真正的作用,这两天在业务需求分析中运用了其中的一部分,想谈谈自己的粗浅理解。...

39412
来自专栏GopherCoder

『Python 爬虫文集梳理』

2024
来自专栏腾讯NEXT学位

NEXT讲坛第九回丨使用RN开发物联网类app!

2586

扫码关注云+社区