自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 测试工程师面试题整理

通过此次面试整理了一波自己复习的题目以及面试官问到的题目

2022-03-02 18:01:08 10279

原创 音视频学习笔记

详见石墨链接:音视频学习笔记

2021-11-29 11:31:45 1486

原创 Pytest学习笔记

API文档地址:API Reference — pytest documentation命名规则文件名需以test_开头或者_test结尾 类名需以 Test开头 方法需以test开头若不按照命名规则,使用pytest一次性运行多个用例时,不按照命名规则的文件/case将被跳过运行顺序与运行命令默认执行顺序:文件之间按照ASCII顺序,0~9——>A~Z——>a~z,文件内的用例为从上往下执行 使用某些插件可以改变文件执行顺序:pytest-ordering,或者随机py

2021-11-29 10:52:57 884

原创 Appium

Appium原理appium客户端库发送HTTP请求到appium server,appium server包含有 appium server、XCUITest、Android SDKappium server再将指令转发给设备,设备上有自动化代理程序,会调用手机的自动化库执行指令设备执行完成后将结果返回给appium server,appium server再转发给appium 客户端库适用平台Appium支持iOS、Android、内嵌 Webview、手机浏览器的web网站安装以Py

2021-08-07 22:56:46 211

原创 数据结构与算法学习(十四)——字符串匹配算法(二)

上一篇讲的BF、RK、BM、KMP算法都是单模式串匹配算法,即一个主串与一个模式串匹配,本篇将介绍两种多模式串(一个主串与多个模式串匹配)匹配算法——Trie树和AC自动机Trie树1、Trie树又叫字典树,用来解决一组字符串集合中快速查找某个字符串。其中一组字符串对应的就是模式串,某个字符串指的就是主串。2、Trie树本质:利用字符串中的公共前缀,将重复的前缀合在一起,构成一棵树。例有一组字符串:hello hi her how see so,构成的Trie树如下:(1)根节点不含任何信息(

2021-05-24 22:46:55 138

原创 数据结构与算法学习(十四)——字符串匹配算法(一)

BF算法1、BF算法(Brute Force):暴力匹配算法,最常用的字符串算法2、字符串匹配算法中最常用的两个定义:主串与模式串,主串指的是被查找的串,模式串为要查找的串。例:A串中查找B串,则A为主串,B为模式串。3、BF算法原理:从主串的起始位置分别为0,1,2…n-m检查长度为m(模式串的长度)的n-m+1个子串(n为主串长度),是否有与模式串匹配的字符串。简单的来说,即从头开始,将模式串与主串匹配。注:若检查的位置到n-m+1,则主串剩余长度小于m,比模式串的长度小,无需匹配。4、时间复

2021-05-23 23:16:41 241

原创 数据结构与算法学习笔记(十三)——图

图1、图是一种非线性表结构。组成图的各个点为顶点,连接顶点的为边,边的条数为度2、图根据图的边是否有方向,可分为有向图和无向图;根据图的边是否有权重,分为带权图和无权图,其中带权图中也有带权有向图和带权无向图。有向图:有向图中若有x条边指向顶点A,则顶点A的入度为x,若顶点A有y条边指向其他顶点,则顶点A的出度为y。无向图:带权无向图:图的存储方式1、邻接矩阵存储邻接矩阵存储使用二维数组表现。(1)无向图的邻接矩阵存储:若i和j之间有边,则A[i,j]和A[j,i]=1(2)有向

2021-05-09 18:10:55 146 1

原创 数据结构与算法学习笔记(十二)——堆

堆1、堆是一个完全二叉树,堆中的每一个节点的值都必须大于等于(小于等于)其子树中每个节点的值。2、每个节点的值都大于等于其子树中的每个节点的值,此为大顶堆。大顶堆的堆顶元素为最大的元素3、每个节点的值都小于等于其子树中的每个节点的值,此为小顶堆。小顶堆的堆顶元素为最小元素上图中的1、2均为大顶堆,3为小顶堆,4不是堆查找、插入、删除1、查找:堆是完全二叉树,因此堆的存储方式也是数组存储。因此只要知道一个节点就可以推出其他节点的存储位置。2、插入:若直接往叶子节点中插入一个元素会使堆不满足堆的

2021-05-09 17:35:46 335

原创 数据结构与算法学习笔记(十一)——红黑树

红黑树1、为什么要有红黑树?二叉查找树在不断的动态更新中,可能会退化成链表,出现树的高度远远大于O(log2n)的情况,所以有一种平衡二叉查找树——红黑树,可以在动态的更新中不断调整节点的位置,使该树一直保持相对平衡,不至于将时间复杂度退化到O(n)。因此红黑树的性能非常稳定,可以应用于动态插入、删除、查找数据的场景。2、红黑树是一种近似平衡的二叉查找树,且查找、插入、删除的时间复杂度都在O(logn)平衡二叉树:其任意一个节点的左右子树的高度相差不能大于1。合格的平衡二叉树:树的高度不会比lo

2021-05-09 16:35:26 137

原创 数据结构与算法学习笔记(十)——二叉查找树

定义1、二叉查找树树中的任一节点,其左子树的节点都小于该节点,其右子树的节点都大于该节点2、二叉查找树支持快速查找、插入、删除查找、插入、删除1、查找:(1)递归查找,若要查找的节点p值大于root的值,则在其右子树进行递归查找,反之则在其左子树进行递归查找。(2)时间复杂度:在O(logn)~O(n)之间,最好是O(logn),此时树为完全二叉树;最坏为O(n),此时树退化为了链表2、插入:(1)一般插入在叶子节点。先递归查找,比较要插入的节点p与已存在节点的大小关系。若p>roo

2021-05-09 16:23:09 167

原创 数据结构与算法学习笔记(九)——二叉树

二叉树定义1、树的定义:只有一个根节点,每个非根节点有且只有一个父节点节点的高度:该节点到叶子节点的最长路径(边数)节点的深度:该节点到根节点的边数节点的层数:该节点的深度+1树的高度:根节点的高度2、二叉树:每个节点最多有两个叉,即左右子节点3、满二叉树:叶子节点全部在最底层,除叶子节点外,所有节点都有左右两个子节点4、完全二叉树:叶子节点全部在最底下两层,且最后一层的子节点从左到右是连续的,中间无断开。且除了最后一层,其他层的节点个数都要达到最大。1为二叉树,2为满二叉树,3为

2021-05-09 15:52:30 176

原创 数据结构与算法学习笔记(八)——散列表(二)

散列表+双向链表1、上一篇讲到使用链表法来解决散列冲突,是单链表。这一节为散列表+双向链表的使用。但该双向链表与散列表无任何关系,与链表法中的单链表不一样,散列表+双向链表只是将两种数据结构结合在一起,用于更高效的查询、插入和删除。2、图中可以看出,双向链表中有四个指针,data存储数据,prev、next分别为前驱和后继指针,将结点串在双向链表中,保证双向链表的有序性,提高插入和删除的性能。hnext表示将结点串在散列表的拉链中,作用类似于链表法中的单链表的 next指针,即用于解决散列冲突即,

2021-05-07 23:22:06 111

原创 数据结构与算法学习笔记(七)——散列表(一)

定义1、散列表又叫hash table,哈希表。利用数组支持按照下标随机访问数据的特性,在数组上进行扩展得到的散列表。关键字(key)通过散列函数得到散列值———在散列表中,以散列值为下标查找对应的值2、通过散列函数计算出的散列值只能为非负整数,因为数组的下标是从0开始3、key相同的话,生成的散列值也一定相同。key1=key2,hash(key1)=hash(key2)4、key不同的话,生成的散列表也可能相同,此为散列冲突(哈希冲突)。这时在散列表中根据散列值查找到的数据还需要比较key值。

2021-05-07 22:36:02 153

原创 数据结构与算法学习笔记(六)——跳表

定义跳表是一种动态数据结构,针对有序链表进行稍加改造即可形成跳表。在有序链表中每隔几个结点就提取一个结点到上一级作为索引,此为第一级索引。再针对第一级索引继续添加索引,此为第二级索引。这种为有序链表添加多级索引的结构为跳表。查找1、单、双链表的查找是从头开始遍历,因此时间复杂度为O(n)2、跳表的查找则是先根据索引进行遍历,确定结点区间后,下降到下一层再继续查找。例:查找上图跳表中的5号结点。(1)先遍历第二级索引,5号结点肯定是在1号和7号索引之间,所以从1号索引下降到第一级索引的1号结点中

2021-05-02 11:15:09 165

原创 数据结构与算法学习笔记(五)——二分查找

原理将数组有序后,找到数组的中间点mid,若要查找的值x>mid,则查找范围变为[mid+1,right];若x<mid,则查找范围变为[left,mid-1],直至找到x或区间变为0。

2021-04-07 22:49:01 143

原创 数据结构与算法学习笔记(四)——排序(二)

线性排序线性排序的特点是非基于比较的排序算法,不涉及元素之间的比较操作。包括有桶排序、计数排序和基数排序桶排序原理:将要排序的数据分到几个天然有序的桶里,在每个桶中再进行单独排序,最后依次从桶中按顺序取出每个桶中的顺序即可 时间复杂度:O(n)应用场景:适用于外部排序,即数据存储在外部磁盘中,数据量过大,而内存空间不够,即可将对应划分好的桶加入内存中进行排序。限制性:要排序的数据能容易的被划分为m个具有天然顺序的桶且每个桶中的数据分布要尽可能的均匀。计数排序原理:计数排序是桶排序的一

2021-04-06 22:57:19 86

原创 数据结构与算法学习笔记(三)——排序(一)

排序算法的比较点最好、最坏、平均时间复杂度的比较时间复杂度的常数、低阶、系数的比较比较、交换的次数算法的是稳定的还是非稳定的:若经过排序后,之前待排序数组的相等元素的原有的先后顺序不变,则表示排序算法是稳定的,否则非稳定排序算法算法的内存消耗:若空间复杂度为O(1),则为原地排序冒泡排序原理:将相邻的两个元素进行比较,若满足大小要求,则不交换,否则就交换。若某一次冒泡中没有任何元素进行了交换,则可以结束冒泡。特点:每一次冒泡至少会有一个元素移动到它正确的位置冒泡排序是原地

2021-04-05 19:56:29 104

原创 数据结构与算法学习笔记(二)——数据结构

数组定义一种线性表数据结构,用一组连续的内存空间来存储数组,且数组中的数据都为相同类型。因此访问数组的本质就是访问一段连续的内存,一维数组的寻址公式如下:a[i]_address=base_address+kdata_type_size注:base_address表示基地址data_type_size表示数组中的一个数据占的内存大小kdata_type_size就表示第k个数据的偏移量二维数组的寻址公式:在m行n列的二维数组,a[i,j](i<m,j<n)a[i,j]_a

2021-03-27 22:09:28 161

原创 数据结构与算法学习笔记(一)——时间复杂度

前言最近开始重新学习数据结构与算法啦,为了巩固自己记忆,所以接下来会每学习完成一个知识点,就归纳总结出一篇学习笔记,用于后续的复习~数据结构与算法的定义数据结构:一组数据的存储结构算法:操作数据的一组方法,作用于特定的数据结构上大O时间复杂度定义:大O时间复杂度表示法,并不具体的表示代码真正的执行时间,而表示代码执行时间随数据规模增长的变化趋势。所有代码的执行时间T(n)与每行代码的执行次数f(n)成正比:T(n)=O(f(n)) O表示T(n)与f(n)成正比时间复杂度分析1、只

2021-03-08 17:35:40 182

原创 基于python的自动化测试框架v2.0

概要之前做过一版自动化测试框架v1.0,1.0版本主要功能实现的是自动化读取excel中的url,参数,然后使用python中的get/post的方法自动请求接口,将结果再写入excel中。但是后来发现一个问题:对于接口参数的类型判断这类用例数很多,但是又很基础,一般不牵涉到业务场景。因此有个想法:是否能输入接口的参数后,自动生成关于类型判断和缺少必填项/非必填项的用例,然后再自动请求,写入结果。所以这段时间消失就是去完善了之前的自动化测试框架,升级到了v2.0~框架v2.0还是基于python

2021-03-08 15:38:46 187 1

原创 Newman学习(一)

Newman介绍Newman是postman的命令行集合运行器,可直接从命令行运行postman中的集合。下载Newman1.下载安装node.jsNewman建立在node.js上,因此要先下载安装node.js。2.下载Newmancmd打开命令行操作界面——>输入npm install -g newman注:-g表示全局安装使用Newman运行集合1 从postman中将集合导出来(有变量的话也需导出变量)集合导出:使用建议的格式。变量导出:2 命令行窗口中

2020-08-16 19:03:39 338

原创 Fiddler的FiddlerScript的使用

修改http请求1.编写脚本在上述图片中添加脚本,可修改请求中的内容2.示例:将csdn的host修改为百度,则请求csdn后会重定向至百度的页面3.保存、请求记得保存的时候一定要点save script!!!不能ctrl+S,无效!然后通过浏览器访问url即可修改http响应1.编写脚本在上述图片的函数中添加脚本,可修改响应中的内容2.示例:替换html中的内容3.保存、请求备注更多方法参考链接:https://www.cnblogs.com/yfceshi/p/6

2020-08-03 22:49:08 1586

原创 Fiddler通过断点拦截http请求/响应,并修改请求/响应内容

拦截http请求1.设置断点断点分为全局断点和单个断点。全局断点即对所有的请求生效,单个断点只对该请求生效。全局断点设置:Rules——>Automatic Breakpoints——>Before Requests单个断点设置:左下角的QuickExec输入命令:bpu url(请求地址)2.请求打开google浏览器,请求该地址,Fiddler会高亮,显示已捕获该请求。3.修改请求的内容点击已捕获的请求,在如图片所示的地方,修改内容可以修改url和Host,改变请求地

2020-08-02 23:21:50 1600

原创 Jmeter一些组件的使用

断言元件添加JDBC相关元件1.testplan下添加mysql/oracle的jar包或在jmeter的lib目录下添加该jar包2.配置数据库信息3.发送jdbc请求正则表达式提取器可用于参数间的引用,响应数据的查看(断言)csv参数引用...

2020-07-05 18:16:38 161 1

原创 postman深入学习(二)

postman的全局变量与环境变量的区别1.添加变量区别添加全局变量,在设置——>gloabls中设置添加环境变量,点击Add设置:3.全局变量只能设置一组,一组中可包含多个变量;但环境变量可以设置多组2.引用变量的区别全局变量无须选择环境,可直接{{变量名}}引用。环境变量需要选择某个环境才可以引用该变量。3.优先级区别环境变量优先级高于全局变量,当环境变量和全局变量存在相同的变量时,选择某个环境后,postman会优先选择该环境变量。postman的断言1.在Tests

2020-07-05 17:49:35 207

原创 Postman接口间传参

前言使用postman对接口进行功能测试时,会遇到接口间互相引用,即这个接口的参数是上一个接口的返回数据,这时可以使用postman进行处理添加全局环境变量点击postman右上方的设置,添加一个全局环境变量建议:变量名和变量一样,防止出错编写脚本在Tests中编写脚本,脚本如下:注意:获取参数必须根据返回数据的数据格式来获取!!不能盲目的抄我的!在其他接口引用该变量引用的格式为:{{变量名}}访问接口1.访问初始接口,将变量存进全局变量中,可在眼睛处查看变量是否获取成功

2020-07-02 16:41:44 1192

原创 Python+requests接口自动化测试脚本(修改:将所有请求再封装了一层)

使用Python+requests编写接口自动化测试脚本,需下载的类库有:requests,xlrd,xlutils获取excel测试用例中的url和接口参数1.获取excel文件.TIPS:1.path为excel的保存路径,且excel表最好以xls结尾2.获取接口用例所在的工作表3.获取urlTIPS:1.total_row为总的url行数2.url_col为url所在的列3.用cell_value()方法来获取某个单元格的数据4.获取参数封装请求:get和post(需

2020-06-19 16:00:58 580 1

原创 python+selenium+unittest的web测试框架编写

使用框架来对web页面进行自动化测试,提高测试效率,本篇只阐述框架的搭建,不简述如何下载python,selenium,和selenium的基本语法框架图control层:包含各种控件,如Button、select等基本元件的操作page层:将各类页面封装成类,并提供页面操作函数case层:通过调用页面操作实现测试用例control层该层包含三个类:basePage、browserEngine、logger类,分别为页面控件基本操作类,浏览器操作类,日志类1.basePage类部分代码如下:

2020-06-19 12:09:49 765

原创 JMETER并发压测

Jmeter实现并发操作通过Jmeter的命令行执行脚本,实现多个用户同时请求接口,实现并发编写jmeter脚本因为我希望同时压测两个接口,所以试了两种方式来实现,目前好像两种都可,如果出现了什么其他错误欢迎指出第一种:1.创建测试计划2.添加一个线程组3.添加一个同步定时器(Synchronizing Timer),该定时器作用域在整个线程组,所以是每个请求的并发数量都是一样的4.添加两个http request,填写两个接口的请求URL、参数5.注意:一定要给每个http reque

2020-05-29 11:58:59 2032

原创 测试职业规划

转:https://www.cnblogs.com/miaomiaokaixin/p/5948039.html

2020-04-16 16:48:00 164

原创 shell脚本实现服务器之间远程部署

shell脚本远程部署在两台linux服务器上使用脚本实现远程部署创建shell脚本1.在本机服务器上创建.sh文件编写shell脚本1.shell脚本以#!/bin/bash开头2.写入需执行的linux命令,常规来说Linux命令能执行的在脚本中都可以运行,排除路径不正确的问题运行shell脚本ssh user@host ‘bash -s’ < 1.sh该执行方法为本...

2020-04-14 15:20:40 1077

原创 jmeter监控服务器资源

下载服务器端需下载:ServerAgent-2.2.3.zip,并解压。若服务器是Windows系统,则运行startAgent.bat文件,若服务器是Linux系统,则运行startAgent.sh文件,以Linux服务器为例,启动命令为./startAgent.sh客户端即下载jmeter插件,JMeterPlugins-Extras.jar和JMeterPlugins-Extras.ja...

2020-03-27 15:26:41 512

原创 selenium自动化测试遇到的问题与解决方法

元素不可用问题在元素定位的路径没有错的情况下,还报该元素不可用的错误,not visible,可能是因为页面未加载完,休眠几秒,再定位即可。Thread.sleep(2000)按钮的click方法失效按钮点击失效:click()方法失效,改用send_keys(Keys.ENTER),直接用发回车键,点击成功页面元素过时报错:stale element reference: elemen...

2020-03-02 11:14:30 571

原创 Jenkins学习之路(十)在jenkins中实现Windows与linux的文件传输

下载软件1.下载软件:putty2.安装后将pscp.exe文件复制到C:\Windows\System32下执行命令3.在Jenkins中执行命令:cd C:\Windows\System32pscp -r -l **** -pw **** path1 @ip:path2注释:-l后接linux的登录帐号,-pw后接linux的登录密码,path1为windows的文件路径,pat...

2019-10-24 10:02:12 1736

原创 Jenkins学习之路(九)部署vue项目

下载插件1.下载插件—nodejs配置2.Manage jenkins——global tool configuration配置项目环境3.新建一个freestyle的项目,以下只说与后端maven项目部署不同的地方4.构建环境:5.构建:因Jenkins是本地Windows版本,使用cmd命令npm install webpack@4.3.0Npm installNpm ...

2019-10-23 20:14:26 172

原创 Jenkins学习之路(八)配置权限

下载插件在插件管理中下载插件 —— Role-based Authorization Strategy全局安全设置1.系统管理——全局安全设置2.在系统管理——manage and assign roles——管理角色3.添加角色4.添加项目注:测试时候,其他用户通过邮件上的url访问项目一直报错,错误如下:最后发现是因为项目角色的权限——任务中的read没有开通,导致该...

2019-09-17 14:33:39 197

原创 jenkins学习之路(七)邮箱提醒配置

下载插件在插件管理中下载插件 —— email extension plugin全局设置在系统设置中设置邮箱环境邮件的默认内容可以自己设置,ps:网上模板很多注:这一块在高级中,也需要设置在项目中配置环境1.在构建后操作中添加2.主要变动的内容有:...

2019-09-17 14:25:03 153

原创 jenkins学习之路(六)linux环境下项目的配置

创建maven项目源码托管根据实际情况选择,我这里选择的是svn构建触发器构建构建后操作按照此配置来,在更新了svn的源代码后,5分钟poll scm检查源代码时,发现代码有变更,开始构建代码,部署成功访问时,页面显示的是更改后的页面...

2019-09-16 17:13:53 110

原创 Jenkins学习之路(五)Linux系统上下载安装jenkins

下载下载rpm安装包:wget -c http://mirrors.jenkins-ci.org/redhat/jenkins-2.9-1.1.noarch.rpm安装命令为:rpm -ivh jenkins-2.9-1.1.noarch.rpm启动jenkins启动命令为:service jenkins start,若在启动时发现端口被占用,应先关闭端口遇到的问题因下载的是2....

2019-09-16 16:45:25 151

原创 jenkins学习之路(四)windows下将项目进行自动化远程部署

基本项目配置前几步的项目配置与我写的jenkins学习之路(二)基本相同,不同的地方是最后一步:构建后操作构建后操作添加构建后操作:send build artifacts over SSH在其中添加服务器名字,war包的原路径(相对于Jenkins的工作空间来说的),war包的目标路径(即部署在Tomcat下的路径),shell命令...

2019-09-16 16:38:17 448

AutoInterfaceTest.rar

自己搭建的基于python的自动化测试框架v2.0

2021-03-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除