• 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软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、接口自动化测试的意义、前后端分离思想接口自动化测试的优缺点:优点:1、测试复用性。2、维护成本相对UI自动化低一些。为什么UI自动化维护成本更高? 因为前端页面变化太快,而且UI自动化比较耗时(比如等待页面元素的加载、添加等待时间、定位元素、操作元素、模拟页面动作这些都需要时间) 为什么接口自动化维护成本较低? 因为接口较稳定,接口的响应时间基本上都是秒级、毫秒级别的,速度快,并且接口自动化本身也可以做一些有关联的操作、全流程的操作(比如:注册 --> 登录 --> 修改个人信息)。3、回归方便。4、可以运行更多更繁琐的测试。自动化的一个...
            13 13 5597
            分享
          • 本发明涉及车载多媒体主机的测试方法和装置领域,特别是涉及一种车载Android多媒体主机的自动测试方法和系统。背景技术:目前在车载多媒体主机的研发过程中,对车载多媒体主机进行压力测试是不可缺省的一环;对于搭载Android系统的车载多媒体主机,其显示模块会具有HMI功能,因此对其触控功能的压力测试也是必要的。在现有的Android测试领域中,存在不少诸如Uiautomator、Android Studio之类的自动测试软件,但在不同的Android项目中,使用的APK(Android Package,即Android安装包)和APP(Application,即应用程序)大多是不相同的,因此需要...
            0 0 835
            分享
          • 第三方测试项目管理分享之-成功的项目都是相似的,“不成功的项目”各有各的特点先上图,感受一下。说明:我总结的这个项目管理特点,主要是来自于第三方外部测试,不同于企业内部自己的测试项目。简单说一下。从对象来说,我方,对方,第三方。从配合方面来说,外部和内部。先说对方的外部配合。第三方的测试主要来自于委托,即对方是发起人。首先需要明确对方的测试需求、进度需求,明确对接人的职责,明确测试环境。再说我方的外部配合,首先要判断,对方的测试需求是否在我方的实验室能力范围内,判断对方的测试需求、进度、环境配置等是否满足测试条件,在实施过程中,还需要经常判断对方的测试需求是否有变更,如果有变更,需要再判断,是...
            1 1 890
            分享
          •   前言  在做接口测试的过程中,接口还没有开发完成呢,领导就让介入测试,刚开始小伙伴们肯定会懵,接口都没有开发完成,怎么测试?有的状态不容易构造目前接口没有办法实现,这个时候怎么测试?这个时候就要引入新的知识点---mock。  mock  什么是mock?mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。在工作中如果在接口没有开发完成时,也可以进行来模拟接口的返回数据从而验证接口的正确性。  mock需要场景  工作中,为了节约项目时间,开发测试可以进行同步进行,当开发没有完成接口时,测试人员可以通过mock来模拟接口返回数据内...
            13 13 2437
            分享
          • 1、关系型和非关系型数据库的区别?关系型数据库的优点容易理解,因为它采用了关系模型来组织数据。可以保持数据的一致性。数据更新的开销比较小。支持复杂查询(带 where 子句的查询)非关系型数据库(NOSQL)的优点无需经过 SQL 层的解析,读写效率高。基于键值对,读写性能很高,易于扩展可以支持多种类型数据的存储,如图片,文档等等。扩展(可分为内存性数据库以及文档型数据库,比如 Redis,MongoDB,HBase 等,适合场景:数据量大高可用的日志系统/地理位置存储系统)。2、详细说一下一条 MySQL 语句执行的步骤Server 层按顺序执行 SQL 的步骤为:客户端请求 -> 连...
            0 1 6144
            分享
      • 51testing软件测试圈微信