0%

前言

前一段时间(很久之前了😳)弄了sonarQube以及如何开发自定义规则,在之前一直也没有去接触过。于是兴致勃勃的到网上一顿搜索的骚操作,本地的sonarQube就搭建好了,并且通过sonar自带的规则扫描自己的项目发现了一些问题。就在我准备更进一步去学习如何进行自定义规则开发的时候,碰坑了。。。

在网上查了很多关于sonar自定义规则开发的资料,其内容都大同小异,介绍如何搭建sonarQube环境几乎占了80%或者更高,仅仅少数是进行最简单的开发环境demo介绍(其中包括如何创建规则,以及规则的一些相应配置), 但对于更深入的如何去开发一个规则以及内部原理的文章比较少(可能关键词不当),于是乎。。。为了记录学习的过程便有了这篇文章,希望对于初入学习sonar 自定义规则开发的小伙伴有一定的帮助。

阅读全文 »

背景

​ 团队准备开发QA工具平台,一方面锻炼编程能力,一方面是提高团队的工作效率,如可测性、数据构造等(避免仅仅是写一些重复的接口用例)。团队成员的现状如下:

  • 比较熟悉的是Python语言;
  • 以前基本没有工具平台的开发经验。

根据上述的背景来看,在进行整体技术栈选型的时候以下两点比较重要。

  • 上手速度要快;
  • 社区比较活跃,相关文档比较多。
阅读全文 »

​ 记录下 Shell 中常见的几种 判断字符串A是否包含字符串B的方法。

阅读全文 »

背景

​ 在大部分的编程语言中都支持 “键值对” 的这种数据结构,比如:Python中的dict、Java中的HashMap等等。对于Shell中实际也是存在类似的这种用法,也就是 “Shell关联数组“。

​ 刚好最近在写Shell脚本的时候使用了该功能,便进行相关使用方法以及注意点的记录。

阅读全文 »

背景

​ 在使用Jmeter进行一些高并发的压测时候,请求参数重需要构造唯一的订单ID。

​ 开始时使用了 ${__Random(100000,999999,)} 以及 __time() 的组合来生成唯一订单ID,但由于TPS较大的情况下,最终导致了出现重复订单ID😂。。。

于是梳理了下后续可能压测的场景,根据此方案制定了最终的解决方案。后续可能压测的场景如下:

  • 场景一:一个线程组中存在多个线程并发生成唯一ID;
  • 场景二:多个线程组 + 每个线程组中是多个线程并发生成唯一ID;
  • 场景三:多个Jmeter脚本 + 多个线程组 + 每个线程组中是多个线程并发生成唯一ID;
阅读全文 »

背景

​ 最近在搭建混沌工程所需要的专项测试环境,原来一般都是直接通过 nohup + & 的方式,但该方式存在一个问题,如果由于服务器重启或者进程被kill掉了,那这个时候就需要再手动的去启动相应的进程。 这样对于只有一两个进程来说还好,但对于需要维护很多台虚拟机或者很多进程的时候则会比较繁琐。所以便牵扯到守护进程一一Supervisor

阅读全文 »

背景

​ 公司开始推荐相关阅读书籍,其中有一本书的要求是:“针对该行业的入门级必读书籍”,回头一看自己看过很多相关测试的书籍(囫囵吞枣模式┑( ̄。。 ̄)┍ ),但确实没法一下说出来哪本书属于入门级必读书籍(毕竟自己刚进入测试行业的时候,完全是来靠自己摸爬滚打,在整个工作经验中慢慢的阅读相关书籍😂,当时也没有想到要针对性的指导自己去学习测试这门技术)。

入门级人群的定义

​ 入门级必读书籍面对的人群我个人认为大概画像是:从未接触过测试或刚进入测试行业的人群(不一定工作年限为0,可能存在其他领域转到测试行业)。

阅读全文 »

背景

​ 最近比较频繁的在虚拟机上搭建环境,由于默认虚拟机上都是部署的 Python2,所以涉及到了 Python3.7 的安装,此处进行一个过程的记录,方便后续的查看。

系统环境

1
2
3
4
5
[root@41c0abcd92d8 tools]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

[root@41c0abcd92d8 tools]# uname -a
Linux 41c0abcd92d8 5.10.47-linuxkit #1 SMP Sat Jul 3 21:51:47 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
阅读全文 »

背景

​ 在一次处理Python中List长度为5W+的特殊场景中,发现函数执行时间很长,大概花费了8秒,明显与平时的执行时间存在较大差距(几乎是毫秒级别)。通过Debug后发现具体耗时较多的代码如下:

1
2
3
4
while len(nums) > 0:
first_num = nums.pop(0) # 最终定位到原因在该行代码
# 对 first_num 进行一系列的处理
...

通常情况下,调用pop()与pop(-1)的时间复杂度都为1,但pop(N) (0<=N<len(list)-1)的时间复杂度却是 N。所以硬生生的把一个原本时间复杂度只有O(n)的变成了O(n2)。

阅读全文 »

背景

​ 最近正在风风火火的弄混沌工程😂,在弄到网络延迟、丢包的故障注入时,需要进行故障验证。如果仅仅是网卡层面的话,直接通过 ping 的方式即可,但现在需要的是知道具体某个 IP + PORT 的延迟。

​ 还好在这百试不厌的GOOGLE下,找到了一个小众工具 一一 paping,比较好的解决了我的问题,下面先配一个效果图。

paping_linux.jpg
阅读全文 »