提升工作效率实用小脚本
测试开发定义:测试开发工程师的主要工作内容是根据项目的特点来开发一些测试工具,从而能够更有效地进行测试,提高软件产品的质量。
所以想要成为一名合格测试开发,需要不断提升自己代码和学习的能力,我导师说过,测试开发就是为其他测试提供工具,提升个人和其他测试人员的工作效率。只要工作中觉得有一件事会经常影响工作效率,这时候就需要测试开发来找一些或者自己来开发提升效率的工具,下面是我自己在工作中提升效率找的或开发的一些小小的工具。
自动生成文件大小
需求背景,我们公司所做的产品是一个面向企业的大数据平台,既然是测试数据平台,一些测试数据是必须的,其中有一项,上传文件大小限制,这个测试边界值的时候真的很煎熬,找一些固定大小的文件十分麻烦,基于需求,就写了个小脚本,就轻松完成。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import os
import random
def genSizeFile(fileName, file):
#file path
filePath="Data"+fileName+".txt"
# 生成固定大小的文件
# date size
ds=0
fileSize = file * 1024 #文件大小乘以1024
with open(filePath, "wb") as f: #写入文件
while ds<fileSize:
f.write(str(round(random.uniform(-1000, 1000),2))) #写入随机数字
f.write("\n") #写完换行
ds=os.path.getsize(filePath)
# print(os.path.getsize(filePath))
# start here.
genSizeFile("100M",100)
通过一些简单的代码就能轻松解决测试过程中头皮发麻的问题
对比接口文档
需求背景:我们公司产品比较特殊,前端与后端连接之间加了一套网关系统,就是前端将请求发送到网关,再由网关发送到后端去请求,从而保证后端的安全,所有的接口都放在网关上。网关也分为测试网关和线上网关,针对于私有化部署的还有私有化网关,假如网关配置接口有问题,服务就会出现问题,所以每次发布老是出现各种因为网关接口配置出现的问题,针对这个问题,写了一个脚本。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import json
test_all = ["/Users/dtwave/Desktop/dev_dubhe0710002600.json"]
xs_all = ["/Users/dtwave/Desktop/prd_dubhe0710002907.json"]
zsw = 0
for test in test_all:
xs = xs_all[zsw]
f = open(test, 'r')
a = f.read()
dict_a = json.loads(a)
list_a = dict_a.get("apis")
f = open(xs, 'r')
b = f.read()
dict_b = json.loads(b)
list_b = dict_b.get("apis")
zsw = zsw + 1
for j in list_a:
test_version = j["version"]
test_path = j["path"]
test_httpmethod = j["httpMethod"]
test_serviceCode = j["serviceCode"]
test_cateCode = j["cateCode"]
test_mappingProtocol = j["mappingProtocol"]
test_isOnline = j["isOnline"]
test_useMock = j["useMock"]
test_isCached = j["isCached"]
if j["mappingProtocol"] == "DUBBO":
test_prxy = j["proxyInfo"]
test_dubboInterface = test_prxy["dubboInterface"]
test_dubboVersion = test_prxy["dubboVersion"]
test_dubboMethod = test_prxy["dubboMethod"]
test_dubboGroup = test_prxy["dubboGroup"]
for s in list_b:
if s["version"] == test_version and s["path"] == test_path and s["httpMethod"] == test_httpmethod and s["serviceCode"] == test_serviceCode:
if test_mappingProtocol == s["mappingProtocol"]:
if test_isOnline == s["isOnline"]:
if test_useMock == s["useMock"]:
if test_isCached == s["isCached"]:
if test_mappingProtocol == s["mappingProtocol"]:
xs_prxy = s["proxyInfo"]
if test_dubboInterface == xs_prxy["dubboInterface"]:
# if test_dubboVersion == xs_prxy["dubboVersion"]:
if test_dubboMethod == xs_prxy["dubboMethod"]:
if test_dubboGroup == xs_prxy["dubboGroup"]:
break
else:
prn_10 = s["name"].encode("utf-8")
print ("{}dubboGroup不一致".format(prn_10))
break
else:
prn_9 = s["name"].encode("utf-8")
print ("{}dubboMethod不一致".format(prn_9))
break
# else:
# prn_8 = s["name"].encode("utf-8")
# print ("{}dubboVersion不一致".format(prn_8))
# break
else:
prn_7 = s["name"].encode("utf-8")
print ("{}dubboInterface不一致".format(prn_7))
break
else:
prn_6 = s["name"].encode("utf-8")
print ("{}mappingProtocol不一致".format(prn_6))
break
else:
prn_5 = s["name"].encode("utf-8")
print ("{}isCached不一致".format(prn_5))
break
else:
prn_4 = s["name"].encode("utf-8")
print ("{}useMock不一致".format(prn_4))
break
else:
prn_3 = s["name"].encode("utf-8")
print ("{}isOnline不一致".format(prn_3))
break
else:
prn_2 = s["name"].encode("utf-8")
print ("{}mappingProtocol不一致".format(prn_2))
break
else:
prn_1 = s["name"].encode("utf-8")
print ("{}生产环境不存在不一致".format(prn_1))
break
if j["mappingProtocol"] == "HTTP":
for i in list_b:
if i["version"] == test_version and i["path"] == test_path and i["httpMethod"] == test_httpmethod and i["serviceCode"] == test_serviceCode :
if test_mappingProtocol == i["mappingProtocol"]:
if test_isOnline == i["isOnline"]:
if test_useMock == i["useMock"]:
if test_isCached == i["isCached"]:
break
else:
prn_1 = i["name"].encode("utf-8")
print ("{}isCached不一致".format(prn_1))
break
else:
prn_2 = i["name"].encode("utf-8")
print ("{}useMock不一致".format(prn_2))
break
else:
prn_3 = i["name"].encode("utf-8")
print ("{}isOnlinel不一致".format(prn_3))
break
else:
prn_4 = i["name"].encode("utf-8")
print ("{}mappingProtocol不一致".format(prn_4))
break
else:
prn = j["name"].encode("utf-8")
print ("{}生产环境该接口不存在".format(prn))
通过该脚本,只需要将二个不同环境的网关接口导出来反正本地,再运行脚本,会将接口配置哪一个接口不同,接口的哪一项不同,接口存在不存在都会通过脚本对比出来,提高工作效率。
以上只是针对于工作的一些脚本示例,其他还有一些就不一一列举。主要的就是明白,脚本是提升工作效率的工具,同时脚本来源与于工作,在工作中要有需要写脚本的就要立马去做,也可以找同事讨论,看看有没有困扰的问题,思考利用脚本来解决问题。这样的话会很高效提升自己的代码能力,同时也提高自己或者同事的工作效率,再加以推广给同事使用,想不升职都难。