前言:

今天在跟一个产品朋友讨论在软件开发中,应用开发完成,从进入测试阶段到上线,中间应该具有哪些测试过程。进而谈论到应用的部署方式,由于本人只是开发,并不是专业的PMO,关于软件的全生命周期管理也是知之甚少,结合本人在实际工作中的经验,对测试阶段和部署方式进行一个总结和整理。


测试阶段:

测试主要分为单元测试,冒烟测试,回归测试,sit,uat这几个阶段。在实际的项目中,可以根据具体的场景进行选择和合并,并不是每一个步骤都得按部就班的进行,毕竟在软件开发行业,尤其是互联网行业,效率就是企业的生命力。但是对于金融类的应用,安全是第一位的,效率次之。

单元测试:

  • 说明:单元测试主要由开发对自己写的代码进行单元化测试,所谓单元化需要根据具体的情况去判断,比如java中的一个类,前端页面的一个菜单,窗口,按钮等。总的来说,就是人为规定的最小的被测试模块。在我目前的公司中,都会要求每个开发对自己写的代码有单元测试,通过软件扫描,确定单元测试覆盖率,要保证在80%以上。

  • 人员: 主要由开发参与完成,每个开发人员负责自己开发部分的单元测试

冒烟测试:

  • 说明:冒烟测试其实是微软首先提出来的一个概念,和微软一直提倡的每日build(构建版本)有很密切的联系。具体说,冒烟测试就是在每日build(构建版本)建立后,对系统的基本功能进行简单的测试。这种测试强调程序的主要功能进行的验证,而不会对具体功能进行更深入的测试。

  • 人员: 主要由测试人员参与,测试人员决定冒烟通过或者不通过,如果不通过可以列出具体的模块。

回归测试:

  • 说明:回归测试是指修改了旧代码后,重新测试以确认修改没有引入新的错误或导致其他代码产生错误。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
  • 回归测试场景:

1.开发修改完bug之后:

a.测试同学需要将之前发现bug的用例再次执行一遍,已验证此问题已经修复,然后关闭对应的bug单,写明必要备注

b.验证其他和此bug有依赖关系的场景用例是否正常

2.迭代上线前:

每个迭代不同模块肯定有很多不同类型的bug,在前面场景1中都是零零散散的回归了开发修复的bug,等到最后上线时,往往我们会再进行一次回归测试

范围:本次迭代全部场景

方法:抽取其中部分用例做为回归测试用例

执行:再次执行抽取的测试用例,记录结果

  • 抽取回归测试用例技巧:

1、如果系统目前为止已经比较稳定,那回归测试的用例,可以根据8/2原则来挑选(80%的缺陷出现在20%的功能模块中),可以根据各模块缺陷的情况,将出现问题较多的模块进行执行用例;其他缺陷不多的模块,可以将缺陷相应的功能点进行用例执行;

2、业务程度较复杂的,用户使用较频繁的功能模块进行回归测试;

3、开发近期对某个功能模块进行了小功能的修改时,也需要进行回归测试,因为开发进行功能点修改或者优化时,不怕一万就怕万一,所以进行回归测试,保守一点。

SIT测试:

  • 说明:System Integration Testing,系统集成测试,也就是前面的测试都通过后,部署到sit环境,进行测试。这个时候,测试人员根据新版本中增加的功能进行一一测试,在sit测试环境中,所用的测试数据是测试根据业务场景模拟的数据,并不是准确的线上数据或者接近线上数据。主要对系统功能进行校验,性能和可靠性进行测试。

  • 人员: 由测试人员部署,测试人员根据业务场景模拟数据进行测试。

UAT测试:

  • 说明: User Acceptance Test,用户验收测试。这个阶段主要由测试和产品配合业务在UAT环境进行测试。测试的主力是验收方,也就是所谓的业务人员,因为他们是需求提出的源头,对于需求的理解最为透彻。在UAT测试阶段, 应该尽量使用生产数据或者接近真实的生产数据进行全流程测试。

  • 人员: 验收人员,业务,需求提出方为主力。在测试人员和产品经理的配合下完成。


应用部署:

在目前的软件开发中,随着自动化运维工具的不断提升,应用部署变得越来越简单。我们常用的开源CI/CD工具有Jenkins,ElectricFlow,IBM UrbanCode等,还有就是各个公司根据自己的情况开发的持续化部署工具。再加上目前运行服务的容器也在不断升级,从之前的物理机,到虚拟机,再到Docker,  k8s, openshift使得软件部署变得越来越简单,高效,准确率高。 目前我们公司使用的是openshift。基于上面的自动化部署工具和容器化技术,使得应用部署也越来越简单,安全。下面我们介绍下目前主要的几种应用部署方式:

  • Blue-Green Deployment

蓝绿部署原理上很简单,就是通过冗余来解决问题。通常生产环境需要两组配置(蓝绿配置),一组是active的生产环境的配置(绿配置),一组是inactive的配置(蓝绿配置)。用户访问的时候,只会让用户访问active的服务器集群。在绿色环境(active)运行当前生产环境中的应用,也就是旧版本应用version1。当你想要升级到version2 ,在蓝色环境(inactive)中进行操作,即部署新版本应用,并进行测试。如果测试没问题,就可以把负载均衡器/反向代理/路由指向蓝色环境了。随后需要监测新版本应用,也就是version2 是否有故障和异常。如果运行良好,就可以删除version1 使用的资源。如果运行出现了问题,可以通过负载均衡器指向快速回滚到绿色环境。

优点:

  • 如果出问题,影响范围较大;

  • 发布策略简单;

  • 用户无感知,平滑过渡;

  • 升级/回滚速度快。

缺点:

  • 需要准备正常业务使用资源的两倍以上服务器,防止升级期间单组无法承载业务突发;

  • 短时间内浪费一定资源成本;

  • 基础设施无改动,增大升级稳定性。

在早期物理服务器时代,成本比较昂贵,在云服务时代,大大节省了成本。

Canary Deployment

金丝雀发布,又叫灰度发布。是指在黑与白之间,能够平滑过渡的一种发布方式。AB Test 就是一种灰度发布方式,让一部分用户继续用 A,一部分用户开始用 B,如果用户对 B 没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到 B 上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

A/B 测试是用来测试应用功能表现的方法,例如可用性、受欢迎程度、可见性等等。 A/B 测试通常用在应用的前端上,不过当然需要后端来支持。A/B 测试与蓝绿部署的区别在于, A/B 测试目的在于通过科学的实验设计、采样样本代表性、流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信该结论在推广到全部流量可信;蓝绿部署的目的是安全稳定地发布新版本应用,并在必要时回滚。

优点:

  • 保证整体系统稳定性,在初始灰度的时候就可以发现、调整问题,影响范围可控;

  • 新功能逐步评估性能,稳定性和健康状况,如果出问题影响范围很小,相对用户体验也少;

  • 用户无感知,平滑过渡。

缺点:

自动化要求高,有时候需要更多的数据库,服务器资源进行配合。

部署过程:

  • 从LB摘掉灰度服务器,升级成功后再加入LB;

  • 少量用户流量到新版本;

  • 如果灰度服务器测试成功,升级剩余服务器。

滚动发布:

滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。

  • 红色:正在更新的实例

  • 蓝色:更新完成并加入集群的实例

  • 绿色:正在运行的实例

优点:

  • 用户无感知,平滑过渡;

  • 节约资源。

缺点:

  • 部署时间慢,取决于每阶段更新时间;

  • 发布策略较复杂;

  • 无法确定OK的环境,不易回滚。

部署过程:

  • 先升级1个副本,主要做部署验证;

  • 每次升级副本,自动从LB上摘掉,升级成功后自动加入集群;

  • 事先需要有自动更新策略,分为若干次,每次数量/百分比可配置;

  • 回滚是发布的逆过程,先从LB摘掉新版本,再升级老版本,这个过程一般时间比较长;

  • 自动化要求高。


小结:

本文结合自己在参与项目中的实际情况和一些文章总结整理出了测试的阶段和应用部署的方式。在实际的项目中可以结合实际情况进行选择。

应用测试阶段和部署方式相关推荐

  1. TongWeb上应用部署方式

    TongWeb上可部署的web应用结构可分为两种:1. 打成war包形式的文件.2. 以文件夹目录方式的web应用. 这两种方式必须要有WEB-INF目录才是一个合法web应用结构,方可部署. 特殊情 ...

  2. Spring Boot 五种热部署方式,极速开发就是生产力!

    欢迎关注方志朋的博客,回复"666"获面试宝典 模板热部署 在 Spring Boot 中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的, ...

  3. 阿里原来是这么干的!Spring Boot 五种热部署方式

    作者:若离x 来源:my.oschina.net/ruoli/blog/1590148 1.模板热部署 在 Spring Boot 中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面 ...

  4. 极速开发之Spring Boot五种热部署方式

    在 Spring Boot 中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的,因此我们可以在application.properties中关闭模版引擎的缓存 ...

  5. SAP Fiori应用的三种部署方式

    封面图片来自Google搜索,关键字: Fiori Deployment 方式1 On premise环境下以BSP应用作为Fiori应用部署和运行的载体 在SAP成都labs我曾经担任过CRM这几个 ...

  6. jar容器部署成功无法访问_Spring Boot 应用程序五种部署方式

    翻译自 Deploying Spring Boot Applications[1] 原作者 Murat Artim[2] 可以使用各种方法将 Spring Boot 应用程序部署到生产系统中.在本文中 ...

  7. FW/IDS/IPS/WAF等安全设备部署方式及优缺点

    现在市场上的主流网络安全产品可以分为以下几个大类: 1.基础防火墙FW/NGFW类 主要是可实现基本包过滤策略的防火墙,这类是有硬件处理.软件处理等,其主要功能实现是限制对IP:port的访问.基本上 ...

  8. 介绍几种SSIS部署方式

    目的 部署的包有以下几种形式: 文件系统,包被存储在你选择的文件夹内. SSIS包存储,包被保存到SSIS服务管理的一套文件系统表中,位于-%Program Files%\Microsoft SQL ...

  9. 到底应该选择哪种Linux.NET的部署方式?

    到底应该选择哪种Linux.NET的部署方式? 当前部署Linux.NET环境的方式可谓是五花八门,既有传统的源码编译的方式.又有各式各样的一键安装脚本.还有绿色包安装方式,而随着Mono官方的新站上 ...

最新文章

  1. poj3070矩阵快速幂
  2. wireshark的使用
  3. MySql 触发器同步备份数据表记录
  4. cocos2d-html5 简易 下拉表单 控件
  5. Kaggle新上比赛:胸部X光片肺炎检测
  6. 1.10 卷积神经网络示例
  7. CentOS mysql配置主从复制
  8. 航班延误来领钱,信用卡航班延误险最全攻略(2018年版)
  9. 无线蓝牙耳机哪个品牌好?蓝牙降噪耳机品牌推荐
  10. liferay监听器
  11. 游戏运营必须知道的知识(二),入行必备!!
  12. 可以今天忽然法国合同已经发到他还是然后
  13. matlab模拟光栅,用MATLAB模拟正弦光栅的衍射
  14. DICOM:基于JMeter+dcm4che2测试PACS服务器性能的解决方案(续篇)
  15. box-shadow无效果
  16. 《软件工程里面的大学十年》(转载下半部分)
  17. mysql去重合并字符串_Mysql将近两个月的记录合并为一行显示
  18. 亚马逊(脚本)自动化软件开发案例过程
  19. 计算机右键截图,杨钦鸿:电脑截图软件哪个好,电脑鼠标右键菜单怎么截图?...
  20. 常见的计算机监控系统分类,二发电厂计算机监控系统的基本分类.doc

热门文章

  1. Ubuntu系统启动黑屏
  2. 一键式AI绘画,让你也能体验当画师的魅力(附原理分析)
  3. 关于js快速排序的总结
  4. 【满分】【华为OD机试真题2023 JAVAJS】红黑图
  5. 什么专业的女生最难追?最后一个真相了……
  6. caffe将用训练好的caffemodel和train_val.prototxt文件分类新的一张图片-下篇--caffe学习(7)
  7. 数据流告诉你,买基金选择场内还是场外
  8. ME525软件测试自学,电脑通过WIFI连接摩托罗拉(defy) ME525上网的方法
  9. Linux服务器扩容
  10. Vue自定义指令介绍及原理