自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 数据迁移一致性测试探索与实践

量级庞大的日志通过mysql不足以支撑业务需求,以前通过任务调度定时跑批从mysql同步到hive存储,这种方式时效性为T+1,也就是说今天的日志,明天才能同步到hive,总而言之时效性不高。为了提高时效性,改为流式计算flink实时同步。

2023-10-20 17:13:09 454

原创 Dockerfile总结

dockerfile 是用来构建 docker 镜像的文件!命令参数脚本!构建步骤编写一个 dockerfile 文件docker build 构建成为一个镜像docker run 运行镜像docker push 发布镜像(DockerHub、阿里云镜像仓库!

2023-04-03 17:49:06 324 1

原创 【环境问题定位】磁盘空间不足

磁盘空间不足排查

2023-03-21 11:14:48 265

原创 linux安装redis6.0.8

redis安装遇到的坑以及连接redis总结

2023-02-15 16:36:20 413

原创 如何做好业务测试?

谈谈业务测试。负责数据链路长,业务复杂度高的金融项目,业务测试最重要的是理解业务。理解业务包括需求层面和技术实现理解业务的手段1、阅读需求文档大致理解需求2、阅读技术架构资料,理清各服务之间的调用关系3、通常没有接口文档,自己拉代码,梳理涉及相关核心接口,顺便做代码走读,可使用idea提供的版本对比,了解改了哪些代码4、看数据库结合业务需求,设想如果是自己来开发,会对数据做哪些增删改查,然后发梳理好的接口请求,跟踪debug日志,主要看操作数据库的日志,这样大致能理清技术实现了5、当业务复.

2022-02-10 10:45:23 1143

原创 如何利用jmeter发起并发测试?

一、添加线程组设置1000个线程数二、添加http取样器填写ip、端口、方法路径、编码、请求方法、参数三、添加http信息头管理器这里使用的是json格式的参数,需要设置Conten-type:application/json四、利用函数助手解决入参幂等本需求入参的申请编号和身份证必须唯一,利用函数助手解决固定值+计数器 "requestId":"${__longSum(1111111111110000,${__counter(FALSE,count)},)}

2021-11-19 20:01:25 1177

原创 如何利用jmeter进行dubbo接口测试?

一、安装jmeter-plugins-dubbo插件1、下载jmeter-plugins-dubbo jar包2、放入apache-jmeter-5.0\lib\ext目录下二、dubbo接口发起步骤1、测试计划下添加一个线程组2、线程组下创建一个dubbo取样器3、取样器配置Protocol 处设置所用协议(即Dubbo所使用的注册中心)Address 填入注册中心地址:端口(集群地址使用","分隔)Interfaces 填写类名路径Methods 填写方法名Args 填写参

2021-11-14 23:21:23 560

原创 如何利用springboot+vue实现一个简单的登录功能?

一、设计数据库DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL

2021-10-09 00:25:09 6146 2

原创 js核心知识点梳理

一、vue中的双向绑定v-model文本框输入username、password,点击弹出username、password<template> <div> <p>smy欢迎你</p> <p>{{msg}}</p> <input type="button" value="点我一下" @click="clickme"> <input type="text" v-model

2021-10-05 21:00:24 180

原创 vue环境搭建及访问流程梳理

一、vue环境搭建1.1、安装node.jshttps://nodejs.org/zh-cn/node.js让js走向了后端,独立于浏览器1.2、安装vue的脚手架工具使用cnpm下载快一点npm install -g cnpm --registry=https://registry.npm.taobao.org–global全局安装cnpm install --global vue-cli 1.3、创建项目vue init webpack smyfronted

2021-10-05 16:24:19 774

原创 如何理解AOP面向切面编程?

一、举例子我现在开发了7个增删改查的接口如下,假设现在有一个需求,无论是增删改查,只要传参用户名为空,则直接返回失败。如果采用面向对象的思想,在controller下的方法中,增加判断为空的代码,这样会导致二个问题,一是代码冗余,二是代码依赖性太强。采用面向切面的思想不仅能提高开发效率,还能降低耦合度,在业务层我们只需关注业务的实现,在开发过程中也更加符合尽量不动前辈们写的代码。二、代码实现@Aspect 代表这是个切面@Component交给spring容器管理@Order(1)执行顺序

2021-08-20 09:52:01 236

原创 如何利用minio实现文件上传存储?

一、将minio部署在docker容器中<1>安装好docker容器后,运行下面的命令。如果之前没有安装过minio镜像,则会自动安装并且启动一个容器。这里-p指定了两个端口,前者是api方式访问的端口,后者是客户端界面访问的端口。-e指定的是登录的账号密码。docker run -p 9008:9000 -p 9007:9007 --name minio \-d --restart=always \-e "MINIO_ACCESS_KEY=minioadmin" \-e "

2021-08-09 00:25:08 6954

原创 如何利用SpringTask实现定时任务?

一、SpringTask介绍SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用二、添加SpringTask的配置只需要在配置类中添加一个@EnableScheduling注解即可开启SpringTask的定时任务能力@SpringBootConfiguration@EnableSchedulingpublic class SpringTaskConfig {}三、添加TestCaseExecutorTask

2021-08-08 20:35:40 267

原创 如何利用Swagger-UI自动生成接口文档?

一、常用注解Swagger-UI是HTML, Javascript, CSS的一个集合,可以动态地根据注解生成在线API文档@Api:用于修饰Controller类,生成Controller相关文档信息@ApiOperation:用于修饰Controller类中的方法,生成接口方法相关文档信息@ApiModel:用于修饰接口中的参数,生成接口参数相关文档信息@ApiModelProperty:用于修饰实体类的属性,当实体类是请求参数或返回结果时,直接生成相关文档信息二、 添加依赖<!

2021-07-30 18:18:45 500

原创 docker常用命令(一)

1、下载镜像docker pull 镜像名docker pull tomcat直接拉取的是最新镜像,可以到官网选择需要的版本下载2、新建容器docker run [可选参数] imagedocker run -it -v /usr/data:/usr/local/tomcat/webapps -p 8099:8099 --name tomcat3 tomcat参数说明–name=“Name” 容器名字 tomcat01 tomcat02,用来区分容器-d 后台方式运行

2021-07-29 20:59:38 95

原创 如何实现一个分页查询的接口?

一、准备数据库实现一个分页查询接口返问数据库中的数据一、配置分页插件在config包下创建MyBatisConfig类@SpringBootConfiguration代表该类下的方法交给spring boot管理让其自动执行@SpringBootConfigurationpublic class MyBatisConfig { @Bean public PaginationInterceptor paginationInterceptor(){ Pagi

2021-07-27 17:24:42 6801

原创 Spring Boot中如何封装接口返回状态码的组件?

一、设计思路通用组件一般写在common下首先创建一个iErrorCode接口public interface IErrorCode { long getCode(); //获取状态码 String getMessage(); //获取描述信息}创建一个ComonCode枚举类,封装了一些通用状态码去实现IErrorCode接口public enum CommonCode implements IErrorCode{ S

2021-07-26 17:13:33 901

原创 如何理解mybatis plus的条件构造器queryWrapper?

一、什么是queryWrapper?在调用service层封装好的查询方法getOne时,可以看到需要传的参数是queryWrapper。那么queryWrapper是啥呢?实现查询的对象封装操作类,讲人话就是queryWrapper封装了sql语句where后面的内容二、具体怎么操作new一个queryWrapper对象,然后按照下面这张图的格式,写好之后把queryWrapper当作参数传给getOne,就可以实现查询,理解了查询也就理解了增删改...

2021-07-23 18:35:15 998

原创 如何使用MybatisPlusGenerator实现一个操作数据库的接口?

一、为什么要使用MybatisPlusGenerator?在上篇中讲到使用Spring Boot引入了mabytis,通过把sql语句写在xml配置文件中操作数据库。那么设想现在要操作多张表,用原来的办法是不是需要手动创建N个类,手写N条sql语句,手不累,心也累。于是乎MybatisPlusGenerator应运而生二、实现过程2.1、创建MybatisPlusGenerator类这里已经帮你写好了,你可以直接拿来用/** * MyBatisPlus代码生成器 * Created b

2021-07-23 18:13:02 433 1

原创 如何用Spring Boot实现一个操作数据库的接口?

一、Spring Boot原理用户从页面前端,也就是我们所说的 view 层进行查询访问,进入到 controller 层找到对应的接口,接 着 controller 进行对 service 层进行业务功能的调用,service 要进入 dao 层查询数据,dao 层调用 mapper.xml 文件生成 sql 语句到数据库中进行查询二、实现过程2.1、准备数据库user表插入四条数据2.2、model下创建一个User类与数据库的字段一一对应@Getter @Setterpubl

2021-07-18 23:19:58 4820 9

原创 java如何读取properties文件?

一、如何读取?smy.properties配置文件内容使用如下代码,传入文件名和key参数,即可得到value的值 /** * * @param pro 配置文件名 * @param key * @return * @throws IOException */ private static String readProperty2(String pro,String key) throws IOException {

2021-07-14 00:30:14 237

原创 Loadrunner如何录制脚本?

1、new script2、选择协议3、配置录制选项4、点击ok,则开始录制 ·application type:就是指要录制的客户端类型。 ·internet application:对应就是指客户端是浏览器,即B/S架构的产品。 ·win32 application:win32程序一般就是指专属客户端产品,即C/S架构的产品。5、停止录制6、执行脚本7、看结果view – test rusultstree...

2021-06-26 20:34:14 1308

原创 bug定位之对于dubbo+zk+nginx的运用

一、bug描述上传银行卡后,某个app个人中心页面显示银行卡实而显示为空,实而显示有数据。二、定位bug思路1、查存储银行卡的数据库,发现有银行卡数据2、fiddler抓包,返回绑定银行卡为空,分析接口后,并没得出有效信息3、抓包的同时,查实时日志,发现调用查询银行卡的接口远端ip地址不对4、登录zk客户端,查看该接口的provider注册ip,发现有两个注册ip,其中一个是错误的,一个是对的5、登录dubbo-admin,查看提供者的ip正常且为启用状态6、通过url解码可以看到dubbo

2021-06-07 00:25:54 185

原创 测试人员在工作中如何查日志?

1、查日志最实用排行榜N0.1推荐:vi命令中的查找步骤:1、进入vi2、输入:?关键词3、n键向上查找,N向下查找推荐理由:多个开发和测试前辈,都推荐的,简单好用N0.2推荐:查最后10000行匹配关键词的上下10行eg:tail -n 行数 文件 |grep 关键词 -C 关键词上下行数tail -n 10000 XXX.log|grep 客户号 -C 10推荐理由:相对灵活,可以调整行数N0.3推荐:查实时日志eg:tail -200f XXX.log

2021-05-17 19:17:39 8224

原创 性能测试启蒙篇

一、企业对于性能测试工程师的要求熟练掌握至少一种性能测试工具去完成性能测试(脚本开发)能够分析、收集、整理性能测试的需求能够根据需求去进行相关的场景设计能够采用工具去实现相关的测试场景能够根据需求和实际测试的情况去完成相关的性能指标的监控能够对性能测试结果、监控数据等进行分析,定位性能瓶颈,提出调优建议能够编写合格的性能测试报告具备良好的沟通表达能力和团队协作能力二、性能测试所面临的挑战·知识面的广度: ·需要时间去积累,去融汇贯通。 ·在保证广度的同时,适度兼顾深度(某一个方向

2021-04-22 22:52:49 77

原创 如何用monkey做稳定性测试?

monkey用法1、作用monkey的作用,是通过一系列的随机操作,来测试手机上应用的稳定性,其实就是看在高频率的大量操作下,应用会不会出现问题2、常用命令adb shell monkey -p com.ss.android.ugc.aweme -v -v -v --ignore-crashes --ignore-timeouts --ignore-native-crashes --throttle 100 1000000>D:\douyin.log-v 参数,表示日志的详细等级,

2021-02-16 17:31:05 2838

原创 如何获取生成订单的参数?

问题:异常订单目的:开发要查看订单的请求参数,来考虑是不是填写参数的问题操作步骤:勾选Preserve log,点击XHR查看请求包,选择savaOrder,点击view source 展开报文,复制给开发

2020-10-20 21:26:04 307

原创 flask如何开发一个post请求

如何实现:发送一个请求方式为post的url,获取form请求体中的参数值,设置到响应体里去源码#encoding="utf-8"import jsonfrom flask import Flask, requestapp = Flask(__name__) #启动@app.route('/ouyangsong/ou/yang',methods=['POST']) #默认根路径def login(): request_method = reques.

2020-10-16 00:04:49 1719

原创 flask开发get请求讲解

如何实现:发送一个请求方式为get的url,获取url中的参数值,并打印源码from flask import Flaskimport jsonfrom flask import request app = Flask(__name__) #启动@app.route('/ouyangsong/ou/yang',methods=['GET']) #请求路径、请求方式def login(): username = request.args.get("ou") .

2020-10-15 22:44:02 1422

原创 Fiddler如何设置过滤?

隐藏304响应码Rules -> Hide 304s设置是否只显示浏览器设置Filters过滤规则Hide if URL contains 过滤语法REGEX:(?insx)/[^\?&]*\.(css|ico|jpg|png|gif|bmp|wav|js)(\?.*)?$

2020-10-04 23:45:29 6389

原创 如何用python给自己的孩子取一个名字?

一、前言最近在写自动化脚本的时候,遇到一个头疼的bug,就是每次都需要输入不同中文名字。二、怎么实现如何得到一个随机汉字import randomdef GBK2312(): head = random.randint(0xb0, 0xf7) body = random.randint(0xa1, 0xfe) val = f'{head:x} {body:x}' str = bytes.fromhex(val).decode('gb2312') retur

2020-09-28 15:03:24 1693

原创 给你一个智能音响,你怎么测?

给你一个智能音响,你怎么测?1、确定他的主流程是什么假设他的主流程是:开机、连接、接收声音、识别声音、给出对应的操作操作。功能测试点能不能正常开机、能不能正常连接、能不能正常接收声音、能不能正确识别声音、能不能根据识别的声音做出相应的操作。功能测试点具体开机:有电开机、低点开机、无电开机连接:有效距离连接wifi或蓝牙,测边界值接收声音:有效距离接收声音、无效距离接收声音识别声音:发音清晰的数据库里的声音,发音模糊数据库里的声音、发音模糊非数据库里的声音、发音清晰非数据库

2020-09-27 16:20:57 2766

原创 如何使用Fidder对App进行弱网测试

一、什么是弱网测试?测试app在网络状态不好的情况进行测试、查看app的运行状态目的:提高用户体验性异常判断、是否再次点击、是否崩溃闪退二、步骤1、把电脑和App设置为同一局域网状态电脑开启热点手机连接热点在WLAN的窗口当中长按 已连接的WIFI名称,选择“修改网络”在弹出的修改网络窗口当中,将代理设置选 择 “手动”在 代理服务器主机名中输入fiddler电脑的IP地址在 代理服务器端口号 中输入fiddler的代理端口点击“保存”2、在Fidder中限制传输速率在

2020-09-08 19:04:07 351

原创 如何用PO模型设计代码?

一、设计思路二、Utils.py工具类封装方法,增加复用性、可维护性、可阅读性用什么就封装什么(1)获取驱动、退出驱动(2)频道选择(3)判断元素是否存在(4)边滑动边点击(5)…等等三、Base目录封装对象库层基类(1)获取显示等待的元素对象(2)…等等封装操作层基类(1)输入框先清楚再输入(2)…等等四、Page目录1.、一个页面一个py文件2.、对象库层目的:封装元素对象步骤:(1)继承BasePage基类(2)初始化 super

2020-08-27 19:22:48 435

原创 如何封装一个边滑动边查找函数?

一、思路(1)需要三个参数:deiver驱动对象、外层元素对象、要点击的文本内容(2)location获取左上角坐标点(3)size获取外层长宽(4)得出单页面滑动的起始点和终止点位置(90%、10%)(5)通过while True一直滑动,直到找到要点击的文本内容二、源码分析# 定义加滑动边查找的方法def swipe_find(driver, element, location): # 获取滑动的元素坐标点 lc = element.location # 获取滑动

2020-08-27 15:39:54 288

原创 如何调用showapiRequest解决图片验证码识别?

一、思路(我埋了一个坑)(1)保存整张登录页面的图片(2)剪切验证码区域的图片(3)调用showapiRequest识别剪切好的图片二、保存整张图片保存当前页面的整张图片括号里面是保存图片的路径driver.save_screenshot(”D:\web_selenium1\image1.png“)三、剪切验证码区域图片element_code是验证码的定位元素element_code.location得到的是验证码左上角的坐标先打开image1.png图片,然后用crop进行

2020-08-12 22:06:06 1658

原创 pip install下载包太慢超时怎么办?

用notepad++创建pip.ini文件,输入cmd命令行中输入set,查看所有系统变量,找到USERPROFILE, 我的为:C:\Users\松最后把写好的 pip.ini 文件,保存到C:\Users\松\pip里去index-url 为清华镜像站链接,当然你也可以配置其他的镜像站了,没很大的区别哦:中国科学技术大学 : https://pypi.mirrors.ustc.edu.cn/simple清华:https://pypi.tuna.tsinghua.edu.c..

2020-08-06 16:08:26 325

原创 python中如何捕获异常?

一、异常是什么-错误:代码本身的错误-异常:由输入引起的错误叫异常异常是比较难解决的,所以引入这个概念二、异常怎么用-完整模板:try: 可能异常的代码except 指定异常类型1: 异常执行代码except 指定异常类型2: 异常执行代码except Exception as result: print(result) #打印系统提示的错误else: 没有异常执行代码finally: 无论是否异常都有执行的代码-正常完整源码:try:

2020-08-05 11:33:45 453

原创 如何通过unittest对函数进行测试?

一、知识点整理二、TestCase和参数化类继承class Sum_my(unittest.TestCase):类里面,test开头的方法代表用例参数化:@parameterized.expand断言:self.assertEqual(num1,c) @parameterized.expand([(1,2,3),(2,3,5),(100,200,300)]) def test_01(self,a,b,c): num1 = sum1(a,b)

2020-08-04 19:52:00 542

原创 理解包是selennium的正确打开方式

一、理解导包本质1.1、初见selenium-记得第一次接触selenium框架、映像特别深刻。咋一看,好长的一串英文,还以为导了好多好多个包呢。仔细一看,就一个包你给我搞这么长?心中一片草原飞过,记不住、记不住1.2、再见会怎样于是乎,带着沉重的心情,找到了python解释器文件夹下的XXXD:\python37\Lib\site-packages\selenium再见一见如故才三个文件,里面不会暗藏杀机吧!打开webdriver到相爱相杀还好还好,没有超过一页,打开

2020-07-30 20:08:16 179

空空如也

空空如也

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

TA关注的人

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