自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎来到谷雨飞鱼的博客

一个区区测试的学习笔记

  • 博客(52)
  • 资源 (1)
  • 收藏
  • 关注

原创 Python接口自动化

4 接口自动化4.1 使用python实现接口自动化如果不了解接口测试可参考https://ke.qq.com/course/4092904使用Python的request库实现接口测试:import jsonimport requests#使用session管理:#1.可以自动关联set-cookie里面的内容#2.可以加快与服务器的连接速度session=requests.session()#auth接口#发包和收包#这里一般是要放参数,使用data入参还是json入参,根据请

2021-12-12 16:41:16 6369 1

原创 Python+Appium自动化测试框架

3.5.1 Appium录制从左往右依次:select Element:选定元素可以进行操作Swipe By Coordinates:滑动坐标Tap By Coordinates:点击坐标点(点击对应坐标)Back:返回Refresh Source:刷新Start Recoding:录制Search for element:搜索元素手写Xpath 格式://*[@属性=‘属性值’] 属性一般是text,能唯一定位元素即可Cope XML Source to Clipboard

2021-12-12 15:22:18 3264

原创 Appium连接手机

手机可以是真实手机,也可以是模拟器推荐的模拟器(mumu、夜神),对于真实手机我们还要进行物理连接即通过USB数据线和电脑连接在一起。并打开手机的USB调试模式(根据手机型号百度一下,我的手机型号是小米6),我们这里使用真机。软件连接:使用abd连接:adb devices (查看当前已经连上的手机,如果有物理连接但是没有软件连接的手机,会自动连接)c2b93af1 deviceAppium组成:Server端:服务器发布指令给android Sdk点击 start in

2021-12-12 15:10:43 4132

原创 常用adb命令

3.3.1 基础命令:adb devices 查看设备abd start-server | adb kill-server 启动/停止adb服务abd -s 指定设备进行操作adb connect/disconnect 连接指定设备3.3.2 应用命令:adb install <apk文件名> 安装应用到手机adb uninstall <包名> 卸载手机上的应用adb shell am start

2021-12-12 15:09:02 1823

原创 APP自动化原理+环境搭建

3.1 APP原理1、客户端运行脚本的时候,调用任何的appiumAPI,都会向Appium Server端post一条HTTP请求2、当开启appium服务器的同时就开启了监听端口,Appium Server端接收到请求后,会发送到Android SDK环境;3、Android SDK 操作手机APP,从而实现APP自动化。3.2 环境搭建3.2.1 Android sdk 安装在安装Android SDK之前需要先安装jdk1.8版本(可参考JMeter的安装)Android Sdk下载

2021-12-12 15:07:32 1928

原创 Pytest集成excel

2.10.1 反射函数反射函数概念:它可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作。它有四个重要的方法:• getattr 获取指定字符串名称的对象属性• setattr 为对象设置一个对象• hasattr 判断对象是否有对应的对象(字符串)• delattr 删除指定属性在数据驱动中使用的是getattr方法,通过读取excel表格的数据确定关键字和参数,执行对应的代码。先看下语法:func=(obj,method_name)func(*args)obj:关

2021-11-28 20:26:58 1263

原创 Pytest框架与应用

2.9.1 PO设计模式在说Pytest之前,我们先来看一下什么是 PO(Page Object)设计模式。为什么要引用PO设计模式?PO提供了一种业务流程与页面元素操作分离的模式,这使得测试代码变得更加清晰。PO(Page Object)页面对象模型是一种设计模式,用来管理维护一组web元素的对象库。在PO模式下,应用程序的每一个页面都有一个对应的page class,每一个page class维护着该web页的元素集和操作这些元素的方法。2.9.2 Pytest安装和使用2.9.2.1 Pyt

2021-11-28 20:10:16 1268 1

原创 图片验证码破解

2.8图片验证码破解在测试web平台时,难以避免的就是登录,登录的时候就会需要输入验证码!有的是图型验证码有的是滑动验证码,那么在自动化中如何破解验证码?这里只介绍简单的图片验证码。一般来说破解这种图形验证码,有两种方式一种是使用第三方接口,另外一种就是自己训练,训练这种就算了!比较麻烦,我是使用的第三方是超级鹰。先说下思路哈,我们可以通过元素截图,获取到验证图片,把图片保存在python工程下面,然后把图片传送给第三方接口,从接口获取到图片中的验证码,保存到一个变量里面,然后将变量的值输入到验证码的

2021-10-19 10:29:10 4611

原创 Python自动化脚本+关键字封装理念

2.6 第一个自动化脚本这里我们简单写一下百度搜索腾讯课堂的脚本,方法在2.4、2.5章节已经介绍过了,这里就是带看一下代码的实现,到底是怎么写的!如果我们需要其他操作就driver.对应的方法就可以了。from selenium import webdriverdriver=webdriver.Chrome() #注意Chrome的C是大写driver.implicitly_wait(10) #隐式等待#访问网址from selenium import webdriverdriver=web

2021-10-19 09:54:37 1321 1

原创 Selenium自动化特殊场景处理

2.5 Selenium自动化特殊场景处理2.5.1 切换iframe在自动化中如果不切换iframe,会定位不到元素。示例:场景:我们要上传图片,修改自己的头像信息,我们定位到这个input标签了,但是执行代码的时候会提示no such element是因为这里有个iframe标签,没有切入到这个iframe就定位不到这个元素。我们看一下Selenium进入iframe和退出iframe的方法吧!进入iframe:driver=webdriver.Chrome()ele= driv

2021-10-19 09:44:23 407

原创 Selenium常规对象接口

2.4 Selenium常规对象接口2.4.1 浏览器窗口方法selenium中提供了直接在代码中操作浏览器窗口的方法。常见的方法如下示例:driver = webdriver.Chrome()#设置浏览器窗口最大化driver.maximize_window()#访问网页使用get方法driver.get(“https://www.baidu.com”)#设置浏览器的宽高driver.set_window_size(800,600)#获取浏览器的大小driver.get_windo

2021-10-14 11:42:57 562 2

原创 8大元素定位方式

2.3 八大元素定位方式2.3.1 ID通用标签的ID属性进行定位,一般来说如果有id就用id定位,id的值唯一:语法:driver=webdriver.Chrome()driver.find_element_by_id(‘id值’)2.3.2 NAME通过标签的NAME属性进行定位:语法:driver=webdriver.Chrome()driver.find_element_by_name(‘name值’)2.3.3 TAR_NAME通过标签名进行定位(一般不用):语法:

2021-10-12 15:29:40 2703

原创 Selenium基础

2.2 Selenium基础2.2.1 Selenium简介Selenium是Jason Huggins在2004年发起的项目,当时他在Thought Works公司开发系统,该系统使用了大量的JavaScript。在IE能执行,但是在其他浏览器执行就会出现大量的bug, 当时也没有较好的方法,所以就自己开发喽,他们还是集中在JavaScript上,使用了基于表格的语法替代了原始的JavaScript,这种做法支持那些编程经验有限的人在HTML文件中使用关键字驱动的方式来编写测试。该工具最初称为Sele

2021-10-12 15:25:22 323

原创 Python自动化引言

2 web UI自动化自动化测试一般分为UI前端自动化测试和接口后端自动化测试。自动化测试是为了减少枯燥的的重复性验证工作,提升效率,那么只要有重复验证的必要,UI自动化测试就有存在的价值。2.1 自动化测试的5W1HWhy:提升测试效率,提高软件产品质量。省去枯燥的重复性工作,用更多时间做更重要的艺术化的测试。What:将功能测试用例通过脚本实现,让机器代替人工来完成用例的执行。也就是用脚本模拟人类对前端界面的操作。UI自动化测试的用例来源于功能测试,通常从其中选择最核心的功能的正常流程进行覆盖

2021-10-12 15:22:53 144

原创 Python异常处理

1.10 异常处理在Python中对于程序异常的处理,主要使用try …except的语法格式。我们来看一下几种try…exception的用法。1.try …except语句语法格式:try: block1except[ExceptionName [as alias]]: block2说明:block1:表示可能出现错误的代码块ExceptionName [as alias] :可选参数,用于指定要捕获的异常,其中ExceptionName表示要捕获的异常名称,如果在其右侧加上

2021-10-08 09:43:05 96

原创 Python模块

1.9模块在Python中,模块主要有三种:自定义模块,标准库中的模块(称为标准模块)以及第三方模块。模块是什么?在Python中一个扩展名为“.py”的文件就称之为一个模块。我们在使用模块时就要导入模块,模块的导入方式有两种:第一种:import语句导入模块,语法格式:import modulename [as alias]modulename要导入模块的名称;[as alias],为给模块起得别名,可通过别名也可以使用模块第二种:使用from……import语句导入模块,语法格式:fro

2021-10-08 09:32:23 310

原创 Python面向对象程序设计

1.8.1面向对象概述        Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。        面向对象中的对象(Object),通常是指客观世界中存在的对象,具有唯一性,对象之间不相同,各有各的特点,每一个对象都有自己的运动规律和内部

2021-07-06 22:43:22 1388 2

原创 Python函数

1.7函数试想一下,我们在编程时候,某一功能用到很多次,我们每用到这个功能就要写一次代码,这样就会非常的麻烦,这个时候就要使用到函数,我们可以把这个功能写成一个函数,如果使用这个功能,直接调用就可以了。1.7.1函数的创建的调用1.函数的创建创建函数也称为定义函数,可以理解为一个具有某种用途的工具。使用def关键字实现。具体语法格式如下:def functionname([parameterlist]):[‘’’comments’’’][functionbody]参数说明:functi

2021-07-04 14:00:46 988

原创 Python字符串及正则表达式(二)

1.6.2正则表达式在处理字符串时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。说白了 正则表达式用来判断某些字符串是不是符合正则表达式的规则。1.6.2.1 行定位符行定位符就是用来描述字符串的边界,”^”表示行的开始,”&”表示行的结尾^yz该表达式表示要匹配字符串yz开始的位置是行头yz&该表达式表示要匹配字符串yz结束的位置是行尾1.6.2.2元字符除了前面介绍的元字符”^”和”&”外,正则表达式里还有更多的元字符。

2021-07-03 21:50:53 344

原创 Python字符串及正则表达式(一)

1.6.1字符串常用操作1.6.1.1拼接字符串使用”+”运算符可以完成对多个字符串的拼接,”+”元素安抚可以连接多个字符串并产生一个字符串对象示例代码:teacher ="Will"content="主要负责Python自动化"结果:Will主要负责Python自动化字符串不允许直接与其他类型的数据拼接。示例代码:name="李二狗"course="语文成绩是"score=97 #(int类型)print(name+course+score)结果:Traceback

2021-07-03 14:47:40 879

原创 Python序列

1.5.1序列序列是什么?序列在程序中是一种常用的数据存储方式,几乎每一种程序设计语言都提供了类似的数据结构,JAVA和C中的数组;在python中内置了5个常用的序列结构,分别是列表、元组、集合、字典和字符串。序列就是一款用于存放多个值得连续内存空间,并且按照一定顺序排列,每一个值(称为元素)都分配了一个数字,称为索引或者位置。通过该索引可以取出相应的值。在Python中,序列的主要结构有列表、元组、集合、字典和字符串。对于这些序列结构有一下几个同通用的操作,其中,集合和字典不支持索引、切片、相加和

2021-07-02 14:37:58 251

原创 Python流程控制语句

1.4.1程序结构计算机解决某个问题时,主要有3种情形,分别是顺序执行语句、选择执行部分语句和循环执行部分语句。程序设计中的3种基本结构为顺序结构、选择结构和循环结构。顺序结构就是从上到下执行,选择结构就是if 判断,是执行条件1,否执行条件2。循环结构就是while和for语句1.4.2选择语句选择,是每个人都要做的事情,比如你要选择上哪所大学,你中午要吃什么,这都是选择,而程序的选择就是通过选择语句进行选择。选择语句也称之为条件语句。1.if语句格式,最简单的if语句:if 条件表达式:

2021-06-30 16:38:53 105

原创 Python语言基础

1.3.1保留字和标识符1.3.1.1保留字保留字是Python语言中一些已经被赋予特定意义的单词。在使用中不可以把这些保留字作为变量、函数、类、模块和其他对象使用。Python中保留字可以通过执行代码进行查看:import keywordprint(keyword.kwlist)结果如下:['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def

2021-06-29 10:52:48 579

原创 Python简介+Python环境搭建

1.1Python简介Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python的设计哲学为优雅、明确、简单,实际上Python始终贯彻着这一理念,以至于现在网上流传着“人生苦

2021-06-28 08:12:55 154

原创 JMeter二次开发

6.1概述为什么需要做二次开发?JMeter作为一款开源的性能、接口测试工具,有时候无法满足我们工作的需要,一般体现在:协议不支持、没有相应数据处理功能等。一般这种情况下,我们可以做的选择有:第一种找插件,第二种自定义实现。JMeter二次开发一般又分为三类情况:·自定义组件、依托于JMeter的core的jar实现。一般来说,代码量较大·依托于java请求实现自定义协议的扩展。 推荐方式·自定义函数来实现特定的一些数据处理的功能。(和服务器没有交互),比如加密、签名的生成、编码处理,解密等等。

2020-12-22 09:40:05 5898

原创 JMeter数据库连接

5.1数据库测试概述在测试过程中,对于数据库的操作场景一般有:·测试数据的制造·查询数据用于测试的输入·测试完成之后查询数据用于检测结果·业务SQL的性能测试JMeter是java应用,所以是JDBC的方式去连接和操作数据库。需要我们去下载JDBC驱动包需要自行下载,放入JMeter的lib目录。Mysql下载地址:https://dev.mysql.com/downloads/connector/在JMeter中,和JDBC操作有关的组件总计有四个:·JDBC Connection Co

2020-12-22 09:34:53 498

原创 JMeter脚本增强之事务、检查点、思考时间、集合点

3.3事务在JMeter中,对于事务的处理是分为两种情况:·要度量的操作只有一个请求:脚本不需要进行任何额外的处理,修改一下请求名称即可。·要度量的操作有多个请求:则需要添加逻辑处理器—事务处理器Generate parent sample:不会计算浪费时间Include duration of timer and pre-post processors in generated sample:事务时间包括前置、后置处理器、思考时间注意:事务名称不要重复,包括请求的名称3.4检查点在JMe

2020-12-17 10:13:04 823

原创 JMeter脚本增强之关联

在JMeter中,一般来说是通过后置处理器类型组件来实现关联的操作,这里我们常用作关联的是正则表达式提取器、JSON提取器、BeanShell后置处理程序。操作过程(可参考Loadrunner11操作手册的关联这里简单说一下)第一步:找到出错的请求(脚本为phpwind论坛发帖脚本),这里出错的请求是:提交发帖第二步:找到可疑数据 这里可疑数据是:7809ebd3(每次都不一样)第三步:找到可以数据出现的位置(在响应数据中查找)然后调试正则表达式或json表达式第四步:使用正则表达式提取器,

2020-12-17 10:08:26 410

原创 JMeter脚本增强之参数化

3.1参数化在JMeter中,所有鼠标点击可以输入的地方(字符串),都可以做参数化操作。参数、变量、系统变量、函数调用方式是统一的:${变量名、参数名等},参数化的实现方式一般有两种方式:函数方式:通过JMeter提供的函数或者自定义的函数来生成参数值。一般来说,建议通过函数助手对话框来实现函数的调用字符串生成。文件方式:一般来说就是由用户自己将参数值写入参数文件(csv格式),然后通过配置组件–CSV DATA SET CONFIG组件来实现读取和调用。这里我们主要说一下文件方式:·文件名:参

2020-12-17 10:01:32 163

原创 JMeter组件(二)以及作用域

2.5 逻辑控制器2.5.1 Foreach ControllerForEach controller属逻辑控制器其中的一种,可以根据用户的多个变量依次被循环调用,直到最后一个变量被调用即结束循环。设置用户变量,为变量名字_数字的形式添加foreach控制器,输入变量前缀,这个是用户变量的变量名称,开始循环字段:循环变量下标起点结束循环字段:循环变量下标终点输出变量名称:引用的变量名字这里线程组设置循环一次,通过foreach控制器,把变量的值遍历完成之后才结束的。2.5.2 Simpl

2020-12-17 09:59:51 281

原创 JMeter组件介绍(一)

2、JMeter组件介绍2.1 测试计划测试计划是必选组件,JMeter所有的脚本都是建立在测试计划之上的,所以保存脚本的菜单就叫:保存测试计划。•用户变量:用来添加一些全局性,变动较少的变量。操作:添加变量名称和对应的值到用户变量,使用快捷键Ctrl+F,将脚本中需要替换的值替换为${变量名},这样做的好处是,如果修改值直接在用户变量里去修改,不用在脚本中修改•独立运行每个线程组:该选项一般来说用于混合场景,当一个测试计划下有多个线程组时,如果勾选该选项,则会先执行第一个线程组,执行完之后再执

2020-12-08 15:25:46 296

原创 JMeter脚本

1.4 JMeter脚本1.4.1 第三方工具常用的第三方工具badboy、blazeMeter、fiddler的转jmeter插件,我是不太推荐使用第三方工具录制的。这里我就不做介绍了,有需要的可自行百度1.4.2 JMeter代理录制JMeter可自身提供代理功能完成脚本录制,具体步骤如下:第一步:右键测试计划:添加线程组第二步:右键测试计划:添加配置元件 http-cookie管理器第三步:右键测试计划:添加非测试元件 http代理服务器第四步:配置Http代理服务器选项配置内容:

2020-12-07 10:41:37 2381

原创 JMeter目录结构

1.3 JMeter目录结构1.3.1 bin目录bin目录是存放JMeter的主jar包、启动脚本和配置文件等。•ApacheJMeter.jar:是JMeter的主jar包,JMeter的所有启动脚本都是依赖于该jar包•jmeter.bat/jmeter.sh:是JMeter提供的提供脚本。这里主要是可以设置JVM参数,右键编辑脚本,将-Xms1g -Xmx1g改成-Xms4g -Xmx4g如图,该参数的意义是配置JMeter可以使用的内存,这关系到启动线程时,由于线程数较多,但可用内存不足

2020-12-07 10:36:16 298

原创 JMeter简介+下载安装

1、JMter简介1.1为什么选择JMeterApache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的

2020-12-03 10:27:23 420

原创 Anasisly之报告相关

3.5 Templates(模板)设置结果显示那些关系图形,步骤如下:第一步:先根据自己需要,添加好所需要的报告和图表。第二步:进入Tools–Template,点击新建并且给定命名。第三步:指定新建的模板为默认模板3.6 External Monitor(导入外部的系统资源监控结果)通过External Monitor 功能,就可以导入自行定义的计数器监控结果,来实现统一的性能测试分析,打开Tools菜单下的External Monitor 功能,选择Import Data,添加结果文件

2020-12-02 09:21:29 85

原创 Analysis之Web Page Diagnostics

当在场景中打开Diagnostics菜单下的Web Page Diagnostics功能,就能得到网页分析组图,通过这个功能可以实现对网站的前端性能分析,明确系统响应时间较长是由服务器端处理能力不足还是客户端连接到服务器的网络消耗导致的。在Diagnostics选项中提供了以下4大块功能。•Dounload Time(下载时间分析)其中,DNS Resolution、Connection 、SSL Handshaking、FTP Authentication这四个时间是和客户端、网络有关系。Fir

2020-12-02 09:18:09 320

原创 Analysis之过滤器

3.3 过滤器在LR中,提供了两类过滤器:全局过滤器、局部过滤器。顾明思议,全局过滤器就是对整个Analysis结果起效,而局部过滤器只对当前所选中的item(报告、一张图表)起效。通过设置相关内容的数值,进行过滤。一般设置的值是响应时间和场景运行时间。在设置完成后点击OK,就完成了过滤操作,效果:...

2020-12-01 14:51:20 141

原创 Analysis之Graphs

4.2 Graphs在场景运行时可以看到一些图,这些图将场景中的数据转化为折线图,方便我们了解当前该数据的状态。在默认情况下,Analysis会自动打开以下图:Running Vusers、Hits per Second、Throughput、Transaction Summary、Average Transaction Response Time。我们可以新增其他图表,右键Graphs->Add New Item->Add New Graphs。可以根据需要添加结果图。对于图表我们常用的

2020-12-01 14:50:07 557

原创 Loadrunner四大组件之Analysis的概要报告

3.Analysis通过场景完成负载后,我们完成了性能测试的执行过程,接着就是通过负载的结果来发现和定位性能瓶颈,在LR中对结果进行分析的组件为Analysis,他将场景中所能得到的数据都整合在一起,能够对测试结果进行分析,从而找到系统的性能指标和可能的瓶颈。生成Analysis报告的方式有三种:1.在场景运行结束后在场景中,results->analysis results2.在Analysis中打开新建菜单,然后进入场景运行结 束后的场景结果res目录,接着Analysis会对整个场景

2020-12-01 14:48:33 901

原创 Loadrunner之服务器资源监控

2.2系统监控2.2.1 windows系统监控Windows系统推荐的监控是windows自带的perfmon。通过添加计数器来进行监控,CPU的指标有:Processor对象下的:•%Processor Time:CPU的使用率,是系统使用100%减去系统空闲进程得到的。一般来说,该指标越小越好。正常来说,该指标会随着负载的增加而增加。通常不建议该指标长时间的超过80%•%User Time:CPU用于用户进程所消耗的时间占比。一般来说,该指标会结合%Processor Time用来判断

2020-12-01 14:41:27 881

Loadruner操作手册

介绍了Loadrunner的三大组件,Vugen、Controller、Analysis常用选项说明,脚本的参数化、关联、思考时间、集合点、断言、事务等处理方法,以及windows、Linux服务器资源监控。场景设计,分布式。

2020-12-01

空空如也

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

TA关注的人

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