![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术
文章平均质量分 79
boweiqiang
接口测试,自动化测试,性能测试,测试工具开发,持续集成,项目管理
展开
-
springboot多模块工程单元测试jacoco统计代码覆盖率总结
每个模块都这么配置的话,生成的报告是各自独立的,即会生成3个报告,那么怎么把各个模块的代码覆盖率统计在一起,生成一个聚合的报告呢?jacoco在prepare-agent阶段会生成一个属性指向jacoco的runtime agent,默认这个属性叫argLine,我们需要在maven-surefire-plugin的配置中,引用这个属性(当然我们也可以自定义这个属性的名字,那么就需要在maven-surefire-plugin的配置中引用我们自定义的属性名)原创 2023-01-05 15:06:40 · 5926 阅读 · 8 评论 -
非对称加密RSA公私钥pkcs1与pkcs8格式的转换
PKCS1是一把钥匙,PKCS8就是把这个钥匙放到一个盒子里,并在盒子上贴个标签对这把钥匙做了说明,比如采用的是什么算法,密钥长度等,所以PKCS8不仅仅支持RSA算法,还支持其他算法的密钥。最早openssl生成的公钥私钥默认都是pkcs1格式的,但是在后来的版本中,公钥默认为了pkcs8格式(私钥还是pkcs1格式,或许是为了迎合java吧,个人猜测)#通过ssh-keygen生成的私钥是pkcs1格式,但公钥是ssh特有格式(不是pkcs8也不是pkcs1)原创 2021-04-30 21:30:08 · 10796 阅读 · 3 评论 -
jmeter中用beanshell实现动态获取请求body进行加签
在jmeter压力测试的脚本编写时,经常会遇到接口中需要对请求体加生签的情况,这个时候可以用beanshell PreProcessor来实现对请求体的加签,但是有一点,就是需要我们拿到每个请求的body,如我们把每个请求的body都放到beanshell中,那么我们需要在每个请求(sampler)中都要添加一个beanshell,这样就有很多重复的工作要做,那么有没有办法能够动态的获取请求body,这样就可以只写一个beanshell前置处理器,然后就可以针对所有的请求实现加签?这里我做了一个demo..原创 2021-03-01 11:23:02 · 3689 阅读 · 0 评论 -
深入探讨:数据驱动测试(DDT)与关键字驱动测试(KDT)
关键字驱动测试框架是当前比较流行的一种框架之一,并且现在的自动化测试工具QuickTestProfessional已经将关键字驱动框架融入到工具中。那么究竟什么是关键字驱动测试,它与数据驱动测试有何区别?让我们来深入探讨一下这个话题数据驱动测试数据驱动的自动化测试框架是这样的一个框架,从某个数据文件(例如ODBC源文件、Excel文件、Csv文件、ADO对象文件等)中读取输入、输出 的测试数据,然后通过变量传入事先录制好的或手工编写的测试脚本中。其中,这些变量被用作传递(输入/输出)...原创 2021-01-19 23:45:18 · 4622 阅读 · 1 评论 -
插入排序法的两种实现
插入排序法的实现,这里做了两种实现(思想是一样的):一种是从前向后排,把后面的无序序列,插入到前面的有序序列 一种是从后向前排,把前面的无序序列,插入到后面的有序序列废话不多说,直接上代码,下面代码已经经过调试,拿过去可以直接运行:#!/usr/bin/env python# -*- encoding: utf-8 -*-'''@File : sort_by_insertion.py @Contact : buweiqiang@civaonline.cn@MTime : 202.原创 2020-12-22 10:37:47 · 380 阅读 · 0 评论 -
pkcs5 padding和pkcs7 padding的区别
pkcs5 padding和pkcs7 padding都是用来填充数据的一种模式。在ECB中,数据是分块加密的。如果需要加密的数据的字节码的长度不是块大小的整数倍就需要填充。使用PKCS5,填充时:要填充7个字节,那么填入的值就是0×7;如果只填充1个字节,那么填入的值就是0×1;恰好8个字节时还要补8个字节的0×08正是这种即使恰好是8个字节也需要再补充字节的规定,可以让解密的数据很确定无误的移除多余的字节。PKCS7和PKCS5的区别是数据块的大小;PKCS5填...原创 2020-11-20 18:51:42 · 18710 阅读 · 1 评论 -
记一次配置jenkins实现android app自动打包
1. 不能下载依赖包替换build.gradle中的repo地址为国内镜像地址,解决依赖包下载失败的问题maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }maven { url 'https://maven.aliyun.com/repository/google' }maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }mav原创 2020-11-14 05:37:55 · 605 阅读 · 0 评论 -
记一次使用pycharm自带的命令行终端进行rebase导致的crlf转换为lf
问题描述:经历过一次针对Windows server的.net项目,在更改配置文件提交后并部署到服务器,导致服务启动失败,报错为加载配置文件失败,但是仔细对比和服务端和本地的配置文件 ,没有任何区别,然而本地是可以正常启动的,这就头疼了最终通过对比工具发现,本地与服务端的文件的不同之处是换行符不一样:解释:windows下的换行符为crlf(即\r\n),liunx和mac系统的换行符为lf(即\n)怀疑有可能是因为配置中的core.autocrlf=ture导致的,意...原创 2020-08-25 19:14:58 · 1018 阅读 · 0 评论 -
记一次nginx代理转发127.0.0.1引起的cookie未写入
公司有平台地址:a.civaonline.cn,部署了一个新的服务,分配域名:b.civaonline.cn为了实现sso登录服务,需要将token写入到一级域名*.civaonline.cn下,即统一在a.civaonline.cn登录,登录成功后将token写入cookie,这样在访问b.civaonline.cn时,就可以带上token自动验证通过,无需再次登录测试环境验证通过,但在发布到预发环境时,遇到了一个头疼的问题:预发环境在a.civaonline.cn登录成功后,访问...原创 2020-06-10 17:31:41 · 950 阅读 · 3 评论 -
jwt的解密和RSA签名验证
#!/usr/bin/env python# -*- encoding: utf-8 -*-'''@File : jwt_base64_test.py@Contact : buweiqiang@civaonline.cn@MTime : 2020-04-26 11:32 @Author: buweiqiang@Version: 1.0@Desciption:标准的Base64并...原创 2020-04-26 18:46:45 · 4001 阅读 · 2 评论 -
接口安全:谈谈加密与签名的区别
非对称加密算法(如RSA),正确的使用方法是公钥加密,私钥解密。最近与三方合作伙伴对接接口安全方案,遇到一个同事跟我说,我们应该存储私钥,数据用私钥加密,公钥给三方,三方用公钥解密。我说不对,他给我看示例代码,里面明明是私钥加签,公钥验签。这种的误解,不仅造成了沟通上的困难,而且可能会导致接口设计并没有达到预设的安全目的。所以这里想专门讲一下加密与签名的区别加密:对一段明文进...原创 2020-04-24 18:11:40 · 10653 阅读 · 10 评论 -
Datetime转Datetimeoffset引发的对timezone和offset的认识:时区不等于本地时间与UTC时间的偏移
//C#中DateTime类型转为DateTimeOffsetDateTime thisDate = new DateTime(2020, 4, 19, 0, 0, 0);TimeSpan offset = new TimeSpan(-6, 0, 0);DateTimeOffset thisTime = new DateTimeOffset(thisDate, offset);...原创 2020-04-20 02:27:58 · 3188 阅读 · 1 评论 -
微信支付商户平台的apikey与公众平台的appsecret的区别
微信支付的接入流程比支付宝要烦锁,坑多,配置和调试起来都很麻烦。昨天在配置三方商城的微信支付时,需要用到appsecret,但appsecret是微信公众平台的东西,在微信公众号相关开发时才会用到,跟商户平台的apikey完全是两个概念,所以一定要做好区分,避免混淆。经过我的一翻折腾,各种百度和我司的开发代码,可以这么理解:appid是在公众平台注册公众号,小程序或开放平台注册应用时...原创 2020-04-15 19:10:08 · 5978 阅读 · 2 评论 -
解决Selenium在chrome中播放视频报错:play() failed because the user didn't interact with the document first.
用selenium在chrome浏览器中自动化播放html5中的视频时,遇到如下报错:ErrorTraceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartE...原创 2020-03-17 10:14:59 · 2808 阅读 · 2 评论 -
seleniumUI自动化chromedriver下载地址
selenium做UI自动化,如果浏览器是chrome,则需要下载对应chrome浏览器版本的chromedriver版本,下面提供两个地址:http://chromedriver.storage.googleapis.com/index.htmlhttp://npm.taobao.org/mirrors/chromedriver/...原创 2020-03-16 16:53:34 · 351 阅读 · 0 评论 -
sql连接查询:join, left join , right join, inner join, outer join
JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。这里描述先甩出一张用烂了的图,然后插入测试数据。 测试数据表: CREATE TABLE t_blog( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(50), typeId INT);INSERT IN...转载 2020-03-11 14:47:17 · 317 阅读 · 0 评论 -
信息安全:关于收发室的故事
某集团公司的收发室,经历了大概这么几个阶段。第一阶段,初如阶段,甚至都不能叫收发室,其实就是一张桌子,信件都乱放在一起,任何人都可以过来找自己的信件,找到了就拿走。信件丢失的情况时有发生,这引起了公司的注意。第二阶段:保安看守,总部及各公司都增添了一个保安,有保安看着点,确实比以前好点了,但保安并不认识所有的人,有的人也会替别人拿,还是会丢东西。第三阶段:信箱上...原创 2020-03-02 23:36:50 · 280 阅读 · 0 评论 -
Shell 通过#和%截取变量
使用变量操作符 ${}1、单个#符:截掉左侧,非贪婪匹配${var#*.}该方式是从左开始第一次匹配到字符".",然后截掉左边内容(包括字符"."),返回余下右侧部分。$ var=/dir1/dir2/file.tar.gz$ echo ${var#*.}tar.gz2、双#符:截掉左侧,贪婪匹配${var##*/}该方式是从左开始最大化匹配到字符"/...原创 2020-01-22 11:07:03 · 381 阅读 · 0 评论 -
Shell 用ls查找文件和目录
查找所有目录ls -F | grep "/$"-F 文件类型(File type)。表示在每一个列举项目之后添加一个符号来标记文件类型。/ 表明是一个目录; @ 表明是到其它文件的符号链接; * 表明是一个可执行文件ls -l -F /usr/lib部分结果如下:-rw-r--r-- 1 root wheel 159264 7 4 2018 li...原创 2020-01-22 10:59:50 · 5086 阅读 · 0 评论 -
jenkins发送的html邮件中保留显示文本中的换行
在发送邮件的jenkins工程中,邮件内容中有一段版本说明是用户输入的文本,为了支持多行描述,用的是jenkins的文体参数,但是调试时发现输入的多行文本在邮件中被显示成了一行。如下为最后一行的html模板<tr height="21"> <td align="left" class="xl67" height="42" rowspan="2" ...原创 2020-01-17 17:41:45 · 1522 阅读 · 0 评论 -
用jacoco统计代码覆盖率:不依赖ant的解决方案
参考网上的教程,用jacoco统计代码覆盖率,需要用到jacoco和ant,我原来的计划也是jacoco和ant的方案,后来研究发现其实不用ant也可以实现,省去了ant的安装和配置,更加灵活方便。相关软件下载:Sudo Wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/ap......原创 2019-12-13 17:45:19 · 2191 阅读 · 2 评论 -
自动化测试框架基石工程
介绍https://github.com/buweiqiang/AutotestCornerstone此工程取名叫AutotestCornerstone,意在于提供一个自动化测试的基础框架工程,其中包含了众多的自动化测试需要用到的基础功能,下载下来编写测试用例即可,解决了入门同学不知道如何设计测试框架的痛苦。有能力的同学可以在此基础框架的上进行一些修改,以符合自己所在公司和团队的需求。主要...原创 2019-12-05 15:39:15 · 820 阅读 · 0 评论 -
从工作杠杆率引申至对软件工程质量控制的思考
前几天读到一篇文章:为什么中国的 996 干不过美国的 955 (文未有链接)看过后有些感触,也进行了一些思考,由此引申到软件工程的质量控制,下面把自己的一些相法记录下来文中提到的一些观点,我是比较认同的关于工作的杠杆率,即单位工作时间产出的价值:业务如果靠销售驱动,杠杆率最低,运营其次,产品最高。所以你去看销售驱动的公司,往往有很多人,但是人均产值很低,比如地产,软件...原创 2019-11-22 18:58:03 · 187 阅读 · 0 评论 -
持续集成方案调研
要做持续集成,其实就是回答下面几个问题:什么是持续集成? 为什么要做持续集成? 我们的持续集成方案?第一个问题:什么是持续集成? 与持续集成相关的,还有两个概念,分别是持续交付和持续部署。持续集成指的是,频繁地(一天多次)将代码集成到主干。持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。持续部署(continu...原创 2019-10-25 12:07:36 · 396 阅读 · 0 评论 -
Appium Mac环境搭建 Android SDK
1. 安装JDK(安装Android SDK需要先安装JDK)具体如何安装不说了,网上太多文章2. 安装Android SDK(mac)首先,下载android sdkfor mac,解压到某个目录官网下载地址:https://developer.android.google.cn/studiomac下推荐用homebrew安装android sdkbrew cask...原创 2019-10-24 12:31:59 · 807 阅读 · 0 评论 -
自动化测试之前,需要先谈谈质量和效率
测试的目的是保障质量,质量是效率的前提(非常重要)从发展的角度看公司对质量和效率的重视程度公司在初创阶段更注重效率:试错阶段,可以犯错误,100件事,犯错99次,1次成功即可 依赖个人和团队的能力公司在发展阶段会越来越重视质量:开始控制流程,减少犯错 从依赖个人能力到依赖有效的管理,减少个人犯错的影响 需求评审 Design review Code review ...原创 2019-12-05 15:30:26 · 666 阅读 · 0 评论 -
缺陷管理:不予修复和设计如此的区别:
引发问题:“设计如此”和“不予修复”的bug都是决定了不修的,那么用“设计如此”不就行了吗?不予修复:代表是bug,但是决定不予处理的问题 (白话:确实是个问题,但我就是这么任性,就是不修,不仅现在不修,就是以后也不打算修)例如:某些非常轻微的bug,但不影响功能使用的,或虽然对功能有影响但是仍然通过其他途径解决的,可以解决为不予修复“不予修复”与“设计如此”的区别:不予修复的前提...原创 2019-10-21 18:16:42 · 1333 阅读 · 0 评论 -
缺陷管理:说一说bug的状态和解决方案
经历过几家创业公司,发现大部分测试和开发人员,包括项目经理,对于bug状态与解决方案竟然傻傻分不清楚,导致bug管理与统计上的混乱,在费尽了我的三寸不烂之舌团队成员解释之后,索性将这个问题做个整理写下来,希望对这些基本概念有所普及,现在大部分测试人员只关心学习高大尚的自动化测试,性能测试技术,却对一些基本概念的理解却是模糊不清,甚是让我感到担忧,希望本文对于入行测试的初学者,以及已经走在成长路上的......原创 2019-10-21 18:14:39 · 6750 阅读 · 1 评论 -
解决Jenkins中无法展示HTML文件样式的问题
通过HtmlRunnerCN.py执行自动化测试生成的Html报告,在jenkins中查看时,会丢失其样式。原因是因为jenkins的安全设置默认不允许js脚本和css样式的执行。解决方法为:在script console中执行如下脚本:System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”,“sandbox allow-...原创 2019-08-29 17:03:16 · 2818 阅读 · 1 评论 -
敏捷讨厌计划吗?
创业公司希望:快,抢占市场互联网公司讲究:快速行动,不要光想不做,要勇于实践。在工作当中,有些领导经常会将「创新」、「快速」....这些词挂在嘴边,听起来这些词显得非常光荣正确伟大。但这些词有可能正在将很多创业公司导向一个危险之地。问题是真的快了吗?快有没有带来价值?做出来的东西用户不想用,线上问题频出,开发人员面临无数次的推翻重做,频繁的变动导致产品,开发,测试三方理解不一致,遗...原创 2019-08-29 16:50:26 · 192 阅读 · 0 评论 -
自动化测试的未来
自动化测试能做什么?自动化测试会取代手工测试吗?这恐怕是每个测试同学都曾经思考过的问题,这里我结合我的个人经历,讲讲我对这两个问题的思考。个人简历就职公司公司类型特点工作年限自动化技术成长阶段成长心得微软(外包)软件产品外企,行业巨头5年c#,UI自动化成为公司需要你成为的人感谢微软提供的平台,利用平台迅速成长,别让自己离开平台后一文不值去哪...原创 2019-06-18 11:56:20 · 480 阅读 · 0 评论