自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

测试轩

记录成长

  • 博客(42)
  • 收藏
  • 关注

原创 关于Python-docx操作excel的一些记录

背景最近在做客户端性能测试的提效工作,会把当前版本的性能数据与上个版本的性能数据进行对比,然后把对比结论以及数据,放到docx文档上,自动生成一个性能报告,就学习了相关Python-docx的相关操作,记录如下。基本介绍python-docx 是用于创建可修改 微软 Word 的一个 python 库,提供全套的 Word 操作,是最常用的 Word 工具。可以对文档进行更改,包含段落、分页符、表格、图片、标题、样式等几乎所有的word文档中能常用的功能都包含了。只能解析docx文件,解析不了doc文

2021-12-11 11:35:58 1073

原创 如何高效的开展客户端的性能测试

APP性能测试是什么从网上查了一下,貌似也没什么特别的定义,我这边根据自己的经验给出一个自己的定义,如有巧合纯属雷同。客户端性能测试就是,从业务和用户的角度出发,设计合理且有效的性能测试场景,制定各性能场景下的客户端性能指标(内存、CPU、卡顿数、帧率、电量、加载时长等),并制定规范化的执行流程,按照执行标准执行性能场景同时使用性能测试具收集性能数据,并对数据进行分析,如果有性能问题并对问题进行定位,配合开发进行修复验证发布,最后输出完整的性能报告。从上面的定义中,我们可以得出,在APP的性能测试需要

2021-08-31 20:12:51 625

原创 unittest框架命令行参数详解一

-b,--buffer在执行测试case时,如果case成功则case在执行过程中输出的内容不会被显示出来,如果失败则会。class TestLogin(unittest.TestCase): def test_login_by_password(self): a = 2 print("这是运行成功时的输出") assert a == 1 + 1如果没有-b参数,case执行成功时是有打印语句输出的内容如果加了-b参数就

2021-07-25 17:43:10 517 4

原创 Android自动化测试中如何处理各种弹窗

在UI自动化测试中弹窗是影响自动化用例稳定性的一大因素,如何方便快捷的处理各种情况下的弹窗,是搞UI自动化测试必须要面临的问题.弹窗的种类:安装APP时的系统弹窗此类弹窗一般有两种,一种是自动化测试框初始化本身也需要安装一些APP,比如uiautomator2会安装atx-agent、com.github.uiautomator,这些弹窗在初始化环境的时候可以手动点掉,case里不需要关注。另一种就是安装我们的被测app,像下面这种都是我们不得不去处理的,不然,自动化也就是不自动了。APP启动时的

2021-07-20 20:18:44 2231 3

原创 小白学Python-使用Django实现商城登录功能

用户名登录登录的核心思想,认证和状态保持,通过用户的认证,确定该登录用户是美多商场的注册用户。通过状态保持缓存用户的唯一标识信息,用于后续是否登录的判断。1. 用户名登录逻辑分析2. 用户名登录接口设计1.请求方式选项方案请求方法POST请求地址/login/2.请求参数:表单参数名类型是否必传说明usernamestring是用户名passwordstring是密码rememberedstring是是否

2021-06-01 22:54:42 569 6

原创 小白学Python-使用Django实现商城验证码模块

本文主要涉及图形验证码的相关功能,主要包括,图形验证码获取、验证码文字存储、验证码生成等。图形验证码接口设计和定义验证码获取接口设计uuid作为路径参数,唯一标识验证码所属用户新建应用验证码的相关逻辑我们用一个单独的app处理,所以这里需要新建一个叫verifications的app,建好app后,打开views.py视图文件,编写一个验证码的视图类class ImageCodeView(View): """图形验证码"""

2021-05-31 23:43:54 301 5

原创 细说selenium的等待条件

selenium的显示等待在进行UI自动化测试的时候,我们为了保持用例的稳定性,往往要设置显示等待,显示等待就是说明确的要等到某个元素的出现或者元素的某些条件出现,比如可点击、可见等条件,如果在规定的时间之内都没有找到,那么就会抛出Exception.上面是我用selenium写的一个测试用例,展示了selenium中显示等待的使用方式,其中会使用到expected_conditions模块和WebDriverWait类,注意这里expected_conditions是一个py文件的文件名,也就是一个

2020-08-01 22:52:49 686

原创 利用tox打造自动自动化测试框架

什么是toxtox官方文档的第一句话 standardize testing in Python,意思就是说标准化python中的测试,那是不是很适合测试人员来使用呢,我们来看看他究竟是什么?根据官方文档的解释,tox是一个管理测试虚拟环境的命令行工具,可以支持穿件隔离的python环境,在里面可以安装不同版本的python解释器和项目的各种依赖库,可以进行自动化测试、打包以及持续集成。tox能做什么创建测试虚拟环境运行静态代码分析与测试工具自动化构建包针对 tox 构建的软件包运行测试

2020-07-19 23:12:04 935

原创 性能测试之jmeter逻辑控制种类详解一

逻辑控制器介绍Jmeter逻辑控制可以对元件的执行逻辑进行控制,除Once only Controller仅一次控制器以外,其他控制器都可以可以嵌套其他种类的控制器,下面是jmeter5.3支持的控制器种类,我们分别对其进行介绍Simple ControllerSimple Controller用来指定一个执行单元,他不改变元件的执行顺序,主要作用是用来组织采样器和其他的逻辑控制器简单控制器只有名称和注释.比如说我们可以用它组织模块,在各个模块里在进行请求的发送,这样看起来各模块比较独立,好

2020-07-06 23:05:34 905

原创 性能测试之Jmeter中场景设置与启动方式

Jmeter场景设置与启动方式性能测试场景是用来模拟模拟真实用户操作的工作单元,所以场景设计一定要切合用户的操作逻辑,jmeter主要是通过线程组配合其他组件来一起完成场景的设置。线程组设置Jmeter线程组实际上是简历一个线程池,然后根据用户的设置完成线程池的初始化,在运行时做各种逻辑处理上图是一个线程组的配置界面,下面我们对具体的参数进行说明name和comments是名称和注释的配置,这里根据自己要测试的场景设置就好,最好是见名知意Action to be taken after a

2020-07-05 19:06:09 1342

原创 SpringBoot从入门到放弃之配置Spring-Data-JPA自动建表

pom文件配置引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>.

2020-06-20 21:02:58 1040

原创 测试开发专题:spring-boot如何使用JPA进行双向一对多配置

本片文章我们主要介绍spring-boot如何进行JPA的配置以及如何进行实体间的一对多配置。依赖准备要在spring-boot使用jpa需要在项目中有进入相关的依赖,pom文件里加入下面内容<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dep

2020-05-24 16:20:01 987

原创 python装饰器在接口自动化测试中的应用

在讲解装饰器在接口自动化测试项目的应用之前,我们先来介绍一下python装饰器到底是个什么装饰器说装饰器就不得不提一下函数这个一等公民了,在python中函数有几个特性先来了解一下函数的一些特性函数也是对象在python中函数也是对象,可以把函数赋值给变量,比如下面这样:def func(message): print("打印一条message: {}".format(message))send_message = funcsend_message(&quo

2020-05-20 13:29:32 2454

原创 终于,帮开发写了一个bug

写在文章的开头最近项目比较紧,尤其前端的的需求比较多,作为一名测试,也会些vue,本着加快项目进度的美好想法,就自告奋勇的向组长承接了一部分开发的任务,其中有个需求需要在我们的广告管理后台新增一个上传图片的功能,需要先上传到七牛云,然后在将图片的地址传给服务端。bug的由来在项目里我们使用的是Iview组件库的Upload组件,这个组件可以设置一个回调函数用于在文件上传成功后做一些处理on-success属性可以用于指定上传成功后的回调函数,我就把图片上传到服务端的逻辑写在了这个回调函数中:ha

2020-05-19 10:32:51 1112

原创 测试开发专题:spring-boot自定义返回参数校验错误信息

之前两篇文章 Spring-boot自定义参数校验注解和如何在spring-boot中进行参数校验,我们介绍了,参数校验以及如何自定义参数校验注解,但是当传递参数出错时,只是把错误信息打印到了控制台,合理的做法是应该把校验的错误信息返回给前端,告知用户那里有问题,下面就这一步内容进行说明。请求body参数上篇文章 Spring-boot自定义参数校验注解的最后,在控制台打印了校验出错的信息出错的异常类是MethodArgumentNotValidException,那如果想要自定义异常的返回,就需要

2020-05-16 18:18:32 1149

原创 更加灵活的参数校验,Spring-boot自定义参数校验注解

上文我们讨论了如何使用@Min、@Max等注解进行参数校验,主要是针对基本数据类型和级联对象进行参数校验的演示,但是在实际中我们往往需要更为复杂的校验规则,比如注册用户的密码和确认密码进行校验,这个时候基本的注解就无法满足我们的要求了,需要去按照业务需求去自定义注解进行校验元注解在自定义注解之前我们有必要了解一些元注解,元注解就是在注解上的注解,可以对一个注解进行配置,元注解包括@Retention、@Target、@Document、@Inherited四种@Retention,表示注解保留到什么

2020-05-15 10:35:25 1206

原创 测试开发专题:如何在spring-boot中进行参数校验

上文我们讨论了spring-boot如何去获取前端传递过来的参数,那传递过来总不能直接使用,需要对这些参数进行校验,符合程序的要求才会进行下一步的处理,所以本篇文章我们主要讨论spring-boot中如何进行参数校验。lombok使用介绍在介绍参数校验之前,先来了解一下lombok的使用,因为在接下来的实例中或有不少的对象创建,但是又不想写那么多的getter和setter,所以先介绍一下这个很强大的工具的使用。Lombok 是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Jav

2020-05-14 19:32:25 933

原创 spring-boot如何去获取前端传递的参数

本文主要讨论spring-boot如何获取前端传过来的参数,这些参数主要有两大类,一类是URL里的参数,一个是请求body里的参数url里的参数通过url里传过来的参数一般有三种方式,下面我们来看一下路径参数路径参数就是说在请求路径里携带了几个参数,比如有一个查询banner详情的接口,/v2/banner/123,这里的123就是参数,可以表示banner的ID。下面我们设计了一个简陋的接口,来演示路径参数的获取@RestController@RequestMapping(value =

2020-05-13 00:06:44 886

原创 python是如何进行参数传递的?

在分析python的参数传递是如何进行的之前,我们需要先来了解一下,python变量和赋值的基本原理,这样有助于我们更好的理解参数传递。python变量以及赋值数值从几行代码开始In [1]: a = 1In [2]: b = aIn [3]: a = a + 1我们先将1赋值给a,也就是a指向了1这个对象,在python中一切皆对象。接着b=a,则表示让b也指向了1这个对象,python中一个对象是可以被多个引用所指向。最后执行的a=a+1,这里需要注意一点,python的数据类型中

2020-05-11 22:38:25 1008

原创 测试开发专题:spring-boot自定义异常返回

上文测试开发专题:spring-boot统一异常捕获我们讨论了java异常以及如何使用Spring-Boot捕获异常,但是没有去说捕获异常后该如何进一步处理,这篇文章我们将对这个遗留的问题进行讨论.统一错误响应定义我们希望在程序发生异常的时候,能够给用户返回一个比较友好且明确的信息,对于api接口来说,一种比较好的格式是json,类似于下面这种格式{ "code": "10001", "message": "消息&q

2020-05-10 15:49:52 972

原创 测试开发专题:spring-boot统一异常捕获

java异常介绍异常时相对于return的一种退出机制,可以由系统触发,也可由程序通过throw语句触发,异常可以通过try/catch语句进行捕获并处理,如果没有捕获,则会导致程序退出并输出异常栈信息,异常有不同的类型,所有异常类都有一个共同的父类Throwable,下面我们先从Throwable开始介绍。ThrowableThrowable是所有异常类的父类,有四个构造方法public Throwable(Throwable cause)public Throwable(String mess

2020-05-09 17:16:25 1086

原创 spring注入bean的几种策略模式

上篇文章Spring IOC的核心机制:实例化与注入我们提到在有多个实现类的情况下,spring是如何选择特定的bean将其注入到代码片段中,我们讨论了按照名称注入和使用@Qualifier 注解输入的两种方式,本篇文章将结合之前提到的和spring的其他注入方式一起进行讨论。本文主题我们将讨论在一个接口或者抽象类在具有多个实现类的情况下,有多少种策略能够让我们在特定的代码片段中注入想要的be...

2020-05-05 23:43:19 880

原创 Spring IOC的核心机制:实例化与注入

上文我们介绍了IOC和DI,IOC是一种设计模式,DI是它的具体实现,有很多的框架都有这样的实现,本文主要以spring框架的实现,来看具体的注入实现逻辑。spring是如何将对象加入容器的spring将对象加入容器的方式有很多种,最主要的是xml和注解的形式,而当下注解的形式应用更加的广泛,所以这里我们也主要介绍注解注入模式下的相关知识点。spring下的注解也是有很多种的,其中应用最为广...

2020-05-04 22:58:18 427

原创 深入理解几种单例模式的实现方式

饿汉式饿汉式的单例实现方式就是说在类加载的时候就已经创建并初始化好了,所以实例的创建过程是线程安全的public class IdGenerator { private AtomicLong id = new AtomicLong(0); private static final IdGenerator instance = new IdGenerator(); pri...

2020-04-10 10:45:09 940

原创 python中的列表和元组都有哪些区别

列表(list)和元组(tuple)的一些基础list和tuple都是一个可以放置任意数据类型的有序集合,都是既可以存放数字、字符串、对象等list和tuple都支持负索引In [8]: nums[-2]Out[8]: 'ad'In [9]: tp[-2]Out[9]: '33'list和tuple都支持切片操作In [10]: nums[1:3]...

2020-04-09 21:35:02 1799

原创 强引用、软引用、弱引用、幻象引用有什么区别?

在 Java 语言中,除了原始数据类型的变量,其他所有都是所谓的引用类型,指向各种不同的对象,Java中根据其生命周期的长短,将引用分为4类,分别是强引用、弱引用、软引用和幻象引用(虚引用),不同的引用类型,主要体现的是对象不同的可达性状态和对垃圾回收集的影响。强引用什么是强引用Object obj = new Object(),这里的的obj就是强引用,通过关键字new创建的对象所关联...

2020-04-05 22:00:36 378

原创 vue基础指令学习

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><!--定义挂载vue对象的div--&gt...

2020-04-01 10:19:56 976

原创 如何设计一个自动化测试框架

在进行自动化框架设计之前我们先来看两个问题,什么是自动化框架,设计的时候应该注意什么原则,然后该怎么做?本文会以一个web端的UI自动化测试框架设计为例什么是自动化测试框架什么是框架特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。框架是整个或部分系统的可重用设计,表现为一组抽象构件及...

2020-03-28 22:05:57 1652

原创 测试工程师需要了解的shell变量知识

欢迎访问个人博客什么是变量本地变量:手动定义的,在当前系统的某个环境下才能生效,作用范围小普通变量:单引号:原字符输出,变量名=‘变量值’➜ shell name='tom'➜ shell echo $nametom双引号:变量名=“变量值”,看一下值当中有没有对其他变量的引用,如果有就获取变量值然后组合到一起输出➜ shell word=&qu...

2020-03-27 00:08:37 344

原创 关于自动化测试用例失败重试的一些思考

自动化测试用例失败重跑有助于提高自动化用例的稳定性,那我们来看一下,python和java生态里都有哪些具体做法?怎么做如果是在python生态里,用pytest做测试驱动,那么可以通过pytest的插件pytest-rerunfailures来实现失败用例重跑,具体的使用方式有两种,一种是通过命令行指定pytest --reruns 2 --reruns-delay 1,reruns表示重复...

2020-03-18 15:11:01 1772

原创 一个很香的python练习网站

推荐一个python练习网站w3resource,练习题包括python的基础数据类型,函数、内置的一些库比如os、datatime、collections等等,还有一些第三方的库,每道题会给出题目描述,然后提供代码编辑窗口,还有网站给出的问题解进行比对。更香的是,在给出的解答代码后,还会给出代码的执行流程图,更更香的是,不仅给出代码的执行流程图,还给出了代码的可视化执...

2020-03-16 14:26:27 5092 1

原创 关于接口测试用例设计的一些思考

接口测试发现的典型问题传入参数处理不当,引起程序错误类型溢出,导致数据读取和写入不一致对象权限校验出错,可获取其他角色信息状态出错,导致逻辑处理出现问题逻辑校验不完善定时任务执行出错接口测试用例设计接口测试用例设计主要针对输入、处理、输出进行考虑针对输入进行设计对于接口来说,输入就是入参,一般的参数类型数值型边界内、边界值、边界外三个方面去考虑特殊值处理不当程序异常...

2020-03-16 11:35:43 1141

原创 pytest、tox、Jenkins实现python接口自动化持续集成

pytest介绍pytest是一款强大的python测试工具,可以胜任各种级别的软件测试工作,可以自动查找测试用并执行,并且有丰富的基础库,可以大幅度提高用户编写测试用例的效率,具备可扩展性,用户自己也可以编写插件实现特定的功能,也可以安装第三方插件,非常容易的与其他工具集成到一起,比如持续集成、接口自动化测试等。小编之前也写过几篇关于pytest的文章,可以到主页查看哈。tox介绍tox是...

2020-03-16 11:14:42 1149

原创 django实战商城项目注册业务实现

设计到的前端知识项目的前端页面使用vue来实现局部刷新,通过数据的双向绑定实现与用户的交互,下面来看一下需求,在用户输入内容后,前端需要做一些简单的规则校验,我们希望在在用户输入后能够实时检测,如果有错误能够在输入框的下方显示出来。<li> <label>用户名:</label> <input type="text"...

2020-03-11 19:36:10 1088

原创 python框架Django实战商城项目之用户模块创建

创建用户APP整个项目会存在多个应用,需要存放在一个单独的文件包了,所以新建一个apps目录,管理所有子应用。在apps包目录下穿件users应用 python ../../manage.py startapp users这个时候呢,需要我们将新创建的应用注册到django里,可是这里我们修改了应用的管理目录,与默认的方式不同,如果还按照之前的方式注册APP肯定会报错,这个时候我们可以先查...

2020-03-10 10:14:50 1247

原创 python框架Django实战商城项目之工程搭建

项目说明该电商项目类似于京东商城,主要模块有验证、用户、第三方登录、首页广告、商品、购物车、订单、支付以及后台管理系统。项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用jinja2模板引擎实现,局部刷新采用vue.js实现。项目运行机制如下:项目搭建工程创建项目使用码云进行源代码版本控制,在码云创建好后直接克隆到本地即可,然后在项目根目录下执行virtual...

2020-03-09 14:44:36 1180

原创 面试测试开发被问到数据库索引不知道怎么办?这篇文章告诉你

提出的问题什么情况下创建索引,什么时候不需要索引?索引的种类有哪些?什么是索引索引就是帮助数据库管理系统高效获取数据的数据结构,就好比一本书的目录,它可以帮我们快速进行特定值的定位与查找,从而加快数据查询的效率。索引的种类从功能逻辑上划分普通索引是基础的索引,没有任何约束,主要用于提高查询效率唯一索引就是在普通索引的基础上增加了数据唯一性的约束,在一张数据表里可以有多个唯一索...

2020-03-06 16:55:26 1163

原创 测试人员都需要了解哪些redis知识

在介绍redis之前,先来几个问题,1、redis是什么,为什么使用redis会非常快2、redis支持的数据类型都有那些3、如何通过python与redis进行交互redis为什么这么快编写语言redis是采用C语言编写的,好处就是底层代码执行效率高,依赖性低,没有太多运行时的依赖,而且系统的兼容性好,稳定性高存储redis是基于内存的数据库,可有避免磁盘IO,...

2020-03-05 00:07:30 1224

原创 python测试开发面试之深浅拷贝

先来道题热热身a = ('a', 'b','c')c = copy.copy(a)d = copy.deepcopy(a)if c == d: print("c和d的值相等")if id(c) == id(d): print("c和d的地址相等")想想最后打印的是什么?什么是深拷贝和浅拷贝深拷贝,就是在对某个对象进行拷贝的时候,如果这个对象持有其他对象的引用,...

2020-03-03 11:27:27 1212

原创 性能测试之Jmeter中如何设置参数化数据

参数化配置jmeter中进行参数化设置,右击测试计划或者线程组,add->config element->CSV Data Set Config参数1.pngAllow quoted data含义是是否允许带引号的数据,有两个选择true和false,false的意思是如果数据中包含引号,会进行URL编码," 会转换为%22这种形式,true的意思就是允许带引号,不会进行编码处理Recy...

2020-02-20 10:38:06 2458

空空如也

空空如也

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

TA关注的人

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