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,一经查实,立即删除!

相关文章

通过Service访问应用 (2)

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

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

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

.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提供…

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

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

VS Code 1.38 发布!

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

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

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

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

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

开源导入导出通用库Magicodes.ExporterAndImporter发布

导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库,并且仍在跟随项目不断地打磨。GitHub地址:https://github.com/xin-lai/Magicodes.ExporterAndImporter目录特点相关官方Nuget包导出 Demo普通导出特性导出列头处理或者多语…

netcore 中的动态代理与RPC实现(微服务专题)

一、关于RPC的调用1. 调用者(客户端Client)以本地调用的方式发起调用;  2. Client stub(客户端存根)收到调用后,负责将被调用的方法名、参数等打包编码成特定格式的能进行网络传输的消息体; …

[翻译] .NET Core 3.0 Preview 9 发布

原文: Announcing .NET Core 3.0 Preview 9今天,我们宣布推出 .NET Core 3.0 Preview 9。就像 Preview 8 一样,我们专注于打磨 .NET Core 3.0 的最终版本,而不是添加新功能。如果这些最终版本看起来不像早期预览版那么令人兴奋,我…

谈谈“学习”这件事儿

曾经有童鞋在我博客留言:楼主你是如何学习的,肿么那么牛逼(注:真不牛逼,只不过我讲的你刚好不知道,在你心中就形成了好牛逼的样子)曾经也有童鞋加我好友,开头第一句则是:…

持续集成之应用k8s自动部署

持续集成之应用k8s自动部署Intro上次我们提到了docker容器化及自动化部署[1],这仅仅适合个人项目或者开发环境部署,如果要部署到生产环境,必然就需要考虑很多因素,比如访问量大了如何调整部署,如何更好的应对大并发的情…

持续集成之应用容器化及自动化部署

通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署IntroAzure DevOps Pipeline 现在对于公开的项目完全免费,这对于开源项目来讲无疑是个巨大的好消息,在 Github 的 Marketplace 里有个 Azure Pipeline,就是微软的 Azure DevOps …

持续集成之 Nuget 进阶

持续集成之 Nuget 进阶Intro之前介绍了一篇基于 Azure pipeline 的 nuget 包的持续集成配置,但是比较粗糙,这里介绍一下结合 Cake 实现更优雅的 nuget 包发布流程。实现目标:分支(除master/preview)有代码 push 或者 pr 时 自动 buildpreview…

做“是非题”的正确姿势

这里是Z哥的个人公众号每周五11:45 按时送达有时也会有感而发,来加个餐~我的第「107」篇原创敬上大家好,我是Z哥。这两天中国男篮的事,让我有感而发。不知道你有没有留意到,我们身边总有类似下面这样的事情…

依赖倒置原则(DIP)、控制反转(IoC)、依赖注入(DI)(C#)

象的控制权交由配置文件控制,然后根据配置文件中的信息(程序集类型),通过反射来获取对象,而不是直接new对象,这也是控制反转的一种体现。IoC容器会连接程序中的所有模块,模块将所需对象的控制权…

四种为HttpClient添加默认请求报头的解决方案

HttpClient在Web调用中具有广泛的应用,而为它添加默认请求头是我们经常遇到的需求,本文介绍4种为HttpClient添加默认请求头的方式。直接在创建的HttpClient对象的DefaultRequestHeaders集合中添加报头。class Program{static Task Main()> SendAsync…

【盛派内部分享资料】本期主题:使用JavaScript HTML CSS构建跨平台桌面应用

先上录制视频友情提示:如果公众号内视频无法显示高清视频,您也可以在小程序内观看高清视频,点击下方按钮观看:【盛派内部分享资料】本期主题:使用JavaScript HTML CSS构建跨平台桌面应用本次活动由盛派技术人员伏允坤主…