谈谈测试服务化

2019-08-02 14:51:16 浏览数 (1)

在这信息爆炸、物欲横流的现实社会中人难免会浮躁,有很多测试同行会觉得测试没价值或者没太大价值,还经常会调侃自个只会点点点。冷静下来思考下真的没有价值吗?

看似都是点点点,为什么别人那样点就会发现比较关键的缺陷,我那样点却发现不了,这其实就是对测试人员基本功的考核(测试设计、测试策略等)。我们也是能从数据分析层面(发现缺陷数、缺陷类型、缺陷严重等级等)来对测试人员的基本功进行相对客观的考核与验证的。所以浮躁的时候是不是可以先思考下这些基本功我掌握扎实了吗?现在是该我浮躁的时间点吗?

当我们做到了哪里不对点哪里的时候的确是应该多去思考下如何更大程度去体现自己的价值,但切勿忘记的前置条件满足的重要性,别本末倒置了。

现在也是各种概念横飞的时代,5G、云计算、DevOps 等等,每天都充斥在我们耳边,我们在本职工作做好的情况下该选择哪个方向、从哪个点切入呢?

很多情况下之所以会有选择焦虑症其实在于不清楚自己想要什么,如果清楚了自己想要什么其实选择起来就简单了,回到我们最开始的话题,我们不是经常纠结于测试岗位的价值吗,所以我们的关注点其实就是价值体现,明确了想要的是这个,那么选择其实就简单了,不管是哪个方向,只要能更大的体现岗位的价值,whatever,都ok的。

做的东西如果使用的人多了自然价值就会变大,所以将测试服务化是个不错的尝试方向。测试服务化不但可以让测试自身使用比较便捷同时也可以让开发同学使用,乃至可以推广到更多的群体,运用范围广最后可以成为重要的基础的设施服务。

现在我们简单介绍下测试服务化的一个简单实践尝试。

1

安装OCR依赖的python库

我们就来简单介绍下如何将一个测试用的OCR封装成一个服务来使用。

会依赖到pytesseract和Pillow这两个库,我使用的是python 2.7的版本,可以执行如下命令进行库安装:

代码语言:javascript复制
pip install  pytesseract Pillow

接着还需要安装tesseract,根据操作系统选择对应的安装方式,参照如下wiki链接进行安装

https://github.com/tesseract-ocr/tesseract/wiki

2

编码测试

现在编写个代码测试下是否可以从图片中提取出文字,代码如下:

代码语言:javascript复制
try:
   from PIL import Image
except ImportError:
    import Image
import pytesseract
def ocr(filename):
    text = pytesseract.image_to_string(Image.open(filename))
    return text
print(ocr('a.png'))

准备如上代码里的png文件,然后执行下这个python文件看下是否能输出图片上的文字,如图片是这样的

执行完可以看大对于这种简单的图片还是可以成功提取出文字的,如下截图所示(这个库识别成功率不是很高):

3

测试服务化实施

上面的测试通过后为了让这个ocr测试服务让更多的人便捷的使用到可以考虑将这个功能封装成一个接口的形式,这样调用者和只需提供一张图片就可通过这个服务来获取图片上的文字。

可以借助Flask来搭建web服务,执行如下命令进行安装:

代码语言:javascript复制
pip install Flask

封装如下测试服务来提取图片文字:

代码语言:javascript复制
import os
from flask import Flask, render_template, request
try:
   from PIL import Image
except ImportError:
    import Image
import pytesseract
UPLOAD_FOLDER = '/static/uploads/'
ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg'])
app = Flask(__name__)
def allowed_file(filename):
    return '.' in filename and 
           filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/')
def home_page():
    return "Hello World!"
@app.route('/upload', methods=['GET', 'POST'])
def upload_page():
    if request.method == 'POST':
        file = request.files['file']
        if file.filename == '':
            return 'The file upload was not valid image!'
        if file and allowed_file(file.filename):
            text = pytesseract.image_to_string(Image.open(file.filename))
            return text
if __name__ == '__main__':
    app.run(debug=True,host='65.49.207.50',port=5000)

假如将这个文件命名为start.py,执行如命令即可启动这个测试服务:

代码语言:javascript复制
python start.py

服务启动后,就可以通过curl指令上传个图片验证是否可以提取出文字了,curl指令如下:

代码语言:javascript复制
curl http://65.49.207.50:5000/upload -F "file=@/mnt/c/Users/yangzw/Desktop/a.png"

查看如下返回是可以抽取出文字的:

到这里我们已经完成了这个小功能的测试服务化工作了,后续相关人员需要用到这个服务的话只需要调用下这个暴露出来的接口即可,无需什么其他依赖。

以上是对测试服务的一点小实践,实际的测试服务化业务逻辑会复杂不少,希望可以给你带来抛砖引玉的作用~

长得帅的的都会扫描关注如下微信公众号哦~

0 人点赞