基于 Jenkins 实现的轻量化自动化测试运行框架

这几天正好把两年多前搭建的用于自动跑自动化测试应例 的  Jenkins 系统升级到最新版本。当年搭建这个框架也是颇费一番周折,(可惜仅忙于搭建,没有记录下来)现在正好是个时机整理下。



在整个测试团队中,自动化测试虽然带来了回归测试的便利。但是往往会花费比较多的人力来运行、管理、跟踪整个自动化测试。尤其是运行和管理,如果没有一个好的平台(框架),本身维护的 effort就不是一个团队能轻易接受的。

在比较大且长期的项目中,往往会开发一个完整的平台来整合这些自动化测试相关的日常工作。笔者曾经在一个团队中维护过这样的平台。从测试任务的触发->测试虚拟机镜像的准备->镜像的部署->测试应例的运行->测试结果自动分析->测试报告生成,这一系列的过程自动完成。但是这些理想化的结果的背后,现实是一整个独立团队的开发、维护。而这并不是所有的测试团队可以接受的。

但是今天给大家介绍的这个轻量化的框架,却是简单实现,易于维护。并且有很好的应用结果。其具有以下几个优点:

  • 基于成熟的测试工具。Jenkins 是目前业内最流行的快速持续集成工具之一, 其稳定的性能和丰富的扩展性, 使得很多的团队都优先选择它作为项目的主要支持工具。其属于主流工具,很多团队已经有过相应的经验,可以大大缩短学习曲线和成本。
  • 方便的定制自动化测试job。Jekins 拥有自己的Web 界面。按照需求方便地创建所需的自动化测试任务。
  • 所有的自动化执行历史记录都可以保存在平台上。可以通过 Web 的方式随时查阅。同时也可以在job的后期处理时,写入现有的数据库,方便以后选择其他的展示方式。
  • Jenkins 支持丰富的插件,用户可以按照需求进行选择安装和配置,以实现生成执行状态表格,自动部署/更新自动化测试包等高级功能.

测试框架主要是基于 Jenkins 自带的 Master/Slave 结构。如下图

主要的工作流程,如下图

主要脚本实现的功能介绍:

Trigger.py 监测软件测试版本的发布,包括客户端发布和服务器端发布。侦测到新版本发布后,记录下 version 号。作为后期 job 的 label 使用。

PrepareProcess.py 在侦测到新版本后,触发一系列的准备工作。同步最新的测试工具,测试应例到 master 端,方便后面 slave 能够从 master 同步最新的 code。

startTest.sh/startTest.bat 唯一部署在 slave 上的脚本,主要任务就是建立与 master 的连接,同步最新的测试工具,测试应例,然后触发测试执行。

Install.py 在 startTest 同步完所有运行需要的文件之后。开始安装客户端 (浏览器系统清理),准备好所有自动化运行前的准备。

RunCase.py 控制所有类型的自动化运行。譬如,客户端和浏览器纯 web 的回归测试, 性能测试。最后把结果返回给 master 和写入数据库。

时间: 2024-11-10 12:03:34

基于 Jenkins 实现的轻量化自动化测试运行框架的相关文章

基于Jenkins,docker实现自动化部署(持续交付)

前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此,传统的人工部署已经心有余而力不足.持续集成,持续部署,持续交互对于微服务开发来说,是提高团队整体效率不可或缺的一环.合理的使用CI,CD能够极大的提高了生产效率,也提高了产品的交互质量.本文不对三个概念做过多的介绍,有兴趣可以读读这篇文章:The Product Managers' Guide to

基于Jenkins的自动构建系统开发_android总结

持续集成相关理论 1.1 极限编程的概述 1.1.1 极限编程的产生 2001年,为了解决许多公司的软件团队陷入不断增长的过程泥潭,一批业界专家一起概括出了一些可以让软件开发团队具有快速工作.响应变化能力的价值观和原则,他们称自己为敏捷联盟.敏捷开发过程的方法很多,主要有:SCRUM,Crystal,特征驱动软件开发(Feature Driven Development,简称FDD),自适应软件开发(Adaptive Software Development,简称ASD),以及最重要的极限编程(

基于 Jenkins 快速搭建持续集成环境

持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础.Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能.本文正是从持续集成的基本概念入手,通过具体实例,介绍了如何基于 Jenkins 快速搭建持续集成环境. 持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变

基于Jenkins持续集成CI

持续集成强调开发人员提交了新代码之后,立刻进行构建.(单元)测试.根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起. 持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中.比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试.如果代码没有问题,可以继续手动部署到生产环境中 持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化. 集成:是指软件个人研

基于Jenkins Pipeline的ASP.NET Core持续集成实践

原文:基于Jenkins Pipeline的ASP.NET Core持续集成实践 最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署,因此这里总结一下. 一.关于持续集成与Jenkins Pipeline 1.1 持续集成相关概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI) . 持续集成指的是,频繁地 (一天多次) 将代码集成到

轻量化卷积神经网络模型总结by wilson(shffleNet,moblieNet,squeezeNet+Xception)

一.简介 主要参考博客:纵览轻量化卷积神经网络 https://zhuanlan.zhihu.com/p/32746221 1, SqueezeNet: SqueezeNet对比AlexNet能够减少50倍的网络参数,但是却拥有相近的性能.SqueezeNet主要强调用1x1的卷积核进行feature map个数的压缩,从而达到大量减少网络参数的目的.在构造网络的时候,采用VGG的堆叠思想. 2, moblieNet: MobileNet采用depth-wise convolution的卷积方式

基于Jenkins的开发测试全流程持续集成实践

今年一直在公司实践CI,本文将近半年来的一些实践总结一下,可能不太完善或优美,但的确初步解决了我目前所在项目组的一些痛点.当然这仅是一家之言也不够完整,后续还会深入实践和引入Kubernetes进行容器编排,以及通过阿里云K8S服务进行高效的云上托管,希望对各位童鞋有一点用. 一.持续集成全流程介绍 今年一直在开发我司的一个核心业务系统,一个还未上线的产品开发阶段,其中后端采用ASP.NET Core + 一系列开源组件开发微服务并且部署在Linux Docker中,前端采用React + Fl

基于Jenkins打造符合DevOps能力成熟度三级标准的持续集成流水线

DevOps的核心是自动化,自动化的核心是标准化.而DevOps最重要的一环节是持续交付,持续交付中建设的重点是流水线,所以如何打造标准的持续交付流水线则为DevOps建设中最重要的一环,也是评估DevOps能力的一个重要的打分点.本文内容参照<研发运营一体化(DevOps)能力成熟度模型 第3部分:持续交付>,基于jenkins,对持续集成流水线建设的一些关键点进行技术应答,带领大家把方法论落地到具体的技术点上. 文中涉及到的几个名词解释:1,流水线:pipeline,一个应用程序从构建.部

轻量化ViewControllers,读文章做的总结

推荐一个网站 http://objccn.io/ 我这两天才开始看 获益匪浅 看了第一篇文章 <更轻量的View Controllers>感觉写的不错 感觉作者 原文地址 http://objccn.io/issue-1-1/ 示例项目的代码有点旧 Xcode6运行出错 懒的理了 所以我大概模仿他写了一点测试代码 运行环境Xcode7/iOS9 轻量化ViewControllers 顾名思义 就是把ViewController的代码进行简化 让控制器更简单 更清晰 一.把DataSource和