持续集成与自动化测试
文章平均质量分 65
持续集成,就是持续的代码合入过程。每一次集成,绝非是将开发者的代码改动与主干已有代码合并这么简单,而是一个复杂的,通常包括代码合并,构建,静态检查,动态检查,运行,多级测试 (单元测试/模块测试/集成测试),代码评审等一系列任务的系统工程。
每 天 早 睡
不积跬步,无以至千里;不积小流,无以成江海
展开
-
Web UI自动化测试--PO模式
PO(Page Object Model)页面对象模型,是自动化测试项目开发实践的最佳设计模式之一,相同的操作(但可能是不同的数据)带来的不同的结果可以封装成不同的方法。测试用例就是组合了1个或多个页面的方法,操作对应的元素,完成的测试。换句话来说,模块下的页面,页面中元素许多动作形成业务。业务层:上面2层的组合,并联合到一起形成某个业务动作,在页面中对若干元素操作后所实现的功能。(页面类的方法,也可以是多个页面的组台)操作层:对页面可见元素的操作。表现层:页面中可见的元素,都属于表现层。原创 2024-05-08 23:46:51 · 108 阅读 · 0 评论 -
Web UI自动化测试--selenium其他使用方法
通常来说,有2个原因你需要使用Grid。一是在多种浏览器,多种版本的浏览器,不同操作系统里的浏览器里执行你的测试,二是缩短完成测试的时间。user_data_dir的获取可以通过chrome://version得到,注意去掉尾部的default。对于select_by_visible_text的内容,注意不要把空格复制进去。本质上也可以用点击来完成,但selenium提供了API来操作,操作更加方便。select元素操作。原创 2024-04-28 01:21:21 · 271 阅读 · 2 评论 -
Web UI自动化测试--元素操作
什么是web ui自动化测试1、通过代码来模拟人的手工操作,执行测试内容2、自动化是为了代替重复的手工操作,提高测试效率ui自动化的价值:1、回归速度的对比,以前进行全量回归测试需要x天,现在有没有减少2、负责功能测试的同事,是不是有更多的时间测试新需求了3、自动化测试不是为了发现bug,而是为手工测试节省回归时间ui自动化的原理(selenium与webdriver):selenium是一个用于web测试的工具,测试运行在浏览器当中,就像真的用户在操作浏览器一样,支持所有的主流浏览器;web原创 2024-03-17 15:53:30 · 171 阅读 · 0 评论 -
接口测试实战--gitlab容器化部署
2、修改/srv/gitlab/data/gitlab-rails/etc/gitlab.yml,找到关键字"Web server settings",将host的值改成映射的外部主机ip地址和端口,这里会显示在gitlab克隆地址。svn是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所有首先要从中央服务器下载最新的版本,然后开发,开发完后需要把自己开发的代码提交给中央服务器。从代码的私有性上来看,GitLab 是一个更好的选择;原创 2024-03-14 00:06:54 · 215 阅读 · 0 评论 -
接口测试实战--使用docker方案去部署jenkins并搭建接口自动化项目
下载gitlab、allure插件,下载完成重启jenkins生效(页面点击重启或者输入docker ps -a获取容器id,再输入输入docker restart 容器id重启jenkins容器)5)手动把项目代码直接通过xftp直接传递到/var/jenkins_node/workspace/autotest(后续采用gitlab方案)进入 Manage Jenkins----->Manage Plugin----->Advanced最下面有 Update Site 设置为。原创 2024-03-12 01:19:40 · 212 阅读 · 0 评论 -
接口测试实战--mock测试、日志模块
所以,当我们做接口测试的时候,如果后端某些接口还不成熟、所依赖的接口不稳定或者所依赖的接口为第三方接口、构造依赖的接口数据太复杂等问题时,我们可以用mock的方式先虚拟这些接口返回来代替,提高工作效率。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。在前后端分离项目中,当后端工程师还没有完成接口开发的时候,前端开发工程师利用Mock技术,自己用mock技术先调用一个虚拟的接口,模拟接口返回的数据,来完成前端页面的开发。原创 2024-02-27 00:53:37 · 139 阅读 · 0 评论 -
接口测试实战--读取yaml用例
基本数据类型:字符串、整型、列表、null(可使用~表示)、布尔型、时间。4)变量的使用:一个数据后面被使用了很多次,一般定义一个变量去调用的。handle_yaml.py:读取yaml测试用例。缩进的空格数目不重要,只要相同层级的元素左对齐。handle_path.py:获取各种路径。缩进时不允许用tab键,只能使用空格。扩展:yaml文件里引用yaml文件。login.py:业务层----登录。test_login.py:测试脚本。3)yaml单引号与双引号的区别。baseApi.py:基类。原创 2024-02-25 23:19:53 · 42 阅读 · 0 评论 -
接口测试实战--Pytest测试框架
pytest是python第三方单元测试框架。完美兼容python自带unittest框架,支持丰富的插件。环境搭建pip install pytest - html # 查看是否安装成功 pip show pytest# @pytest.fixture(scope='module') # 装饰器,声明下面的函数是setup函数# scope='function' 默认级别,每个方法或函数都跑一次# scope='class' 每个类执行一次# scope='module' 每个模块执行一次。原创 2024-02-25 19:15:34 · 49 阅读 · 0 评论 -
接口测试实战--自动化测试流程
不差钱的,直接使用比较成熟的第三方;代码层级框架开发是对中小型创业型公司,既要培养人才,又要节省成本,还有就是个人自身能力培养,扩展性强,不过每个人编程能力和风格不一样,要着重代码的规范;请求头有User-Agent(客户端相关信息)、refer(告诉服务器请求是哪个页面发出来的,防盗链)、X-Requested-With(告诉服务器是一个ajax请求)、cookie、content-type(消息体数据类型)等;RSA加密:非对称加密,公钥加密/验签,私钥解密/签名,加密速度慢,安全。原创 2024-02-24 22:54:33 · 222 阅读 · 0 评论 -
paramiko模块使用
连接linux,返回执行结果。上传下载到linux。原创 2024-02-03 23:52:52 · 67 阅读 · 0 评论 -
多线程与socket编程
tcp(语音聊天、视频聊天、线下缓存高强电影、qq远程控制、发邮件)死锁:A线程操作占用资源1没有释放,B线程再来操作资源1,造成死锁。发生在发送端:发送间隔短,数据短,由于优化机制就合并在一起发送了;发生在接收端:接收不及时,所以数据就在接收方的缓存端黏在一起了。粘包的本质:tcp协议的传输是流式传输,数据与数据之间没有边界。接收端先接受四字节,知道数据的长度,再按照长度接收数据。发送端先发送四字节数据长度,再按照长度发送数据。udp(在线播放视频、qq发消息、微信消息)2、tcp、udp特点。原创 2024-02-03 23:48:08 · 116 阅读 · 0 评论 -
编码处理与装饰器
数据在内存中全部是以Unicode编码的,但是当你的数据用于网络传输或者存储到硬盘,必须以非Unicode(utf8,gbk)可以使用chardet库,获取编码类型,一般爬虫使用requests库结合chardet可以识别网页编码类型。函数名可以被复制给其他变量,可以当做参数传递,可以作为返回值(非常重要!闭包:只发生在嵌套函数,内部函数对外部函数的非全局变量的引用(开放封闭原则)先了解几个概念:位(bit)、字节(byte)、字符、字符集、编码、解码。编码:密码本,二进制与文字的对应关系。原创 2024-02-03 22:10:31 · 56 阅读 · 0 评论 -
pytest框架
tips:选择pytest执行方式 settings->Tools->python integrated tools,选择default test runner。session级别,setup函数的代码是在conftest.py里,项目目录的所有文件一共执行一次。可以让测试数据参数化,把测试数据单独管理,类似ddt数据驱动作用,方便代码和测试数据分离。注意:前面./report是报告和数据的父目录,./report/report是报告目录。声明上面代码是setup用法,下面的代码是teardown的用法。原创 2024-01-12 21:47:51 · 317 阅读 · 0 评论 -
python之异常与日志
日志级别(从低到高):debug info warning error critical。关键字:try except else finally raise(手动抛异常)所有异常都是exception的子类或者子类的子类。使用读取配置文件模块。原创 2024-01-12 20:41:30 · 100 阅读 · 0 评论 -
python之面向对象
继承执行顺序:调用多个父类的同名方法时,按继承顺序进行调用(mro)一般来说,一个类可以生成任意个实例,单例模式只生成一个实例。私有方法、属性:前面加双下划线(外部不能调用,只能内部调用)判断方法或函数,可以用type(),也可以用inspect。父类对子类约束:抽象类,子类中必须实现和父类同名的方法。继承:完全继承,部分继承,父类方法扩展。类方法:@classmethod。所有的类都是object的子类。调用父类同名方法:super()3.实例方法、类方法、静态方法。多继承,一个类可以有多个父类。原创 2024-01-11 01:32:11 · 210 阅读 · 0 评论 -
pycharm的使用技巧
settings->editor->file and code templates,选择python script。settings->editor->inspections,选择python,取消勾选PEP 8 两个选项。settings->editor->live templates,在右侧点击+号,添加自定义的内容。settings->keymap,查询split关键字,找到分屏的图标,设置快捷键。6.设置快捷键----分屏。${NAME} 文件名。5.真实环境与虚拟环境。${DATE} 日期。原创 2024-01-10 00:48:25 · 592 阅读 · 0 评论 -
python第三方模块之yaml模块
PyYaml 5.1之后,通过禁止默认加载程序(FullLoader)执行任意功能,该load函数也变得更加安全。原创 2024-01-10 00:03:59 · 440 阅读 · 0 评论 -
自动化测试--33APP自动化测试实战
工作任务解读:1.明确自动化范围2.确定测试目标3.指定任务单4.逐步开展工作工作任务明确:1.测试范围:使用频率最高的功能2.功能+兼容性+压力测试3.独立功能脚本+业务场景脚本4.迭代开发+面向对象测试脚本研发工作任务表:有道云笔记实战一、如何通过代码安装app1.先把对应apk的安装包文件放到目录下安装文件名和路径都不要包含中文2.使用安装方法driver.install_app(‘路径+安装包名’)3.用代码验证安装是否成功1、安装后用程序启动有道云2、弹出界原创 2022-04-13 23:51:40 · 150 阅读 · 0 评论 -
自动化测试--32APP自动化测试框架-unittest
一、测试框架的价值1)测试套件TestSuite-addTest/addTests、makeSuite2)测试用例TestCase3)初始化工作4)启动测试TextTestRunner-run(suite)5)生成测试报告HTMLTestRunner6)后续工作二、脚本变化unittest:setup、teardowntest开头的类和方法断言assert异常处理日志截图等三、运行脚本添加测试套实例化testrunner类四、生成测试报告下载HTMLTestRunner原创 2022-04-13 23:52:09 · 151 阅读 · 0 评论 -
自动化测试--31Appium基本用法-元素定位与页面操作
一、元素定位from appium import webdriverfrom appium.webdriver.common.mobileby import MobileByfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECdesired_caps = {}# 平台类型desired_caps["pla原创 2022-04-12 22:53:02 · 107 阅读 · 0 评论 -
自动化测试--30APP自动化环境安装与Appium原理
一、Appium概述Appium是一个开源工具,用于自动化iOS手机、Android手机和Windows桌面上平台上的原生、移动web和混合应用。Appium是跨平台的:它允许你用同样的API对多平台测试,做到在iOS、Android和Windows测试套件之间复用代码。原生应用:指那些用iOS、Android或者Windows SDK编写的应用。移动web应用:是移动端浏览器访问的应用(Appium支持iOS上的Safari、Chrome和Android上的内置浏览器)。混合应用:带有原创 2022-04-12 22:52:27 · 120 阅读 · 0 评论 -
自动化测试--29APP自动化测试
一、APP自动化测试要点介绍1)Android系统架构图2)安装手机自动化测试环境安装appium手机模拟器安装selenium和appium客户端安装被测系统3)appium软件架构 4)常用定位技术id、classname、name、Xpath、层级定位、List定位5)测试脚本驱动关键字驱动数据驱动6)unittest测试框架7)手机自动化流程部署自动化测试环境研发自动化测试脚本自动化测试框架实现手机自动化持续集成8)手机项目实战手机自带程序有道云笔记其原创 2022-04-12 22:51:41 · 88 阅读 · 0 评论 -
自动化测试--28基于locust的性能测试
一、性能测试类型1.验收性能测试2.负载测试(容量测试)负载是通过并发产生的,并发是一种方式负载和压力的区别:4.稳定性测试 长时间运行内存泄露:一直占用内存没有被释放内存溢出:功能问题,请求的线程所需内存超出最大内存5.恢复性测试(峰值测试)6.基准测试(配置测试、可扩展性测试)加入新功能是否对以前的功能有影响,v1.0-v2.0性能目标可能就变化了7.负载生成方式(负载的特点)8.负载生成方法 (重点)主要是第三第四种方法二、性能测试范围三、性能工具选择原创 2022-04-12 22:50:44 · 115 阅读 · 0 评论 -
自动化测试--27持续集成-jenkins
一、jenkins环境安装1.安装JDK,配置环境变量2.解压tomcat到D盘根目录3.下载jenkins下载网址:https://www.jenkins.io/download/4.把jenkins.war文件复制到tomcat\webapps文件夹中5.双击启动tomcat\bin下面的startup.bat文件6.当出现jenkins is fully up and running时,关闭start.bat窗口,以后在webapps目录下使用dos命令:java -jar原创 2022-04-12 22:49:42 · 84 阅读 · 0 评论 -
自动化测试--26接口测试框架-unittest
一、框架设计目标:最终只需要调整框架配置文件的一些参数,不需要人工干预测试脚本的执行二、框架设计过程:1.明确框架层次确定下来:配置层-配置文件csv脚本层-独立接口脚本、联调接口脚本数据层-独立接口脚本、联调接口脚本报告层-独立接口脚本、联调接口脚本、此次框架执行过程中,运行了哪些接口测试脚本?2.对框架的设计进行评审3.创建框架对应的文件-名称最好都是英文的,拼音的4.把现有相关的成果物:脚本成果物测试数据文件测试报告文件框架配置文件放入对应的文件夹中把命名尽量有一个统一的原创 2022-04-12 22:34:58 · 86 阅读 · 0 评论 -
自动化测试--25接口测试脚本开发
一、http协议请求组成部分:协议:如何在网路上传输数据,规定了传输数据的标准规则请求行:请求方法、url、协议版本请求头:cookie、请求数据类型、代理等空行消息主体:请求数据响应部分响应行:版本、状态码、原因短语响应头:Content-Type空行消息主体:响应数据二、接口主要组成要素请求地址请求方法请求参数请求返回值三、如何开展接口测试分析接口测试的需求设备相关接口测试用例实现接口测试:1)接口测试工具2)通过编写接口测试脚本3)设计并研发接口测试框架如原创 2022-04-12 22:34:32 · 477 阅读 · 0 评论 -
自动化测试--24http请求&requests方法&单元测试
http协议接口1.接口的分类:外部 内部 广泛的分类2.按照不同的请求协议:http webservice(只能发post请求的接口) dubbo socket3.接口的本质:登录接口 注册的接口类:函数/方法—>就是测试类里面的方法Apache tomcat 中间件 容器 服务—>URL地址4.http协议的接口http请求分为哪几种:get post delete update head option5.http请求:1)请求行(URL+请求方法+http协议版本)原创 2022-04-11 22:13:45 · 161 阅读 · 0 评论 -
自动化测试--23PageObject分层设计思想及web自动化总结
一、PageObject-分层设计思想介绍1)用例分析2)调用页面对象3)PO模型注意:一个页面如果功能很小,就混合,否则就单独写一个页面一个测试用例----多个页面的多个功能串起来调用多个页面类----同一个浏览器会话上面,串行执行完成的4)分层思想(单向调用)测试用例=测试数据+页面对象方法的调用PageObjects + PageLocatorsTestCases = PageObjects + TestDatas1.数据分离 - TestDatas2.测试用例 - dd原创 2022-04-12 22:33:04 · 211 阅读 · 0 评论 -
自动化测试--22Web自动化测试框架-pytest
自动化框架的作用是什么?冒烟测试、主业务流程、缺陷修复后回归、版本上线前回归、验收测试回归一、独立脚本封装步骤1.安装pytest2.准备测试脚本样例3.pytest快速迭代实践4.问题分析总结二、测试框架的组成公共配置层–配置文件、公共脚本测试套(上线测试套、冒烟测试套等)----测试脚本(测试用例包括前置步骤、异常处理、断言、错误日志、截图)DDT数据驱动层–测试数据测试报告测试日志三、pytest框架1.pytest写脚本的坑不能随便起名:py文件名:test_开头类原创 2022-04-12 22:32:15 · 352 阅读 · 0 评论 -
自动化测试--21Web自动化测试框架-unittest
一、框架步骤:1.测试用例2.BaseTestcase:把每条用例相同的部分提取出来,放在一个父类中比如所有的测试用例,都需要打开和关闭浏览器3.数据驱动测试:把测试数据和操作步骤分离一个功能,我们至少需要测试1种正常情况和n种异常情况4.生成测试报告:最终生成一个美观的测试报告:组织和执行测试用例1)下载并复制HTMLTestRunner.py文件到我们的项目中,HTMLTestRunner代替TextTestRunner2)断言二、unittest2使用1.导包2.继承代码库uni原创 2022-04-11 22:27:27 · 175 阅读 · 0 评论 -
自动化测试--20验证码识别
1.验证码的目的:就是为阻止通过代码自动登录2.验证码的解决方法:1)通过第三方工具识别验证码2)通过第三方网站识别验证码-人工识别3)通过万能验证码的方式-为了做自动化测试4)可以屏蔽掉验证码5)通过cookie跳过登陆3.人工智能:通过文字识别1)打开登录页面并截图2)根据接口说明,模拟请求,把图片发给服务器3)分析响应结果,找出验证码4)把识别后的验证码,输入到输入框中,实现自动登录使用requests库请求接口:1)请求网址:https://aip.baidubce.com原创 2022-04-11 22:26:27 · 612 阅读 · 0 评论 -
自动化测试--19滑块验证码处理
滑动验证程序步骤:代码分析:# 演示import timeimport base64import cv2import randomfrom selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.com原创 2022-04-11 22:25:34 · 496 阅读 · 0 评论 -
自动化测试--18Selenium基本用法-文件上传
上传操作上传有两种情况:1.如果是input可以直接输入路径的,那么直接调send_keys输入路径2.非input标签的上传,则需要借助第三方工具2.1 AutoIt 我们去调用其生成的au3或exe文件2.2 SendKeys 第三方库(目前只支持2.7版本)网址:https://pypi.python.org/pypi/SendKeys2.3 Python pywin32库,识别对话框句柄,进而操作 pyautoit工具:pywin32库和winspy++例:百度网盘-上传窗口原创 2022-04-11 22:23:40 · 88 阅读 · 0 评论 -
自动化测试--17Selenium基本用法-JS处理
1.JS操作# 1.移动到元素element对象的“底端“与当前窗口的”底部“对齐:driver.execute_script("arguments[0].scrollIntoView(false);", element)# 2.移动到元素element对象的“顶端”与当前窗口“顶部”对齐:driver.execute_script("arguments[0].scrollIntoView();", element)# 3.移动到页面底部driver.execute_script("window原创 2022-04-11 22:22:41 · 76 阅读 · 0 评论 -
自动化测试--16Selenium基本用法-鼠标键盘操作、下拉框操作
1.鼠标操作由selenium的ActionChains类来完成模拟鼠标操作主要操作流程:1.存储鼠标操作2.perform()来执行鼠标操作支持的操作如下:double_click 双击操作context_click 右键操作drag_and_drop 拖拽操作。左键按住拖动某一个元素到另一个区域,然后释放按键move_to_element() 鼠标悬停导入action_chains库:from selenium import webdriverfrom selenium.webd原创 2022-04-11 22:21:41 · 276 阅读 · 0 评论 -
自动化测试--15Selenium原理
1.安装步骤1)官网下载浏览器驱动 (下载与浏览器对应版本的驱动)chromedriver网站地址:https://registry.npmmirror.com/binary.html?path=chromedriver/2)安装selenium类库:pip install -U selenium2.selenium基本原理selenium的结构是一个C/S架构,我们的代码看做客户端,驱动是服务端。客户端创建并发送http请求到浏览器驱动的监听端口(基于JSON Wire protocol),原创 2022-04-11 22:21:11 · 181 阅读 · 0 评论 -
自动化测试--14Web自动化测试环境部署
1.web自动化测试环境搭建安装步骤1.python解释器2.集成开发环境3.浏览器4.浏览器驱动chromedriver.exe文件需要放到浏览器的application目录下并添加环境变量,和python安装目录下5.selenium源代码6.测试环境电商网站部署:phpfindxampp:包括apache、mysql、tomcat2.selenium自动化代码步骤1.打开浏览器2.打开网页3.定位元素操作4.断言3.写脚本注意点1.定位第二窗口的元素,需要切换原创 2022-04-10 01:15:48 · 382 阅读 · 0 评论 -
自动化测试--13Web页面组成
1.web页面组成:HTML+CSS+JS框架:Vue、React注意:测试报告发邮件只支持style,不支持css,所以会出现乱码现象2.DOM对象1)作用:对html进行增删改查2)DOM树 文档 | 根元素html | 元素head原创 2022-04-11 22:20:35 · 81 阅读 · 0 评论 -
自动化测试--12日志模块&数据库连接&正则表达式
一、日志模块日志级别:debug 调试info 信息warning 警告error 错误critical 批判性的语法:import logging # python字典logging.debug("hei hei")logging.info("xi xi")logging.warning("yo yo")logging.error("le le")logging.critical("ke ke")# logger 收集日志 debug info error# handler原创 2022-04-12 22:49:20 · 66 阅读 · 0 评论 -
自动化测试--11Excel读写数据&DDT&配置文件读取
Excel读写测试数据# 只支持这种后缀 .xlsx -->openpyxl 只支持这种格式from openpyxl import load_workbook# 1.打开Excelwb = load_workbook("./class_excel/test.xlsx") # Open the given filename and return the workbook# 2.定位表单sheet = wb['python'] # 传表单名 返回一个表单对象# 3.定位单元格 行原创 2022-04-11 22:14:49 · 97 阅读 · 0 评论