当前位置: 代码网 > 服务器>服务器>Linux > JMeter/Pytest/Ginkgo 等测试框架如何接入 Zadig

JMeter/Pytest/Ginkgo 等测试框架如何接入 Zadig

2024年08月04日 Linux 我要评论
Zadig,作为领先的开源云原生 DevOps 平台,不仅为日常开发提供全面的测试环境以支持开发自测联调,还全面覆盖性能、功能、接口、UI 及端到端自动化测试等多种测试场景。它确保每一行代码在上线前经过严格的测试验证,牢牢守护软件质量的生命线。 在本文中,我们将探讨如何将 JMeter、Pytest、Ginkgo等主流测试框架,以及 Apipost、Apifox等自动化测试平台与 Zadig 集成。通过这种集成,用户可以充分利用 Zadig 在环境治理方面的...

zadig,作为领先的开源云原生 devops 平台,不仅为日常开发提供全面的测试环境以支持开发自测联调,还全面覆盖性能、功能、接口、ui 及端到端自动化测试等多种测试场景。它确保每一行代码在上线前经过严格的测试验证,牢牢守护软件质量的生命线

在本文中,我们将探讨如何将 jmeterpytestginkgo主流测试框架,以及 apipostapifox自动化测试平台zadig 集成。通过这种集成,用户可以充分利用 zadig 在环境治理方面的强大功能,同时借助自动化测试最大化地保障软件交付的质量和效率

本案例的所有源码均可在「 zadig 代码库 」中找到。若你希望进行实际操作和实践,可以通过 fork 代码库,或将源码保存至个人代码仓库。同时,为了顺利完成集成过程,请参考「官方文档」以获得详细指导。

jmeter 框架的使用

组织自动化测试代码

本例将使用 jmeter 对 koderover 官网进行一个简单的压测,自动化测试代码如下:

<?xml version="1.0" encoding="utf-8"?>
<jmetertestplan version="1.2" properties="5.0" jmeter="5.4.3">
  <hashtree>
    <testplan guiclass="testplangui" testclass="testplan" testname="test plan" enabled="true">
      <stringprop name="testplan.comments"></stringprop>
      <boolprop name="testplan.functional_mode">false</boolprop>
      <boolprop name="testplan.teardown_on_shutdown">true</boolprop>
      <boolprop name="testplan.serialize_threadgroups">false</boolprop>
      <elementprop name="testplan.user_defined_variables" elementtype="arguments" guiclass="argumentspanel" testclass="arguments" testname="user defined variables" enabled="true">
        <collectionprop name="arguments.arguments"/>
      </elementprop>
      <stringprop name="testplan.user_define_classpath"></stringprop>
    </testplan>
    <hashtree>
      <threadgroup guiclass="threadgroupgui" testclass="threadgroup" testname="thread group" enabled="true">
        <stringprop name="threadgroup.on_sample_error">continue</stringprop>
        <elementprop name="threadgroup.main_controller" elementtype="loopcontroller" guiclass="loopcontrolpanel" testclass="loopcontroller" testname="loop controller" enabled="true">
          <boolprop name="loopcontroller.continue_forever">false</boolprop>
          <stringprop name="loopcontroller.loops">1</stringprop>
        </elementprop>
        <stringprop name="threadgroup.num_threads">10</stringprop>
        <stringprop name="threadgroup.ramp_time">1</stringprop>
        <boolprop name="threadgroup.scheduler">false</boolprop>
        <stringprop name="threadgroup.duration"></stringprop>
        <stringprop name="threadgroup.delay"></stringprop>
        <boolprop name="threadgroup.same_user_on_next_iteration">true</boolprop>
      </threadgroup>
      <hashtree>
        <httpsamplerproxy guiclass="httptestsamplegui" testclass="httpsamplerproxy" testname="http request" enabled="true">
          <elementprop name="httpsampler.arguments" elementtype="arguments" guiclass="httpargumentspanel" testclass="arguments" testname="user defined variables" enabled="true">
            <collectionprop name="arguments.arguments"/>
          </elementprop>
          <stringprop name="httpsampler.domain">www.koderover.com</stringprop>
          <stringprop name="httpsampler.port"></stringprop>
          <stringprop name="httpsampler.protocol">https</stringprop>
          <stringprop name="httpsampler.contentencoding"></stringprop>
          <stringprop name="httpsampler.path">/</stringprop>
          <stringprop name="httpsampler.method">get</stringprop>
          <boolprop name="httpsampler.follow_redirects">true</boolprop>
          <boolprop name="httpsampler.auto_redirects">false</boolprop>
          <boolprop name="httpsampler.use_keepalive">true</boolprop>
          <boolprop name="httpsampler.do_multipart_post">false</boolprop>
          <stringprop name="httpsampler.embedded_url_re"></stringprop>
          <stringprop name="httpsampler.connect_timeout"></stringprop>
          <stringprop name="httpsampler.response_timeout"></stringprop>
        </httpsamplerproxy>
        <hashtree/>
      </hashtree>
    </hashtree>
  </hashtree>
</jmetertestplan>

配置 jmeter 软件包

zadig 系统有内置的 jmeter 应用可直接使用,如果内置版本无法满足自动化测试诉求,可参考官方文档中「软件包管理」按需新增。本例以 jmeter5.4.3 版本示例如下。

系统管理员登录 zadig -> 访问系统设置 -> 集成管理 -> 软件包管理,添加 jmeter:

参数说明:

mkdir -p $home/jmeter
tar -c $home/jmeter -xzf ${filepath} --strip-components=1

在 zadig 中完成测试配置

进入项目的测试模块,点击 新建测试,完成测试配置。

本例配置说明如下:

  • 操作系统:ubuntu 20.04
  • 依赖的软件包: jmeter 5.6.3java 1.12.0.1
  • 代码信息:选择已集成代码库(自动化测试源码所在的代码库)
  • 测试脚本:
#!/bin/bash
set -ex

cd zadig/examples/jmeter-demo/

# run test
jmeter -n -t demo.jmx -l demo.jtl

# generate reports
if [ -e reports ]; then
    rm -rf reports
fi
jmeter -g demo.jtl -o reports
  • 高级配置 - 测试结果导出:配置测试结果导出以便在测试执行完毕后下载测试报告进行分析,本例中为 $workspace/zadig/examples/jmeter-demo/reports

运行自动化测试并分析结果

配置完毕后,执行自动化测试。

待自动化测试运行完毕后,点击下载将测试报告下载到本地。

解读下载的测试报告,查看本次压力测试的结果,分析性能瓶颈。

pytest 框架的使用

组织自动化测试代码

根据实际测试业务和功能,编写自动化测试代码并组织在代码仓库中。本实践中将使用 pytest 进行数学运算测试,自动化测试源码如下:

def increase(x):
    return x + 1

def test_increase_1_to_2021_is_2022():
    assert increase(2021) == 2022

def square(x):
    return x * x

def test_the_square_of_5_is_25():
    assert square(5) == 25

def test_the_square_of_negative_5_is_negative_25():
    assert square(-5) == -25

配置 python 自定义镜像

执行 pytest 环境中需事先安装 python,在 zadig 中配置自定义镜像,参考官方文档:自定义镜像管理 | zadig 文档

python 3.8 自定义镜像 dockerfile 参考:

from python:3.8-slim

run apt-get clean && apt-get update && debian_frontend=noninteractive apt-get install -y curl git tzdata

# 修改时区
run ln -sf /usr/share/zoneinfo/asia/shanghai /etc/localtime

# 安装 docker client
run curl -fssl "http://resources.koderover.com/docker-cli-v19.03.2.tar.gz" -o docker.tgz &&\
    tar -xvzf docker.tgz &&\
    mv docker/* /usr/local/bin

将上述 dockerfile 打成镜像后,在 zadig 「自定义镜像」中完成配置。

在 zadig 中完成测试配置

进入项目的测试模块,点击 新建测试,完成测试配置。

本例配置说明如下:

  • 操作系统:·
  • 代码信息:选择已集成代码库(自动化测试源码所在的代码库)
  • 测试脚本:
#!/bin/bash
set -x

pip install pytest-html

cd $workspace/zadig/examples/pytest-demo
pytest --junitxml=./junit.xml --html=./report.html # 执行测试并生成 junit xml 测试报告和 html 测试报告
  • junit 报告所在目录:$workspace/zadig/examples/pytest-demo

运行自动化测试并分析结果

配置完毕后,执行自动化测试。

待自动化测试运行完毕后点击查看测试报告,可查看每一条用例的执行详情。

对于失败的用例,可以快速过滤重点分析。

ginkgo 框架的使用

组织自动化测试代码

本实践中将对 koderover 官网及文档站的可用性进行自动化检测。

package test

import (
        "net/http"
        "testing"

        . "github.com/onsi/ginkgo/v2"
        . "github.com/onsi/gomega"
)

func testdemo(t *testing.t) {
        registerfailhandler(fail)
        runspecs(t, "testdemo suite")
}

func hellogeek(host string) (int, error) {
        req, _ := http.newrequest("get", host, nil)
        req.header.set("content-type", "application/json")

        client := &http.client{}
        response, err := client.do(req)
        if err != nil {
                return 0, err
        }
        return response.statuscode, err
}

var _ = describe("zadigwebsiteslifeprobe", func() {
        it("case1: hello, welcome to https://www.koderover.com", func() {
                host := "https://www.koderover.com"
                code, err := hellogeek(host)
                expect(err).should(benil())
                expect(code).should(equal(200))
        })

        it("case2: hello, welcome to https://docs.koderover.com/", func() {
                host := "https://docs.koderover.com/"
                code, err := hellogeek(host)
                expect(err).should(benil())
                expect(code).should(equal(200))
        })

        it("case3: sorry, https://www.koderover.com.cn won't work", func() {
                host := "https://www.koderover.com.cn"
                _, err := hellogeek(host)
                expect(err).should(not(benil()))
        })
})

配置依赖的软件包

zadig 系统有内置的 ginkgo 应用及 go 应用可直接使用,如果内置版本无法满足自动化测试诉求,可参考官方文档中「软件包管理」按需新增。本例依赖 go 1.16 以及 ginkgo 2.0.0,配置示例如下。

系统管理员登录 zadig -> 访问系统设置 -> 集成管理 -> 软件包管理,分别添加 go 和 ginkgo:

go 参数说明:

tar -c $home -xzf ${filepath}

ginkgo 参数说明:

mkdir -p $home/ginkgo
tar -c $home/ginkgo -xvf ${filepath}
chmod +x $home/ginkgo/ginkgo

在 zadig 中完成测试配置

进入项目的测试模块,点击 新建测试,完成测试配置。

本例配置说明如下:

  • 操作系统: ubuntu 20``.04
  • 依赖的软件包:go 1.16.13ginkgo 2.0.0
  • 代码信息:选择已集成代码库(自动化测试源码所在的代码库)
  • 测试脚本:
#!/bin/bash
set -ex

export goproxy=https://goproxy.cn,direct
cd zadig/examples/test-demo/test
ginkgo -v --junit-report=out.xml # 运行测试用例并产出 junit xml 格式的测试报告
  • junit 报告所在目录: $workspace/``zadig/examples/test-demo/test

运行自动化测试并分析结果

配置完毕后,执行自动化测试。

待自动化测试运行完毕后点击查看测试报告,可查看每一条用例的执行详情。对于失败的用例,可以快速过滤重点分析。

企业如果有使用其他开源、自研的测试框架,可通过开发工作流任务接入 zadig,具体方式参考文档。如果有购买的商业测试平台或自建测试平台,可以参考 apifox/apipost/自建等测试平台如何接入 zadig

扫码即刻咨询
解锁企业专属最佳实践方案!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com