一种用于APP测试中验证码自动输入的方法及系统与流程

文档序号:16608453发布日期:2019-01-14 21:21阅读:540来源:国知局
一种用于APP测试中验证码自动输入的方法及系统与流程

本发明涉及图像识别技术领域,尤其涉及一种用于app测试中验证码自动识别输入的方法及系统。



背景技术:

目前很多app应用在登录的时候除需要输入用户名和密码以外,还需要人工输入验证码,其是一种用于区分用户是计算机还是人的公共全自动程序。验证码可以有效防止黑客利用计算机程序暴力破解密码、刷票、论坛灌水等非法操作,因此验证码是目前很多app使用地一种保障安全性的方式。由于计算机的识别能力有限,例如只能够识别数字而不能够识别图片,故图像验证码相对于数字验证码具有更高的安全性,能够有效阻止计算机程序的恶意登陆。

同时,随之而来的是,图像验证码将会给app的自动化测试过程带来诸多不便,由于传统的自动化测试框架,如selenium、appnium、robotium等不具备图像识别功能,因此采用传统的自动化测试框架将会阻碍app的正常测试,现有的做法是,在自动化程序测试过程中遇到图像验证码时,需通过测试人员的手别识别输入跳过此阶段,可见,其严重制约了app自动化测试的效率。



技术实现要素:

本发明的目的在于提供一种用于app测试中验证码自动输入的方法及系统,能够解决现有的app自动化测试过程中,无法针对图像验证码自动识别输入的问题。

为了实现上述目的,本发明的一方面提供一种用于app测试中验证码自动输入的方法,应用于app自动化测程序中,其特征在于,所述方法包括:

获取app自动化测试程序中待输入的图像验证码;

对所述图像验证码灰化处理,得到灰度图像验证码;

基于所述灰度图像验证码计算最佳阈值,并根据最佳阈值对所述灰度图像验证码二值化处理,形成二值化图片;

识别并提取所述二值化图片中的关键字符串;

将所述关键字符串输入app自动化测试程序,完成图像验证码的自动输入。

优选地,获取app自动化测试中待输入的图像验证码的方法包括:

监测app自动化测试程序的进程;

在当前进程处于验证码输入步骤时,获取app当前界面截图;

基于所述界面截图中验证码显示位置信息,提取图像验证码。

优选地,对所述图像验证码灰化处理,得到灰度图像验证码的方法包括:

获取所述图像验证码中各像素对应的坐标值及rgb三原色值;

根据各像素对应的坐标值及rgb三原色值,采用灰度变换公式计算该像素的灰度变换值;

基于各像素的灰度变换值,得到灰度图像验证码。

示例性地,所述灰度变换公式为:

f(i,j)=0.3*r(i,j)+0.59*g(i,j)+0.11*b(i,j),其中,r(i,j)、g(i,j)、b(i,j)对应表示同一坐标像素对应rgb三原色值。

较佳地,基于所述灰度图像验证码计算最佳阈值,并根据最佳阈值对所述灰度图像验证码二值化处理,形成二值化图片的方法包括:

基于所述灰度图像验证码的图像信息,采用大津算法计算最佳阈值;

分别将各像素的灰度变换值与最佳阈值做差值运算,运算值为正的像素归纳为非验证码字符像素集合中,运算值为负的像素归纳为验证码字符像素集合中;

将非验证码字符像素集合中的各像素设置为白色,以及将验证码字符像素集合中的各像素设置为黑色,得到二值化图片。

可选地,识别并提取所述二值化图片中的关键字符串的方法包括:

使用tesseract工具识别所述二值化图片,并提取其中的关键字符串。

进一步地,在步骤将所述关键字符串输入app自动化测试程序,完成图像验证码的自动输入之后还包括:

将提取的关键字符串与app当前界面截图中的实际验证码字符串比对,统计识别偏差率,并反馈至测试人员统计分析。

与现有技术相比,本发明提供的用于app测试中验证码自动输入的方法具有以下有益效果:

本发明提供的用于app测试中验证码自动输入的方法,通过监控app自动化测试程序中的图像验证码输入进程,并在图像验证码输入阶段,采用截图方式获取页面中待输入的图像验证码,然后对图像验证码灰化处理,去除图像验证码中的彩色元素和其他干扰元素,得到便于识别的灰度图像验证码,接着为了提高了验证码文本信息的识别度,还需对灰度图像验证码进行二值化处理,使其形成黑字白底的二值化图片,然后利用图像识别技术提取二值化图片中的文本信息,得到验证码对应的关键字符串,并将其输入app自动化测试程序,完成图像验证码的自动输入。

可见,使用本发明提供的用于app测试中验证码自动输入的方法,能够自动的识别app测试进程中出现的图像验证码,并对其中的关键字符串实现精准提取和自动输入,解决了现有技术针对图像验证码需要人工识别和手动输入的缺陷,极大的提高了app的测试效率。

本发明的另一方面提供一种用于app测试中验证码自动输入的系统,包括:

获取单元,用于获取app自动化测试程序中待输入的图像验证码;

灰化处理单元,用于对所述图像验证码灰化处理,得到灰度图像验证码;

二值化处理单元,用于基于所述灰度图像验证码计算最佳阈值,并根据最佳阈值对所述灰度图像验证码二值化处理,形成二值化图片;

提取单元,用于识别并提取所述二值化图片中的关键字符串;

输入单元,用于将所述关键字符串输入app自动化测试程序,完成图像验证码的自动输入。

优选地,所述灰化处理单元包括:

像素信息获取模块,用于获取所述图像验证码中各像素对应的坐标值及rgb三原色值;

灰度计算模块,用于根据各像素对应的坐标值及rgb三原色值,采用灰度变换公式计算该像素的灰度变换值;

变换模块,用于基于各像素的灰度变换值,得到灰度图像验证码。

优选地,所述二值化处理单元包括:

大津算法模块,用于基于所述灰度图像验证码的图像信息,采用大津算法计算最佳阈值;

分类模块,用于分别将各像素的灰度变换值与最佳阈值做差值运算,运算值为正的像素归纳为非验证码字符像素集合中,运算值为负的像素归纳为验证码字符像素集合中;

像素设置模块,用于将非验证码字符像素集合中的各像素设置为白色,以及将验证码字符像素集合中的各像素设置为黑色,得到二值化图片。

与现有技术相比,本发明提供的用于app测试中验证码自动输入系统的有益效果与上述技术方案提供的用于app测试中验证码自动输入方法的有益效果相同,在此不做赘述。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例一中用于app测试中验证码自动输入方法的流程示意图;

图2为本发明实施例二中用于app测试中验证码自动输入系统的结构框图。

附图标记:

1-获取单元,2-灰化处理单元;

3-二值化处理单元,4-提取单元;

5-输入单元,21-像素信息获取模块;

22-灰度计算模块,23-变换模块;

31-大津算法模块,32-分类模块;

33-像素设置模块。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。

实施例一

请参阅图1,本实施例提供一种用于app测试中验证码自动输入的方法,应用于app自动化测程序中,所述方法包括:

获取app自动化测试程序中待输入的图像验证码;对图像验证码灰化处理,得到灰度图像验证码;基于灰度图像验证码计算最佳阈值,并根据最佳阈值对灰度图像验证码二值化处理,形成二值化图片;识别并提取二值化图片中的关键字符串;将关键字符串输入app自动化测试程序,完成图像验证码的自动输入。

本实施例提供的用于app测试中验证码自动输入的方法,通过监控app自动化测试程序中的图像验证码输入进程,并在图像验证码输入阶段,采用截图方式获取页面中待输入的图像验证码,然后对图像验证码灰化处理,去除图像验证码中的彩色元素和其他干扰元素,得到便于识别的灰度图像验证码,接着为了提高了验证码文本信息的识别度,还需对灰度图像验证码进行二值化处理,使其形成黑字白底的二值化图片,然后利用图像识别技术提取二值化图片中的文本信息,得到验证码对应的关键字符串,并将其输入app自动化测试程序,完成图像验证码的自动输入。

可见,使用本实施例提供的用于app测试中验证码自动输入的方法,能够自动的识别app测试进程中出现的图像验证码,并对其中的关键字符串实现精准提取和自动输入,解决了现有技术针对图像验证码需要人工识别和手动输入的缺陷,极大的提高了app的测试效率。

具体地,上述实施例中获取app自动化测试中待输入的图像验证码的方法包括:

监测app自动化测试程序的进程;在当前进程处于验证码输入步骤时,获取app当前界面截图;基于界面截图中验证码显示位置信息,提取图像验证码。

具体地,上述实施例中对图像验证码灰化处理,得到灰度图像验证码的方法包括:

获取图像验证码中各像素对应的坐标值及rgb三原色值;根据各像素对应的坐标值及rgb三原色值,采用灰度变换公式计算该像素的灰度变换值;基于各像素的灰度变换值,得到灰度图像验证码。

上述灰度变换公式为:f(i,j)=0.3*r(i,j)+0.59*g(i,j)+0.11*b(i,j),其中,r(i,j)、g(i,j)、b(i,j)对应表示同一坐标像素对应rgb三原色值。

具体实施时,首先统计图像验证码中的像素信息,然后分别获取各像素对应的坐标值及rgb三原色值,并采用灰度变换公式f(i,j)计算各像素的灰度变换值,对应调整后得到灰度图像验证码。可见,通过对彩色的图像验证码灰化处理,能够消除彩色元素对验证码识别造成的影响,以提高验证码识别的精确度。

进一步地,上述实施例中基于灰度图像验证码计算最佳阈值,并根据最佳阈值对灰度图像验证码二值化处理,形成二值化图片的方法包括:

基于灰度图像验证码的图像信息,采用大津算法计算最佳阈值;分别将各像素的灰度变换值与最佳阈值做差值运算,运算值为正的像素归纳为非验证码字符像素集合中,运算值为负的像素归纳为验证码字符像素集合中;将非验证码字符像素集合中的各像素设置为白色,以及将验证码字符像素集合中的各像素设置为黑色,得到二值化图片。

其中,识别并提取二值化图片中的关键字符串的方法包括:使用tesseract工具识别二值化图片,并提取其中的关键字符串。

需要说明的是,灰度图像验证码的图像信息包括图像平均灰度μ、图像大小为m×n、最佳阈值t、图像中像素灰度值小于最佳阈值t的数量n0、图像中像素灰度值大于最佳阈值t的数量n1、关键字符串中像素点占整个图像比例ω0、关键字符串中像素点的平均灰度是μ0、图像中非关键字符串中像素点占整个图像比例ω1、非关键字符串中像素点的平均灰度是μ1;其中,最佳阈值t的推导方法如下:

ω0=n0/(m×n);

ω1=n1/(m×n);

n0+n1=m×n;

ω0+ω1=1;

μ=ω0*μ0+ω1*μ1,图像平均灰度μ的计算公式;

g=ω0(μ0-μ)^2+ω1(μ1-μ)^2,g为阈值的类间方差;

g=ω0ω1(μ0-μ1)^2,将图像平均灰度μ代入上述类间方差公式后的变换公式;

通过遍历图像中的256个灰度,当g值取最大时则对应的灰度等级就为最佳阈值t。

当最佳阈值t设定后,将灰度变换值大于最佳阈值t的像素归纳为非验证码字符像素集合,将灰度变换值小于最佳阈值t的像素归纳为验证码字符像素集合,之后将所有验证码字符像素的灰度值设置为0,使其呈现为黑色,同理,将所有非验证码字符像素的灰度值设置为255,使其呈现白色,得到二值化图片。通过此步骤,使得验证码有效字符像素被凸显,而其他干扰像素被滤除,使得后续步骤能够准确的识别出图像当中的验证码。

可选地,在步骤将所述关键字符串输入app自动化测试程序,完成图像验证码的自动输入之后还包括:

将提取的关键字符串与app当前界面截图中的实际验证码字符串比对,统计识别偏差率,并反馈至测试人员统计分析。

具体实施时,由于不同智能终端的显示分辨率以及屏幕大小不一,导致了同一图像验证码在不同的智能终端屏幕上的显示位置、大小和分辨率也不相同,故造成了本实施例提供的方法可能在不同的智能终端上的识别输入准确率略有区别,而为了满足针对不同智能终端的准确率要求,需对不同智能终端进行兼容性测试,因此,在步骤将所述关键字符串输入app自动化测试程序,完成图像验证码的自动输入之后还包括:将提取的关键字符串与app当前界面截图中的实际验证码字符串比对,统计识别偏差率,并反馈至测试人员统计分析。例如,识别的图像验证码中的关键字符串为“交易”二字,但是实际中的的关键字符串为“交易成功”二字,那么可判断偏差率为50%,因此还需测试人员对运行在该智能终端中的app自动化测程序进一步优化,以提高其识别的准确率。

实施例二

请参阅图1和图2,本实施例提供一种用于app测试中验证码自动输入的系统,包括依次连接的获取单元1、灰化处理单元2、二值化处理单元3、提取单元4和输入单元5:

获取单元1,用于获取app自动化测试程序中待输入的图像验证码;

灰化处理单元2,用于对图像验证码灰化处理,得到灰度图像验证码;

二值化处理单元3,用于基于灰度图像验证码计算最佳阈值,并根据最佳阈值对灰度图像验证码二值化处理,形成二值化图片;

提取单元4,用于识别并提取二值化图片中的关键字符串;

输入单元5,用于将关键字符串输入app自动化测试程序,完成图像验证码的自动输入。

具体地,灰化处理单元2包括依次连接的像素信息获取模块21、灰度计算模块22和变换模块23,像素信息获取模块21的输入端与获取单元1的输出端连接,变换模块23的输出端与二值化处理单元3的输入端连接;

像素信息获取模块21,用于获取图像验证码中各像素对应的坐标值及rgb三原色值;

灰度计算模块22,用于根据各像素对应的坐标值及rgb三原色值,采用灰度变换公式计算该像素的灰度变换值;

变换模块23,用于基于各像素的灰度变换值,得到灰度图像验证码。

进一步地,二值化处理单元3包括依次连接的大津算法模块31、分类模块32和像素设置模块33,大津算法模块31的输入端与变换模块23的输出端连接,像素设置模块33的输出端与提取单元4的输入端连接;

大津算法模块31,用于基于灰度图像验证码的图像信息,采用大津算法计算最佳阈值;

分类模块32,用于分别将各像素的灰度变换值与最佳阈值做差值运算,运算值为正的像素归纳为非验证码字符像素集合,运算值为负的像素归纳为验证码字符像素集合;

像素设置模块33,用于将非验证码字符像素集合中的各像素设置为白色,以及将验证码字符像素集合中的各像素设置为黑色,得到二值化图片。

与现有技术相比,本实施例提供的用于app测试中验证码自动输入系统的有益效果与上述实施例一提供的用于app测试中验证码自动输入方法的有益效果相同,在此不做赘述。

本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,上述程序可以存储于计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,而的存储介质可以是:rom/ram、磁碟、光盘、存储卡等。

以上,仅为本实施例的具体实施方式,但本实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本实施例的保护范围之内。因此,本实施例的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1