通用技术 自动化测试与持续集成方案

这篇具有很好参考价值的文章主要介绍了通用技术 自动化测试与持续集成方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

传统接口测试

接口测试自动化

接口自动化的持续集成


前言:

在现代软件开发中,自动化测试和持续集成是两个不可或缺的环节。自动化测试可以提高测试效率、减少人工错误,并确保软件的质量。持续集成则可以帮助开发团队更快地集成和交付代码,提高开发效率和团队协作。

  1. 传统接口测试
  2. 接口自动化测试
  3. 接口自动化的持续集成
  4. 探讨

传统接口测试


不知道别人家的接口测试是怎么做的。这边是用 postman 这个 google 插件。测试人员按照接口开发人员的 wiki,设计测试用例,然后 post/get 一下。查看返回 json 的状态或者字段。

通用技术 自动化测试与持续集成方案,自动化测试,软件测试,软件测试工具,servlet,服务器,前端,jenkins,开发语言,python,lua


弱点是不便于管理 case 和不方便统计结果,执行要一个一个手工去点,效率低下。

接口测试自动化


我用 python 写了个脚本,将 case 写在 excel 里,然后读取 excel 来实现这个过程,并自动判断和统计结果,生成报告。
case 这么设计的。

通用技术 自动化测试与持续集成方案,自动化测试,软件测试,软件测试工具,servlet,服务器,前端,jenkins,开发语言,python,lua


脚本这么写的:

#encoding:utf-8

import ConfigParser
import os
import xlrd
import re
import httplib
import urllib
from urlparse import urlparse
import json
import time
import unittest
import pdf

currentdir=os.path.split(os.path.realpath(__file__))[0]
class test_class():
    def getexcel(self):
        casefile=currentdir + '/case.xls'
        if ((os.path.exists(casefile))==False):
            print "当前路径下没有case.xls,请检查!"
        data=xlrd.open_workbook(casefile)
        table = data.sheet_by_name('login')
        nrows = table.nrows #行数
        ncols = table.ncols #列数
    #colnames = table.row_values(1) #某一行数据
        for rownum in range(1,nrows):
            for col in range (3, ncols):
                value=table.cell(rownum,col).value
                if (col==3):
                    method=value
                if (col==4):
                    url=value
        return table,nrows,ncols

    def getexceldetail(self,table,row,ncols):
        #rownum = table.row_values(row) #某一行数据

        for col in range (0, ncols):
            value=table.cell(row,col).value
            if (col==0):
                caseid=value
        print caseid
            if (col==3):
                method=value
        print method
            if (col==4):
                url=value
        return method,url,caseid

    def httpget(self,url):
        httpClient = None
        conn = urlparse(url)
        url=url.encode('utf-8')
        try:
            httpClient = httplib.HTTPConnection(conn.netloc, timeout=10)
            httpClient.request('GET', url)

        # response是HTTPResponse对象
            response = httpClient.getresponse()
            print response
            d0=response.read()
            d0=d0.decode('unicode_escape')
        except Exception, e:
            print e
        finally:
            if httpClient:
                httpClient.close()
    return response.status,d0

    def httppost(self,url):
        httpClient = None
        conn = urlparse(url)
        url=url.encode('utf-8')
        try:
            header = {"Content-type": "application/x-www-form-urlencoded",
                  "Accept": "text/plain"}

            httpClient = httplib.HTTPConnection(conn.netloc, timeout=30)
            httpClient.request("POST", url)
            response1 = httpClient.getresponse()
            d1=response1.read()
            d1=d1.decode('unicode_escape')
        except Exception, e:
            print e
        finally:
            if httpClient:
                httpClient.close()
        return response1.status,d1

代码太多了点,没写下。其实就是一个读 excel,一个 post,一个 get 的过程。
后面还有一个对 json 的解析过程。开始以为是一个字典就搞定了,后面发现有些{}里面嵌套了好几层。
最后用了个递归搞定。

#! /usr/bin/env python
#coding=utf-8
import urllib2
import json


class readjson():
    def read(self,obj,key):
        collect = list()
        for k in obj:
            v = obj[k]

            if isinstance(v,str) or isinstance(v,unicode):
                if key== ' ':
                    collect.append({k:v})
                else:
                    collect.append({str(key)+"."+k:v})
            elif isinstance(v,int):
                if key== ' ':
                    collect.append({k:v})
                else:
                    collect.append({str(key)+"."+k:v})
            elif isinstance(v,bool):
                if key== ' ':
                    collect.append({k:v})
                else:
                    collect.append({str(key)+"."+k:v})
            elif isinstance(v,dict):
                collect.extend(read(v,k))
            elif isinstance(v,list):
                collect.extend(readList(v,key))
        return collect

    def readList(self,obj,key):
        collect = list()
        for index,item in enumerate(obj):
            for k in item:
                v = item[k]
                if isinstance(v,str) or isinstance(v,unicode):
                    collect.append({key+"["+str(index)+"]"+"."+k:v})
                elif isinstance(v,int):
                    collect.append({key+"["+str(index)+"]"+"."+k:v})
                elif isinstance(v,bool):
                    collect.append({key+"["+str(index)+"]"+"."+k:v})
                elif isinstance(v,dict):
                    collect.extend(read(v,key+"["+str(index)+"]"))
                elif isinstance(v,list):
                    collect.extend(readList(v,key+"["+str(index)+"]"))
        return collect


#ojt=test_data1

#print read(ojt,' ')

最后是结果:

通用技术 自动化测试与持续集成方案,自动化测试,软件测试,软件测试工具,servlet,服务器,前端,jenkins,开发语言,python,lua


是用 python 写图表,生成 pdf.

from reportlab.graphics.shapes import Drawing  
from reportlab.graphics.charts.barcharts import VerticalBarChart  
from urllib import urlopen    
from reportlab.graphics.shapes import *    
from reportlab.graphics.charts.lineplots import LinePlot    
from reportlab.graphics.charts.textlabels import Label    
from reportlab.graphics import renderPDF  
class pdfreport():
    def createpdf(self,datas):
        drawing = Drawing(400, 200)
        #data = [(13, 5, 20),(14, 6, 21)]
        data=datas
        bc = VerticalBarChart()
        bc.x = 50
        bc.y = 50
        bc.height = 125
        bc.width = 300
        bc.data = data
        bc.strokeColor = colors.black
        bc.valueAxis.valueMin = 0
        bc.valueAxis.valueMax = 50
        bc.valueAxis.valueStep = 10
        bc.categoryAxis.labels.boxAnchor ='ne'
        bc.categoryAxis.labels.dx = 8
        bc.categoryAxis.labels.dy = -2
        bc.categoryAxis.labels.angle = 30
        bc.categoryAxis.categoryNames = ['Jan-99','Feb-99','Mar-99']
        #bc.categoryAxis.categoryNames =ytype
        drawing.add(bc)

        drawing.add(String(250,150,"ss", fontSize=14,fillColor=colors.red))
        #drawing.add(String(250,150,des, fontSize=14,fillColor=colors.red))
        renderPDF.drawToFile(drawing,'report1.pdf','API')
        #renderPDF.drawToFile(drawing,'APIReport.pdf','API')

datas=[(0,20),(0,25)]
f=pdfreport()
f.createpdf(datas)

接口自动化的持续集成


配置到 jenkins 上也很简单,这里就不过多描述。现在问题是,生成的报告是 pdf。Jenkins 里面不太好展现出来。弄成 zip 附件查看不方便。最后我写个脚本将其传到共享里面,或者写脚本用邮件发出来。后面写打包的时候会讲到的。

通用技术 自动化测试与持续集成方案,自动化测试,软件测试,软件测试工具,servlet,服务器,前端,jenkins,开发语言,python,lua

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)

相信能使你更好的进步!

点击下方小卡片

通用技术 自动化测试与持续集成方案,自动化测试,软件测试,软件测试工具,servlet,服务器,前端,jenkins,开发语言,python,lua文章来源地址https://www.toymoban.com/news/detail-572823.html

到了这里,关于通用技术 自动化测试与持续集成方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生持续交付和自动化测试】5.2 自动化测试和集成测试

    往期回顾: 第一章:【云原生概念和技术】 第二章:【容器化应用程序设计和开发】 第三章:【基于容器的部署、管理和扩展】 第四章:【微服务架构设计和实现】 第五章:【5.1 自动化构建和打包容器镜像】 5.2.1 什么是自动化测试和集成测试? 云原生的自动化测试和集

    2024年02月14日
    浏览(64)
  • 持续集成下接口自动化测试实践

    目录 :导读 引言 接口自动化测试工具介绍 接口自动化测试在持续集成中的运用 小结 目前很多持续集成项目都需要执行接口层的测试,当你了解其基本概念,理解了接口协议、如何传参、测试原理后,无需 掌握程序语言,使用 行业 内成熟的接口测试 工具,就 可 以快速地

    2023年04月26日
    浏览(46)
  • SoapUI实践:自动化测试、压力测试、持续集成

    因为项目的原因,前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api。下面将研究的成果展示给大家,希望对需要的人有所帮助。 SoapUI 是一个开源测试工具,通过 soap/http 来检查、调用、实现 Web Service 的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使

    2024年02月05日
    浏览(68)
  • Apipost自动化测试+Jenkins实现持续集成

    Apipost 自动化测试支持「持续集成」功能,在安装了Apipost的服务器中输入命令,即可运行测试脚本。 创建自动化测试脚本 在创建好的测试用例中选择「持续集成」。 点击新建,配置运行环境、循环次数、间隔停顿后点击保存会生成命令。 安装 Apipost-cli npm install -g apipost-cl

    2024年01月25日
    浏览(66)
  • App自动化测试持续集成效率提高50%

    持续集成是一种开发实践,它倡导团队成员需要频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、自动化测试)来验证,从而尽快地发现集成中的错误。让正在开发的软件始终处于可工作状态,让产品可以快速迭代,同时还能保持高质量。 Jenkins 是基于

    2024年02月09日
    浏览(49)
  • 这才是自动化测试,资深测试构建持续交付体系(高质量)持续集成...

    软件测试-自动化测试 Python自动化测试:https://www.bilibili.com/video/BV16G411x76E/ 无论是保障质量,还是提升效率,都需要某些持续的能力来支撑他们。 这种支撑能力,可以看作是一种工厂化的流水线能力,业内通常将其统称为持续交付。 从质量保障的角度总体来说,可以将其分为

    2024年02月05日
    浏览(55)
  • Jenkins+Python自动化测试持续集成详细教程

    ​ Jenkins是一个开源的软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。由于是基于java开发因此它也依赖java环境,安装之前需要先安装jdk,建议jdk1.8+,安装后配置java环境变量。安装

    2024年02月08日
    浏览(70)
  • Jenkins UI 自动化持续化集成测试

    在官网下载msi 直接安装即可 设置allure 路径 1、创建自由风格项目 2、如果项目在本地,且本地服务器是windows ,找到Jenkins安装根目录,寻找config.xml文件,如下位置: *在config.xml文件内,查找 workspaceDir ,将你的自定义 工作空间根目录 地址替换默认的地址 注释掉的是

    2024年02月07日
    浏览(56)
  • 接口自动化测试持续集成,Soapui接口功能测试参数化

    按照自动化测试分层实现的原理,每一层的脚本实现都要进行参数化,自动化的目标就是要实现脚本代码与测试数据分离。 当测试数据进行调整的时候不会对脚本的实现带来震荡,从而提高脚本的稳定性与灵活度,降低脚本的维护成本。 Soapui最为强大的参数化就是支持groo

    2024年02月01日
    浏览(58)
  • Jenkins+Python自动化测试持续集成详细教程(全网独家)

    目录 一、前言 二、环境准备 三、创建Jenkins Job 四、编写Python自动化测试脚本 五、测试报告生成与展示 六、持续集成流程优化 七、实战演练 八、常见问题及解决方案 九、结论 Jenkins是目前最为流行的CI/CD工具之一,它可以支持多种语言和技术栈,如Java、Python、JavaScript等。

    2024年02月06日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包