TestinPro应用与DevOps之路

文 | 中国农业银行软件研发中心 系统支持部 王晓昕 程伟静 胡莉莉

Testin Pro(云测平台)是一款移动端自动化测试平台工具,帮助用户实现移动端测试自动化,是一套设备统一调配、软硬件一体化的移动端测试方案。Testin Pro具有在线录制脚本、远程真机调试、自动化执行任务等功能,可满足自动化敏捷测试需求以及其他各类场景的自动化测试需求,本文将从Testin Pro的部署方案、主要功能、与Devops工具链对接三个方面加以介绍。

一、Testin Pro的部署方案

640?wx_fmt=png

1.1 网络拓扑

如图1-1所示,终端用户(测试人员)通过办公网络和交换机访问Testin服务器。其中,Testin服务器通过交换机连接若干Android控制器和iOS控制器,每台控制器可以连接多个USB Hub,每台USB Hub可以连接1-6台移动终端(手机、Pad等),这些移动终端通过无线AP连接到行内测试网络。

640?wx_fmt=png

1.2 服务器配置

服务器采用Redhat Linux,通过docker部署应用。4台服务器分别部署基础的应用程序、数据库、文件、应用代理等服务:

  • File server(文件服务器):包含filetracker和filestorage(用来存放脚本和报告数据)、portmap(端口映射)、remote(远程真机)、auto_web(在线录制); 

  • Web server(Web服务器):包含proxy-openapi(客户端api)、assistant(远程真机agent)、adminserver(web管理端后台)、fileuploadserver(文件上传)、webserver(web后台); 

  • Db server(数据库服务器):包含redisserver、mongoserver、mysqlserver; 

  • App server(应用代理服务器):包含rpcmaster、appserver。

1.3 业务架构

如下图1-2所示,平台使用者分为三大类型:

  • 测试用户登录私有云入口,连接到云测平台的四大模块,分别是应用管理模块、测试管理模块、自动化管理模块、项目管理模块,可实现平台八项功能,包括性能测试、兼容性测试、功能测试、稳定性测试、远程真机、上线后拨测、版本管理、项目管理。 

  • 管理员用户通过管理端平台入口连接到管理员平台,可以实现九个方面的管理:企业项目管理、项目权限管理、企业用户管理、用户权限管理、设备运行管理、任务执行管理、云平台监控、异常管理、数据库配置管理。 

  • 超级管理员在资源池中可以管理网络资源、服务资源、数据库资源和设备资源,比较常用的操作有重启后台测试设备、查看设备网络状态等。

640?wx_fmt=png

二、Testin Pro的主要功能

640?wx_fmt=png

2.1 online脚本录制

Testin平台的终端设备在系统中脚本录制页面和远程真机页面均有映射屏,测试人员可以通过鼠标和键盘的操作来模拟对手机页面的点击、滑动、输入等操作。录制过程可以选择控件识别、图片识别和OCR识别三种方式,每一步操作都会记录到右侧的脚本编辑页面。另外,为了满足自动化测试的复杂业务逻辑,Testin还封装了一些内部操作,如设置等待时间、增加if-else逻辑判断、循环、断言、性能埋点等操作。

2.2 自动化执行

Testin支持三种任务类型建立方式:

1)自动化功能测试:云端脚本执行,任务快速执行,支持数据源选择,深度截图对比,性能分析,报告多维度展现。

2)自动化兼容测试:安装/启动/monkey/卸载,支持脚本执行,错误日志/Crash/ANR,性能数据,monkey截图,报告以设备维度展现。

3)自动化拨测:批量任务定时发起,支持多网络类型,发起批次可配置,批次间隔可配置,报告以批次维度统计,报告支持excel导出。

2.3 测试报告查看

根据用户所选的执行方式的不同,Testin分别提供了三类报告供用户查看:

1)功能报告包含任务基本信息及统计图表,并从报告概况、脚本执行报告、脚本问题分析、设备执行报告、脚本截图横向对比等多个维度展现统计内容,还可以回放设备执行每个脚本的视频。

2)兼容报告页顶端任务属性与功能测试相同,报告展现分为测试概况、错误日志、性能数据、截图对比四个维度。

3)拨测报告以轮次为统计单元,展示拨测概况信息及各性能埋点的时延与上下行流量图表数据及具体到设备的详细数据。

三、与Devops工具链对接

640?wx_fmt=png

ATP平台是农行自动化测试统一管理平台,是行内devops工具链的一环。行内将各处室使用的自动化测试工具在ATP平台实现统一管理,不同自动化测试工具录制生成不同语言、不同格式的测试脚本,ATP平台将这些脚本转化成行内统一格式存储。在进行自动化测试案例运行时,ATP平台将行内格式转换成对应测试工具可执行脚本进行案例执行。

目前,Testin Pro已完成与ATP平台的对接,测试人员可以直接在ATP平台进行移动端测试案例的编辑和执行。同时我行还在推进ATP与微软TFS的集成工作,TFS作为我行DevOps工具链集成的核心总线,未来将实现一体化端到端的DevOps流水线调度能力,其中也包括对Testin Pro的一体化调度。

下面,简单描述下Testin Pro与ATP平台的对接方案:

1)在ATP平台输入Testin Pro平台的用户名和密码,对密码进行MD5加密,将账号和加密后的密码通过登录报文发送到Testin Pro平台,获取登录令牌。

2)利用登录令牌和账号信息,发送报文查询用户归属项目组,并在前台展示给用户,供选择。

3)利用登录令牌和项目号,发送报文查询该项目对应的所有待测应用,将所有的应用信息展示在前台,供用户选择。

4)利用登录令牌、项目号、应用版本(ios,andriod),发送报文查询该应用对应的所有自动化测试执行的脚本列表。

5)利用登录令牌、项目号、应用版本(ios,andriod),发送报文查询该应用可运行的设备列表。

6)将查询到的脚本号列表映射到ATP平台上的案例(一个脚本对应一条案例),将案例信息在前台展示给用户,供选择。

7)用户选定项目、应用、案例、设备后,发送报文进行测试任务创建,获取到任务号。

8)通过任务号查询该任务的执行结果,并在ATP平台进行结果展示。

640?wx_fmt=png

其中,步骤6实现了脚本和案例的相互转化,在ATP平台只存储案例详细信息和对应的脚本号。这样的好处是:

1)ATP平台可不区分测试工具,管理统一格式的案例,该格式实现了对象和定位分离,提高了可维护性和易读性。

2)对于统一格式的案例,ATP平台实现了案例的自动生成,例如:基于某一业务流程确定的测试案例,可通过给该案例配置不同的参数值,实现案例的衍生,节约录制成本,提高自动化测试效率。

四、总结

640?wx_fmt=png

TestinPro作为我行采购的移动端自动化测试服务平台,支持兼容性测试、功能测试、性能测试等,有效满足测试人员对多种型号终端的测试需求,并通过平台统一管理提高了设备的复用效率,节约了测试成本。在DevOps工具链对接方面,我行旨将TestinPro集成到自动化测试统一管理平台,最终实现不同测试工具的统一管理。

【作者简介】王晓昕

中国农业银行研发中心系统支持部 测试工程师 目前从事自动化测试技术研究以及DevOps工具链建设工作,热爱工作,热爱生活,耕耘于分秒,收获于细微。

640?wx_fmt=png

640?wx_fmt=gif

640?wx_fmt=png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多项式开根

多项式开根 给定多项式g(x)g(x)g(x),求f(x)f(x)f(x),满足f2(x)g(x)f ^ 2(x) g(x)f2(x)g(x)。 假设我们已经得到了g(x)g(x)g(x),膜x⌈n2⌉x ^{\lceil \frac{n}{2} \rceil}x⌈2n​⌉下的根f0(x)f_0 (x)f0​(x),要求膜xnx ^ nxn下…

通过Service访问应用 (2)

目录 通过NodePort Service在外部访问集群应用 通过LoadBalancer Service在外部访问集群应用 Microsoft SQL Server数据库部署 为了便于理解和学习,请先阅读上一篇《通过Service访问应用 (1)》再继续学习本篇内容。通过NodePort Service在外…

2019-03-18-算法-进化(反转链表)

题目描述 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? /*** 思路1:迭代法,直接依次反转链表* 时间复杂度…

分治FFT

分治FFT 考虑计算这么一个式子f(i)∑j1ifi−jg(j)f(i) \sum\limits_{j 1} ^{i} f_{i - j}g(j)f(i)j1∑i​fi−j​g(j),给定g(x)g(x)g(x),求f(x)f(x)f(x),边界条件f(0)1f(0) 1f(0)1。 假设我们已经算出[l,mid][l, mid][l,mid]&#xff0c…

微软商业智能BI知识整合篇-五大工具产品系列文章

在最近2个月时间里,笔者尝试将自身在企业级商业智能BI的知识及经验进行梳理,以文章的方式输送给广大读者们阅读。笔者同样是非科班专业人员,但在过往的摸索过程中,积累的系列知识足够应付一般性地企业级商业智能BI项目需要。相信在…

2019-03-21-算法-进化(合并两个有序链表)

题目描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4思路1:双指针法 /*** 合并两个有序…

多项式对数函数ln f(x)

多项式对数函数ln⁡f(x)\ln f(x)lnf(x) 如果存在解必然有[x0]f(x)1[ x ^ 0]f(x) 1[x0]f(x)1, 对ln⁡f(x)\ln f(x)lnf(x)求导,有dln⁡f(x)dx≡f′(x)f(x)(modxn)\frac{d \ln f(x)}{dx} \equiv \frac{f(x)}{f(x)} \pmod {x ^ n}dxdlnf(x)​≡f(x)f′(x)…

【A】兼容Core3.0后 Natasha 的隔离域与热编译操作。

文章转载授权级别:A 预计阅读时间:15分钟一、 2.0预览版本增加了哪些功能大部分为底层的升级优化,例如:引擎兼容 Core3.0优化编译流程,增加编译前语法检测及日志,统一采用流加载方式在 Vito 的建议…

2019-03-22-算法-进化(回文链表)

题目描述 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false示例 2: 输入: 1->2->2->1 输出: true进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 解题 思路1:直接利用List的顺序存储性&#x…

多项式牛顿迭代(应用:求逆,开根,对数exp)

多项式牛顿迭代 给定多项式g(x)g(x)g(x),求f(x)f(x)f(x),满足g(f(x))≡0(modxn)g(f(x)) \equiv 0 \pmod {x ^ n}g(f(x))≡0(modxn)。 泰勒展开 对于现有得f(x)f(x)f(x),构造一个多项式g(x)g(x)g(x),使得f(n)(x)g(n)(x)f^{(n)}(…

.NET Core 使用 K8S ConfigMap的正确姿势

背景ASP.NET Core默认的配置文件定义在 appsetings.json和 appsettings.{Environment}.json文件中。这里面有一个问题就是,在使用容器部署时,每次修改配置文件都需要重新构建镜像。当然你也可能会说,我的配置文件很稳定不需要修改&#xff0c…

2019-03-22-算法-进化(环形链表)

题目描述 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入&#xf…

ASP.NET Core on K8S深入学习(9)Secret Configmap

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。01—Secret关于Secret在应用启动过程中需要一些敏感信息,比如数据库用户名、密码,如果直接明文存储在容器镜像中是不安全的,K8S提供…

生成函数简单入门

生成函数 可表示为F(x)∑nankn(x)F(x) \sum\limits_{n} a_n k_n(x)F(x)n∑​an​kn​(x),对于不同类型的生成函数,有不同的核函数kn(x)k_n(x)kn​(x)。 普通生成函数:kn(x)xnk_n(x) x ^ nkn​(x)xn。 指数生成函数:kn(x)xnn!…

.NET Core 学习资料精选:进阶

2019.09月就要正式发布.NET 3.0了,对于前一篇博文《.NET Core 学习资料精选:入门》大家学的可还开心?这是本系列的第二篇文章:进阶篇,喜欢的园友速度学起来啊。对于还在使用传统.NET Framework 框架的园友,…

P4389 付公主的背包(生成函数,多项式exp)

P4389 付公主的背包 考虑生成函数有: ∏i1n11−xvi对其取对数得,∑i1nln⁡11−xviF(x)11−xv,G(x)ln⁡F(x)G(x)∫F′(x)F(x)dxG(x)∫vxv−11−xvdxG(x)∫∑n≥0vxvnv−1dxG(x)∑n≥0vxvnvvnvG(x)∑n≥0xv(n1)n1G(x)∑n≥1xvnn对于原式:∑i1n∑j1∞xvijj…

VS Code 1.38 发布!

今天(北京时间 2019 年 9 月 5 日),微软发布了 Visual Studio Code 1.38 版本。此版本主要更新的内容包括:Preserve case for global search and replace - 进行全局替换字符串时保留大小写。Settings editor string array valida…

HDU 5730 Shell Necklace(生成函数 多项式求逆)

Shell Necklace 由题意可得f[n]∑i1na[i]f[n−i]f[n] \sum\limits_{i 1} ^{n} a[i] f[n - i]f[n]i1∑n​a[i]f[n−i],设f[n]f[n]f[n]的生成函数为F(x)F(x)F(x),a[n]a[n]a[n]的生成函数为A(n)A(n)A(n) F(x)A(x)∑n≥0xn∑ijnaifn−i由于a00&#xff0c…

.NET Core 收徒,有缘者,可破瓶颈

最近感悟天命,偶有所得,故而打算收徒若干,以继吾之传承。有缘者,可破瓶颈,职场巅峰指日可待。入门基本要求:1、工作经验:1年或以上。2、拜师费用:3999元(RMB)…

【全】Docker(二)-在Docker中部署Nginx实现负载均衡视频教程

一、前言在前面的文章中我们已经介绍了如何在Centos7系统中安装Docker以及利用Docker进行Asp.Net Core应用的部署。在本文中,我们将继续介绍利用Docker部署Nginx服务实现负载均衡。文章最后附有Nginx部署的视频全过程。注:查看公众号历史文章&#xff0c…