• 0
  • 2
分享

2017年8月开始接手做持续集成平台的工作,该平台包含打包发布,每日构建,稳定测试。做这个的初衷是为了能够提早的暴露出问题,同时使开发在打包上尽可能少出错,提高效率。

首先收集现状,源码管理混乱,底层打包空间共用,apk打包在本地,没有稳定性测试,专项测试。需求整理,需要做源码管理,分离底层共用的空间,打包统一使用服务器打包,增加自动化测试,稳定性测试,专项测试。

下面说下我们的每日构建跟稳定性测试:

客户端每日构建

1.jpg


1.1、单元测试

单元测试主要是由开发负责编写的,主要是因为开发对产品更加的了解,同时测试开发团队人太少了,要做的事情好多,优先做其他的。关于框架选择,最初想要使用的方案是robolectric + junit4 + mockito + dagger2,然后被项目经理及总监否定了,选择了android自带的测试框架,主要原因相对与互联网公司我们公司的平台也是自己开发的,所以更需要在真机上执行测试。

执行过程,每天的凌晨会有定时任务去svn 上check out代码,连接设备,然后使用gralde命令执行测试生成测试报告。

1.2、集成测试

在这里我们的集成测试跟单元测试很像,在用例设计上主要是是按业务流程去执行的单元测试。

对于集成测试,可以加入ui自动化测试,比较喜欢的一个自动化测试是macaca。

1.3、静态代码分析

静态分析的话会在服务器上安装sonar-scanner,执行扫描后将结果上传到sonaerqube上,代码规则的的配置会在sonarqube上,最初开始做静态代码分析不建议开启很多的规则项,需要给开发团队适应的过程,规则如果一开始就开很多,开发估计就直接不改了吧,而且自带的规则会有一定的误报率,需要人工筛查。

1.4、报告邮件通知

执行失败或者成功都回给开发测试发送邮件通知。

客户端稳定性测试

2.jpg

稳定性测试主要是为了暴露apk的性能问题,提高产品的稳定性。

执行流程,凌晨定时任务会去拉取svn上的代码,代码更新好后,会使用脚本sed命令去把leakcannary加入到代码当中,接着执行apk打包,固件打包,将生成的固件通过OTA升级,(ota升级:将包放到指定的服务器,在通过接口配置由哪个版本到哪个版本的升级,应用本身有个server去检查,从而实现升级)。执行monkey命令,第二天去查看monkey日志,oom日志,已经是否存在.prof文件该文件是leakcannary生成的,拿到prof文件后可以使用MAT或者Android Studio去分析。

对于性能测试需要关注网络,io,流量,内存,cpu,而对于我们的产品更加的关注内存,对于其他的指标我们会在功能测试的时候去关注这块。

服务端每日构建

对于服务端的每日构建主要是做部署,接口测试,静态代码分析。服务端使用的语言是php,它的部署较为简单,只需要从使用git pull就可以,部署完成后执行接口测试,静态代码分析。接口测试我们使用的是robotframework+requestlibrary,封装出公共的关键字,写testcase的时候使用该关键字。静态代码分析使用sonar-scanner,扫描结果在sonarqube上展示。最后发送邮件测试报告给开发/测试。

其他

4.1、不足

  • 对于我们的整个流程缺乏ui方面的自动化

  • 静态代码分析规则不够完善

  • 单元测试用例太少了

  • 稳定性测试缺乏cpu,io,网络等的监控

  • 部分接口业务无法覆盖(eg:支付)

4.2、躺过的坑

  • 旧的服务器谁都能上去改东西...

  • 同个服务器使用多个版本的gradle打包

  • 底层源码(sdk)管理混乱,开发随意更新源码

  • 不支持接口更新ota配置

  • 源码管理混乱,分支无规范,非主干开发

在做持续集成的工作中,开始做流程的优化,优化功能测试流程,自动化流程;接触了较多的工具,开始做方案的分析,去做整体的架构设计跟实现,去跟项目经理沟通,沟通是一个很大的学问,当中你可能会遇到脾气好的同时也会遇到脾气差的,遇到脾气不好的告诉自己多笑笑,多找他几次也许问题就能解决。开始更加关注代码的质量,去了解专项测试。


版权声明:本文出自51Testing原创,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据报道,当地时间周三,微软CEO萨提亚·纳德拉表示,他希望消除电子游戏与热门游戏机之间的独家协议。  作为微软在游戏行业的主要竞争对手,任天堂和索尼经常在各自的设备上发布独家游戏,将此作为吸引客户的重要手段。微软也在Xbox上采取了同样的战略,但纳德拉表示,他的公司“在游戏机市场的份额较低”。  纳德拉提到独家协议时说,“我不喜欢这种模式。”  纳德拉在旧金山举行的美国联邦法院听证会上发表了这一观点,本案原告是美国联邦贸易委员会(FTC),他们希望通过诉讼阻止微软斥资687亿美元收购动视暴雪。FTC担心,这场联姻会导致动视暴雪的热门游戏无法兼容其他游戏机,或者降低其他游戏的服务。  微软曾...
            0 0 596
            分享
          • 一、什么是杀虫剂理论?杀虫剂悖论是Boris Beizer在他1990年出版的《Software Testing Techniques》一书中最先提出来的。当农民发现农作物有病虫害的时候,就需要喷洒杀虫剂,以消除病虫害。通常可以杀死绝大部分的害虫,但是非常不幸的是,总会有少量的虫子活下来。存活下来的虫子对该杀虫剂就产生了抗药性,如果来年农民还是用同样的杀虫剂的话,那么对害虫的杀伤力将会大大降低。农民伯伯需要不断地使用新的杀虫剂来对付具有抗药性的害虫,否则农作物就会被害虫吃掉。在软件测试中用来描述这样一种现象,对软件进行越多的测试,那么该软件对软件测试人员的测试就越具有免疫力。以上专业解释引用自...
            1 0 3741
            分享
          • 最近在使用 Python3.4 做一些脚本实现,发现对于编码的处理上和 Python2.6 有很大的不同,就此机会把相关知识做个梳理,方便需要的时候查阅。先说下概念和差异: 脚本字符编码:就是解释器解释脚本文件时使用的编码格式,可以通过 # -\*- coding: utf-8 -\*- 显式指定解释器字符编码:解释器内部逻辑过程中对 str 类型进行处理时使用的编码格式Python2 中默认把脚步文件使用 ASCII 来处理(历史原因请 Google)Python2 中字符串除了 str 还有 Unicode,可以用 decode 和 encode 相互转换Python3 中默认把脚步文...
            1 3 1412
            分享
          •   一、自动化测试简介  1、什么是自动化测试  软件测试是软件产品开发过程中不可或缺的环节,众所周知,软件测试的分类方法非常多,根据不同的分类,测试可以分为很多种不同的测试方式。如果根据不同的测试点分类,可以将测试分类划分为功能测试、性能测试,这也是我们最常见的的软件测试范畴。而我们的自动化测试,一般意义上来说,是指对功能、性能进行脱离手工的自动化的测试。  对于自动化测试,更广泛的意义,是对界面功能的自动化测试。因此,按照对软件测试的自动化程度,可以分为手工测试、自动化测试。再进一步细分,界面自动化测试,又可根据平台的不同,分为Web自动化测试、移动端自动化测试,而他们的测试工具及框架基本...
            0 0 3363
            分享
          •   不管是Loadrunner还是jmeter进行性能测试,测试流程基本上都是一样的,限制以Jmeter为例分析测试流程:  一、性能测试需求分析  一般而言,被测对象的性能需求,会在用户需求规格说明说中给出,比如单位时间内的访问量达到多少、业务响应时间不超过多少、业务成功率不低于多少、硬件资源消耗应该在一个合理的范围内等,性能指标应以量化数据给出,对于一个规范的产品,产品团队会给出如下的性能要求:  如果产品团队并没有指明性能测试需求,或者只给出表述字面意义上的需求,如:系统的TPS需要到300以上,单笔交易时间不超过3秒,那么测试工程师如何提前量化的指标呢?  需要结合业务需求和系统本身特...
            0 0 195
            分享
      • 51testing软件测试圈微信