测试开发之路?聊聊自动化的打开方式
作者:ycwdaaaa 发布时间:[ 2017/2/13 10:06:26 ] 推荐标签:软件测试 自动化测试
解释一下
之所以弄成这样要解释一下,这个跟我们的业务形态耦合的很重。 由于我们是TO B的业务,而且大部分情况是进入到客户场地部署的。客户场地会出现各种限制。 例如没有网络,没有root权限,五花八门的操作系统等等。所以衍生出了部署测试,我们也称后端兼容性测试。所以上图的右边我们的部署镜像有很多个系统版本的。这些是我们跟运维和进场工程师共同协定的标准镜像----基本是一个官方的OS镜像加少量的工具。同时使用一个普通的没有任何额外权限的用户。目的是测试产品对各种情况的兼容性。所以才造了我们的部署包很大,因为依赖都打在了部署包里。 我们部署环境的时候可以选择一个镜像进行部署。
正确的打开方式
1、标准化,docker很适合做标准化。所有环境都是一样的,不会出现什么bug在这个地方能重现,那个地方复现不了的。也能让开发人员尽早发现部署上的bug,例如自己开发的时候不小心用了root权限,这样会很快发现这个bug,因为所有环境里都是没有root权限的。
2、并行化,我可以一个人起N个容器并发编译所有模块增加编译速度,也可以N个人同时起更多的容器并发的部署不同的环境。不会像以前的虚拟机一样一个人编译的时候另一个人得等着。
3、定制化,标准化之外我们还可以定制化。为不同的角色定制化他们需要的环境。例如产品人员需求稳定可用的环境,我们给他们做蓝绿部署,服务高可用。运维人员需求一个标准镜像直接在线上部署,我们给他做一个镜像。进场人员需求一个部署包,我们在部署环境的过程中自动的打成一个大包(上图的汇总容器)放到FTP上,他下载直接带走。开发人员除了日常部署还需要能随时搭建一个老版本的产品(TO B业务的特性)来重现并修复一个bug,我们对环境部署项目也做多分支策略,保留每个版本的镜像。总之我们可以针对不同的岗位为他们定制化不同的功能。
4、环境编排,当你的环境到达一定数量以后必然会面临一个问题,一台服务器无法抗住这么多容器运行的压力。所以会慢慢的变成2台,3台甚至更多。 这时候需要考虑很多东西,例如资源分配怎么搞,怎么确定哪些容器部署再哪个节点上。例如如果一台节点挂了怎么办?难道在它恢复正常之前这个节点上的服务一直不可用么,是不是要加入recovery机制等等。所以这时候需要引入环境编排机制。一般无非是在swarm,mesos,k8s,rancher上选了,一般公司没那个精力自研。只是用在测试环境上推荐docker 1.12内置的swarm mode, 之前还分别研究了mesos和k8s, 对于QA来说它们都过于复杂了,需要相当大的学习成本。以mesos来说需要各种其他插件才能正常服务,光是一个服务发现需要安装一个mesos dns,高可用得维护ZK等等,算你什么都没要求也得装个marathon,各种配置文件确实也让我这个非运维感觉比较棘手,想搞好它真的需要投入大量精力。而swarm mode所有的东西都已然内置,使用起来很简单方便,至于swarm mode的那些令人诟病的缺点,我们可以忽略了,这又不是生产环境。 当然了,劝告各位QA同僚。。。能不搞集群别搞集群,能一台机器扛着一台机器扛着。一但涉及到环境编排,那坑多了。。。。。。 对swarm mode有兴趣的同学请看我之前发的swarm mode的科普贴
持续集成
以上介绍的所有自动化类型都是要加入到持续集成里的。 我之前写过一篇文章介绍过持续集成,在那里我说过持续集成是个比较难的东西。它是对团队工程文化的一种考验。是细节的堆砌。你要把上面所说的所有自动化类型都做好,然后开发人员要写好单元测试,团队要设计好的分支模型。具体细节可以翻我之前的帖子,我不重复的逼逼叨了。
总结
好了,这是小弟做过的能拿的出手的自动化了,其他各类牛逼的东西不提也罢,我都不专业。
转载:https://testerhome.com/topics/7271
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
手工测试与自动化测试的区别如何提升接口自动化测试效率?手动测试和自动化测试的区别自动化测试真实项目工作流程,5个重要阶段自动化测试自行脚本后怎么查看日志?使用AR查看日志方法了解ios自动化测试要知道哪些知识?两种自动化测试工具AutoRunner与Selenium的对比给你一个网站,你如何来做自动化测试的?Web网站测试流程及方法Android自动化测试框架有哪些?有什么用途?什么样的项目适合做自动化?自动化测试人员应具备怎样的能力?为什么要进行自动化测试?自动化测试发展的怎么样了?如何对微信小程序进行自动化测试?自动化测试的行业现状是怎样的?未来的发展方向在哪?自动化测试很难,那么软件测试为什么要坚持自动化呢?关于Selenium自动化测试框架的较佳设计模式关于Selenium自动化测试框架那些你不知道的事
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南