0%

背景

​ 公司的测试工具平台开发也快一年了,积累的功能也越来越多,最近刚好需要对测试用例平台模块的相关功能进行修改。 修改的过程真的是痛苦。。。虽然原来已经看过一遍clean code了,但时间久了又回到了老样子。。。

我们趟过代码的水域。我们穿过灌木密布、瀑布暗藏的沼泽地。我们拼命想找到出路,期望有点什么线索能启发我们到底发生了什么事;但目光所及,只是越来越多死气沉沉的代码。 一一 代码整洁之道

​ 整本书看完后,并不觉得所有的东西都一定要按照书中的来做,但有以下的一些经验还是可以参考和采纳的。

阅读全文 »

背景

​ 作为一名测试,对自己写的代码就更加需要保障质量了😂。。。但又不可能每次和业务一样,每次改动后都通过手工测试去覆盖,此时便想到了单测/接口来保障测试自己开发的功能。

​ 但现在互联网公司,不管是开发还是测试的代码的单测覆盖率普遍不高,或者说编写单测不是一个普遍的现象。 具体原因可以先来查看一段代码,实现的功能是:在指定的 Jenkins server 上根据用户自定义的参数来构建指定的Job任务,代码的格式如下:

1
2
3
4
5
6
7
8
9
def start_job(cls, job_name, server=None, params=None):
server = server or cls.server
params = params or dict()
status = cls.get_job_status(job_name, server)
if not status and cls.check_task_status(job_name, server):
server.build_job(job_name, parameters=params)
return "开始执行"
else:
raise ValueError("已存在正在执行中的任务, 请勿重复执行")
阅读全文 »

前言

多数人认为,一些人天生就有说话的天赋,而一些人则没有。事实上,并不存在说话的天赋这一说。善于交谈的人只不过是懂得一些简单的技艺而已,而这些技艺是可以通过反复练习而学会的。

​ 通过阅读完《谈话的力量》后,部分方法确实可以帮助缓解一些沟通中遇到的问题😂,比如:

  • 无法开始一段与陌生人的谈话;
  • 无法恰当的表达自己的想法;
  • 与别人交谈时,很容易产生矛盾和争吵。

在此进行一个读后感记录,方便后续回顾(虽然学到的技巧并没有立竿见影,但至少从某个程度上影响了自己的思维)。

阅读全文 »

背景

​ 平时编写Blog的时候,使用了 sm.ms 的免费图床(┑( ̄。。 ̄)┍ 咳咳咳,这个名字不要误解,是一个正经的图片管理工具😂,如果访问流量比较少的,免费版本就可以满足需求), 后来想在本地也定时备份下所有的图片,以便后续更换图床做不时之需。 于是想到了爬虫去爬取已有的图片并下载到本地。

解决方案

最终通过调研,发现存在以下两种方式(欢迎提出其他解决方案):

方案一:BeautifulSoup 爬虫

优点:可指定获取特定页面的 HTML 内容,然后通过解析 HTML 内容来获取所有图片的信息。

缺点:每次需要去更新请求中的 Cookie 信息来爬取对应的页面内容。

阅读全文 »

背景

为什么要看这本书??一一 在工作中,会存在以下的场景:

  • 公司高层或者领导在分享一些信息的时候,可能会有专门的提问环节。在这种时候,一个领导认为 “好” 的提问是一个表现自己的机会;
  • 领导在分配任务后,如果不做任何提问,按照自己的想法去完成工作,最后可能与上级的意图背道而驰,相当于白忙活一场。

基于以上的两个场景,可以发现有些时候 问一些恰到好处的问题 是一件比较重要软技能,于是开始看《学会提问》,但这个过程不像《小强升职记》那么顺畅,主要在于两个原因:

  1. 因为有部分章节实在是比较枯燥而且冗长(比如:第3、4章内容偏理论)┑( ̄。。 ̄)┍ 。。。
  2. 实际内容并不完全像我想象的是主要培养各种提问的技能,而较多的是培养批判性思维。

最终在坚持了2个月后终于完成了阅读以及总结,总的来说:还是有一些意外的收获

阅读全文 »

背景

​ 时隔了好好好几个月。。。继上次文章 初探Sqlmap(一)中立下的Flag:下一篇出sqlmap原理相关的介绍😂😂,由于各种原因。。。今天才终于完成了┑( ̄。。 ̄)┍ 。。不多说了。。。

什么是SQL注入?

​ 指在程序的输入数据中添加额外的SQL语句。就好比有一个登录输入框,在输入帐号的的输入框中,输入了 'arvin' or 1=1 ,对应到数据库层面,sql语句可能就如下实例:

1
2
3
4
5
# 正常的sql语句
select * from table_name where user_name = "arvin";

# 如果上述的输入框输入没有拦截,语句就变成了如下形式,多了额外的"or 1=1" 到查询的语句中就是sql注入了。
select * from table_name where name="arvin" or 1=1;
阅读全文 »

背景

​ 在使用接口自动化实践过程中,需要通过 Python3 + Jenkins 自动触发接口自动化脚本的JOB,过程中还涉及到通过 Parameter 参数去动态构建 JOB,在此总结下使用过程中遇到的问题以及方法。

使用方法 (官网

一、初始化 Jenkins 实例

1
2
# 此处的 password 可以通过使用 API Token 来替代, 避免密码泄漏。
server = jenkins.Jenkins(url, username=username, password=password)
阅读全文 »

背景

​ 在编写前端功能时候,最近比较频繁的使用了Element中的Table以及Dialog结合,这样可以方便对某一行的数据进行展示或者操作,具体效果如下(点击某行的查看,弹出对于该行的一个内容展示或者操作):

element-table-dialog卡顿-1.png

​ 但是随着表格的行数增加,会出现明显的卡顿现象,具体样式如下(并且能明显发现Dialog的边特别粗):

element-table-dialog卡顿-2.png
阅读全文 »

现象

​ 公司内部的接口自动化框架在一次pytest升级后,用例中的logging模块无法正常打印日志(原来logging.info可以正常打印日志到日志文件中,现在是不会输出到对应的日志文件中)。

存在的变更:原来使用 pytest==5.4.3 版本(后续称之为低版本)的时候,升级pytest后是6.2.3版本(后续称之为高版本)。

阅读全文 »

背景

​ 为什么写这篇话题呢,印象中是有次面试中,面试官问我是否了解 Flask 中的序列化与反序列化。由于自身的客观原因,当时对于该问题只能硬着头皮回答:不太了解乀(ˉεˉ乀) 乀(ˉεˉ乀) 。。。(个人觉得还是:基础知识不扎实)

​ 后来这个问题也一直没去关注。。。此次突然想起来后进行一下记录(同样的地方不要翻车两次┑( ̄。。 ̄)┍ )。

阅读全文 »