CN115827499B - 一种ui自动化测试方法 - Google Patents
一种ui自动化测试方法 Download PDFInfo
- Publication number
- CN115827499B CN115827499B CN202310147127.5A CN202310147127A CN115827499B CN 115827499 B CN115827499 B CN 115827499B CN 202310147127 A CN202310147127 A CN 202310147127A CN 115827499 B CN115827499 B CN 115827499B
- Authority
- CN
- China
- Prior art keywords
- test
- data
- item
- historical
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 561
- 238000013515 script Methods 0.000 claims abstract description 119
- 238000010998 test method Methods 0.000 claims abstract description 12
- 238000004891 communication Methods 0.000 claims abstract description 11
- 238000004364 calculation method Methods 0.000 claims description 23
- 238000013100 final test Methods 0.000 claims description 15
- 238000012216 screening Methods 0.000 claims description 14
- 230000009191 jumping Effects 0.000 claims description 9
- 238000007781 pre-processing Methods 0.000 claims description 6
- 238000000034 method Methods 0.000 claims description 5
- 230000002452 interceptive effect Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000001276 controlling effect Effects 0.000 description 7
- 239000013589 supplement Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种UI自动化测试方法,步骤包括:构建测试脚本库;控制待测软件启动运行并选出对应的子测试库;由UI测试控制脚本控制项目测试脚本对待测软件当前运行的UI进行自动化测试;在待测软件的全部UI测试完毕后汇总全部测试结果,生成测试报告文件,并根据预设的通信方式将测试报告文件发送至用户。该UI自动化测试方法用户可以根据软件UI变化情况定制对应的子测试库,从而满足软件UI局部变化时的测试要求,具有较好的测试灵活性,使得自动测试程序本身的维护较为方便;利用软件控制脚本能够对待测软件进行运行控制,从而由各个子测试库进行对应UI的测试,实现软件各个UI的整体自动化测试。
Description
技术领域
本发明涉及一种软件测试方法,尤其是一种UI自动化测试方法。
背景技术
测试是完善的研发体系中不可缺少的一环,由于软件产品的前端逻辑比较复杂,而且需要频繁改动,所以经常会导致一些回归错误(regression bug),尽管现在的测试领域工具层出不穷,在前端的自动化测试上却应用并不广泛,大部分人还是以手工测试为主。自动化测试是应对软件产品不断迭代更新的辅助测试手段(主要是针对回归测试),最终目的是为了保证软件产品的质量。
通常自动化测试的优点就是可重复、效率高,能够大幅减轻人力成本。随着软件产品需求不断迭代更新,给测试人员也增加了测试工作量,特别是大量繁琐的回归测试,因此对产品进行自动化测试是必不可少的。但是现在的自动化测试还存在一些问题,例如,多数自动化测试都只是进行UI中的单项测试,需要用户进行各个单项测试操作,属于半自动化测试,此外在软件产品升级UI发生变化时,需要完全重新设计对应的测试方案,测试灵活性较差。
发明内容
发明目的:提供一种UI自动化测试方法,能够对软件产品的UI进行自动测试,且能够便于用户对测试进行自定义,具有较好的测试灵活性。
技术方案:本发明所述的一种UI自动化测试方法,包括如下步骤:
步骤1,构建测试脚本库,测试脚本库中设置有软件控制脚本以及各个子测试库,软件控制脚本用于对待测软件进行运行控制,每个子测试库中均设置有UI测试控制脚本以及各个项目测试脚本,UI测试控制脚本用于对各个项目测试脚本进行运行控制,项目测试脚本用于通过测试用例数据和比对界面数据对UI中对应的待测项进行自动测试;
步骤2,由软件控制脚本控制待测软件启动运行,并根据待测软件当前运行的UI从测试脚本库中选出对应的子测试库;
步骤3,启动选出的子测试库中的UI测试控制脚本,再由UI测试控制脚本控制对应的各个项目测试脚本对待测软件当前运行的UI进行自动化测试,并获得当前运行的UI的测试结果;
步骤4,判定待测软件的全部UI是否测试完毕,若未全部测试完毕,则返回步骤2,若全部测试完毕,则汇总全部测试结果,生成测试报告文件,并根据预设的通信方式将测试报告文件发送至用户。
进一步的,步骤1中,构建测试脚本库的具体步骤为:
步骤1.1,获取待测软件的历史测试数据,再从历史测试数据中提取出分属于各个UI的历史UI测试流程数据以及各个历史测试项目数据;
步骤1.2,检查待测软件是否有更新信息,若没有更新信息,则直接进入步骤1.3,若有更新信息,则获取用户上传的分属于各个UI的新增UI测试流程数据以及各个新增测试项目数据,再进入步骤1.4;
步骤1.3,将历史UI测试流程数据作为的最终UI测试流程数据,将各个历史测试项目数据作为的各个最终测试项目数据,再进入步骤1.5;
步骤1.4,将同一UI的历史UI测试流程数据以及新增UI测试流程数据组合为最终UI测试流程数据,将同一UI的各个历史测试项目数据以及各个新增测试项目数据组合为各个最终测试项目数据,再进入步骤1.5;
步骤1.5,根据各个最终测试项目数据制定对应的各个项目测试脚本,再根据最终UI测试流程数据制定对应的UI测试控制脚本;
步骤1.6,利用每个UI对应的UI测试控制脚本以及各个项目测试脚本构建该UI对应的子测试库,再根据待测软件的交互控制要求制定软件控制脚本,再利用软件控制脚本以及各个子测试库共同构建测试脚本库。
进一步的,步骤1.1中,从历史测试数据中提取出分属于各个UI的历史UI测试流程数据以及各个历史测试项目数据的具体步骤为:
步骤1.1.1,从历史测试数据中筛选出分属于各个UI的历史UI测试数据,再从历史UI测试数据中划分出属于各个测试项的测试项历史数据;
步骤1.1.2,对各个测试项历史数据进行筛选预处理,使得各个UI中的每个测试项均只有一个测试项历史数据;
步骤1.1.3,对筛选预处理后的各个测试项历史数据进行信息提取,获得其中的测试用例数据以及比对界面数据;
步骤1.1.4,将获得的每组测试用例数据以及比对界面数据作为一个历史测试项目数据,并按照命名规则为每个历史测试项目数据设置一个项目名称;
步骤1.1.5,将每个UI的历史UI测试数据按照历史测试时间分为各个分组历史数据,获取分组历史数据中各个测试项历史数据的排列顺序,再将该排列顺序作为对应UI的历史UI测试流程数据。
进一步的,步骤1.1.2中,对各个测试项历史数据进行筛选预处理的具体步骤为:
首先判断各个测试项历史数据是否完整,若测试项历史数据存在完整的测试用例数据以及比对界面数据,则判定该组测试项历史数据是完整的,否则判定为数据不完整;
若同一个测试项存在多组完整的测试项历史数据,则保留其中测试时间最新的那组测试项历史数据,并删除该测试项的其他测试项历史数据;
若同一个测试项只存在一组完整的测试项历史数据,则保留该组完整的测试项历史数据,并删除该测试项的其他测试项历史数据;
若某个测试项不存在完整的测试项历史数据,则通过预设的通信方式向用户发送缺失提示信息,并实时获取用户对应补充的测试用例数据和/或比对界面数据。
进一步的,步骤1.2中,新增测试项目数据包括新增的测试用例数据以及比对界面数据,新增测试项目数据按照命名规则设置有对应的项目名称,新增UI测试流程数据设置了各个新增测试项目数据用于测试时的排列顺序。
进一步的,步骤1.4中,将历史UI测试流程数据以及新增UI测试流程数据进行组合时,首先判断历史UI测试流程数据中各个项目名称是否与新增UI测试流程数据中各个项目名称存在重合,若存在重合的项目名称,则利用新增UI测试流程数据中重合项目名称所对应的测试项流程数据移植并替换掉历史UI测试流程数据中重合项目名称所对应的测试项流程数据,再将剩余的新增UI测试流程数据排列在历史UI测试流程数据之后组合为最终的UI测试流程数据,若不存在重合的项目名称,则直接将新增UI测试流程数据排列在历史UI测试流程数据之后组合为最终UI测试流程数据;
将各个历史测试项目数据以及各个新增测试项目数据进行组合时,首先判断各个历史测试项目数据对应的项目名称是否与各个新增测试项目数据对应的项目名称存在重合,若存在重合的项目名称,则删除重合的历史测试项目数据,再将其余的各个历史测试项目数据以及新增测试项目数据组合为最终UI测试项目数据,若不存在重合的项目名称,则直接将各个历史测试项目数据以及新增测试项目数据组合为最终UI测试项目数据。
进一步的,步骤2中,根据待测软件当前运行的UI从测试脚本库中选出对应的子测试库的具体步骤为:
步骤2.1,获取软件控制脚本的控制指令,控制指令用于控制待测软件进入对应的UI;
步骤2.2,获取待测软件的运行配置信息,根据运行配置信息判断待测软件是否已经进入与控制指令相对应的UI,若已经进入对应的UI,则跳转至步骤2.4,若未进入对应的UI,则跳转至步骤2.3;
步骤2.3,等待预设的时间阈值后再次获取待测软件的运行配置信息,若判断待测软件已经进入与控制指令相对应的UI,则跳转至步骤2.4,否则通过预设的通信方式向用户反馈软件运行失败的提示信息;
步骤2.4,根据UI的界面名称从测试脚本库中选择对应的子测试库。
进一步的,步骤3中,由UI测试控制脚本控制对应的各个项目测试脚本对待测软件当前运行的UI进行自动化测试的具体步骤为:
步骤3.1,UI测试控制脚本启动运行后,逐个启动运行各个项目测试脚本;
步骤3.2,项目测试脚本启动运行后,利用测试用例数据对待测项进行运行配置,并进入运行配置后的UI运行测试界面;
步骤3.3,按照测试用例数据的截图限定参数从UI运行测试界面中截取待测项所在区域的区域图像,再将区域图像与比对界面数据中的比对图像进行图形界面近似度计算,若图形界面的界面近似度大于等于近似比例阈值,则判定待测项的测试结果为测试通过,若图形界面的界面近似度小于近似比例阈值,则判定待测项的测试结果为测试未通过;
步骤3.4,判断当前运行的UI中的全部待测项是否测试完毕,若测试完毕,则进入步骤4,若未测试完毕,则返回步骤3.1。
进一步的,步骤3.2中,利用测试用例数据对待测项进行运行配置的具体步骤为:
步骤3.2.1,从待测软件当前UI的运行配置信息中定位出属于当前测试项的默认配置参数;
步骤3.2.2,利用测试用例数据的测试配置参数替换掉定位出的默认配置参数,并通知UI测试控制脚本参数配置完毕;
步骤3.2.3,由UI测试控制脚本刷新当前UI,使得当前UI按照测试用例数据的测试配置参数运行配置。
进一步的,步骤3.3中,将区域图像与比对界面数据中的比对图像进行图形界面近似度计算的具体步骤为:
步骤3.3.1,计算区域图像以及比对图像的灰度均值误差,若误差在灰度阈值范围内,则设定初始比对系数K为1,再进入步骤3.3.2,否则设定初始比对系数K为0,再进入步骤3.3.7;
步骤3.3.2,提取区域图像中的特征元素以及各个特征元素对应的元素位置;
步骤3.3.3,选取一个特征元素,将该特征元素分别与比对界面数据中的比对元素进行近似度计算,若存在一个或多个比对元素与之近似,则设定近似系数M为1,再进入步骤3.3.4,否则设定近似系数M为0,再进入步骤3.3.7;
步骤3.3.4,计算特征元素的坐标位置与各个相似的比对元素的坐标位置之间位置重合率,位置重合率P的计算公式为:,式中L为特征元素的坐标位置与比对元素的坐标位置的直线距离,S为比对元素的图块面积,再选择位置重合率最大的比对元素认定为特征元素的近似重合元素;
步骤3.3.5,判断是否所有的特征元素都完成了近似度计算,若全部完成了近似度计算,则进入步骤3.3.6,否则返回步骤3.3.3;
步骤3.3.6,判断是否所有的比对元素都被认定为了近似重合元素,若全部被认定为了近似重合元素,则设定重合系数G为1,否则设定重合系数G为0;
本发明与现有技术相比,其有益效果是:利用构建测试脚本库来存储对应的软件控制脚本以及各个子测试库,用户可以根据软件UI变化情况定制对应的子测试库,从而满足软件UI局部变化时的测试要求,具有较好的测试灵活性,使得自动测试程序本身的维护较为方便;利用软件控制脚本能够对待测软件进行运行控制,从而由各个子测试库进行对应UI的测试,实现软件各个UI的整体自动化测试;利用UI测试控制脚本对各个项目测试脚本进行控制,从而能够一次自动完成UI中的全部待测项,具有较高的测试效率。
附图说明
图1为本发明的测试方法流程图。
实施方式
下面结合附图对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
实施例
如图1所示,本发明提供的UI自动化测试方法包括如下步骤:
步骤1,构建测试脚本库,测试脚本库中设置有软件控制脚本以及各个子测试库,软件控制脚本用于对待测软件进行运行控制,各个子测试库用于分别对待测软件的各个UI进行自动测试,每个子测试库中均设置有UI测试控制脚本以及各个项目测试脚本,UI测试控制脚本用于对各个项目测试脚本进行运行控制以及测试结果记录,项目测试脚本用于通过测试用例数据和比对界面数据对UI中对应的待测项进行自动测试;
步骤2,由软件控制脚本控制待测软件启动运行,并根据待测软件当前运行的UI从测试脚本库中选出对应的子测试库;
步骤3,启动选出的子测试库中的UI测试控制脚本,再由UI测试控制脚本控制对应的各个项目测试脚本对待测软件当前运行的UI进行自动化测试,并获得当前运行的UI的测试结果;
步骤4,判定待测软件的全部UI是否测试完毕,若未全部测试完毕,则返回步骤2,若全部测试完毕,则汇总全部测试结果,生成测试报告文件,并根据预设的通信方式将测试报告文件发送至用户。
利用构建测试脚本库来存储对应的软件控制脚本以及各个子测试库,用户可以根据软件UI变化情况定制对应的子测试库,从而满足软件UI局部变化时的测试要求,具有较好的测试灵活性,使得自动测试程序本身的维护较为方便;利用软件控制脚本能够对待测软件进行运行控制,从而由各个子测试库进行对应UI的测试,实现软件各个UI的整体自动化测试;利用UI测试控制脚本对各个项目测试脚本进行控制,从而能够一次自动完成UI中的全部待测项,具有较高的测试效率。
进一步的,步骤1中,构建测试脚本库的具体步骤为:
步骤1.1,获取待测软件的历史测试数据,再从历史测试数据中提取出分属于各个UI的历史UI测试流程数据以及各个历史测试项目数据;
步骤1.2,检查待测软件是否有更新信息,若没有更新信息,则直接进入步骤1.3,若有更新信息,则获取用户上传的分属于各个UI的新增UI测试流程数据以及各个新增测试项目数据,各个新增测试项目数据分别用于测试各个UI中更新的各个待测项,新增UI测试流程数据用于设置各个新增测试项目数据的使用顺序,再进入步骤1.4;
步骤1.3,将历史UI测试流程数据作为的最终UI测试流程数据,将各个历史测试项目数据作为的各个最终测试项目数据,再进入步骤1.5;
步骤1.4,将同一UI的历史UI测试流程数据以及新增UI测试流程数据组合为最终UI测试流程数据,将同一UI的各个历史测试项目数据以及各个新增测试项目数据组合为各个最终测试项目数据,再进入步骤1.5;
步骤1.5,根据各个最终测试项目数据制定对应的各个项目测试脚本,项目测试脚本启动运行后用于利用最终测试项目数据的测试用例数据和比对界面数据对UI中的相应待测项进行自动测试,再根据最终UI测试流程数据制定对应的UI测试控制脚本,UI测试控制脚本启动运行后用于按照最终UI测试流程启动各个项目测试脚本;
步骤1.6,利用每个UI对应的UI测试控制脚本以及各个项目测试脚本构建该UI对应的子测试库,再根据待测软件的交互控制要求制定软件控制脚本,软件控制脚本启动后用于控制待测软件逐个进入各个UI,再利用软件控制脚本以及各个子测试库共同构建测试脚本库。
通过实时检查待测软件是否有更新信息,从而能够在软件发生更新时由用户对应增加相应的新增UI测试流程数据以及各个新增测试项目数据,从而实现对测试脚本库的自定义灵活升级;通过从历史测试数据中提取出历史UI测试流程数据以及各个历史测试项目数据来作为构建子测试库的数据基础,能够有效保证子测试库的数据可靠性;通过软件控制脚本能够协调控制待测软件和各个子测试库实现待测软件的各个UI全面自动化测试。
进一步的,步骤1.1中,从历史测试数据中提取出分属于各个UI的历史UI测试流程数据以及各个历史测试项目数据的具体步骤为:
步骤1.1.1,从历史测试数据中筛选出分属于各个UI的历史UI测试数据,再从历史UI测试数据中划分出属于各个测试项的测试项历史数据;
步骤1.1.2,对各个测试项历史数据进行筛选预处理,使得各个UI中的每个测试项均只有一个测试项历史数据;
步骤1.1.3,对筛选预处理后的各个测试项历史数据进行信息提取,获得其中的测试用例数据以及比对界面数据;
步骤1.1.4,将获得的每组测试用例数据以及比对界面数据作为一个历史测试项目数据,并按照命名规则为每个历史测试项目数据设置一个项目名称,且同属于一个UI的各个项目名称有相同的前缀;
步骤1.1.5,将每个UI的历史UI测试数据按照历史测试时间分为各个分组历史数据,获取分组历史数据中各个测试项历史数据的排列顺序,再将该排列顺序作为对应UI的历史UI测试流程数据。
通过对各个测试项历史数据进行筛选预处理,能够使得各个UI中的每个测试项均只有一个测试项历史数据,从而能够快速分析获得一组最佳的测试用例数据和比对界面数据;利用项目名称能够便于进行各个历史测试项目数据的索引查找,从而将同属于一个UI的各个历史测试项目数据归集到一起;利用分组历史数据中各个测试项历史数据的排列顺序作为历史UI测试流程数据,能够使得测试流程按照原有的测试流程进行,因为有些测试项是相互影响的,因此测试先后排列顺序不同会导致不同的UI测试结果。
进一步的,步骤1.1.2中,对各个测试项历史数据进行筛选预处理的具体步骤为:
首先判断各个测试项历史数据是否完整,若测试项历史数据存在完整的测试用例数据以及比对界面数据,则判定该组测试项历史数据是完整的,若测试项历史数据缺失测试用例数据和/或比对界面数据,则判定该组测试项历史数据是不完整的;
若同一个测试项存在多组完整的测试项历史数据,则保留其中测试时间最新的那组测试项历史数据,并删除该测试项的其他测试项历史数据;
若同一个测试项只存在一组完整的测试项历史数据,则保留该组完整的测试项历史数据,并删除该测试项的其他测试项历史数据;
若某个测试项不存在完整的测试项历史数据,则通过预设的通信方式向用户发送缺失提示信息,并实时获取用户对应补充的测试用例数据和/或比对界面数据,缺失提示信息中包括缺失内容、发生缺失的测试项以及发生缺失的测试项所在的UI,缺失内容包括测试用例数据和/或比对界面数据。
通过上述的筛选预处理过程,能够使得每个测试项都有一组最优且完整的测试项历史数据,保证自动测试的可靠运行;通过在测试项的测试项历史数据不完整时由用户进行补充,从而完善不完整的测试项历史数据,确保每个测试项均能够得到可靠的UI测试。
进一步的,步骤1.2中,新增测试项目数据包括新增的测试用例数据以及比对界面数据,新增测试项目数据按照命名规则设置有对应的项目名称,新增UI测试流程数据设置了各个新增测试项目数据用于测试时的排列顺序。
利用项目名称能够将新增测试项目数据与名称一致的历史测试项目数据组合为各个最终测试项目数据。
进一步的,步骤1.4中,将历史UI测试流程数据以及新增UI测试流程数据进行组合时,首先判断历史UI测试流程数据中各个项目名称是否与新增UI测试流程数据中各个项目名称存在重合,在历史UI测试流程数据以及新增UI测试流程数据中的每个项目名称均对应设置有一个测试项流程数据,若存在重合的项目名称,则利用新增UI测试流程数据中重合项目名称所对应的测试项流程数据移植并替换掉历史UI测试流程数据中重合项目名称所对应的测试项流程数据,再将新增UI测试流程数据中剩余的各个测试项流程数据排列在历史UI测试流程数据的各个测试项流程数据之后组合为最终的UI测试流程数据,若不存在重合的项目名称,则直接将新增UI测试流程数据中的各个测试项流程数据排列在历史UI测试流程数据的各个测试项流程数据之后组合为最终UI测试流程数据;
将各个历史测试项目数据以及各个新增测试项目数据进行组合时,首先判断各个历史测试项目数据对应的项目名称是否与各个新增测试项目数据对应的项目名称存在重合,若存在重合的项目名称,则删除重合的历史测试项目数据,再将其余的各个历史测试项目数据以及新增测试项目数据按照最终UI测试流程数据中的项目名称顺序组合为最终UI测试项目数据,若不存在重合的项目名称,则直接将各个历史测试项目数据以及新增测试项目数据按照最终UI测试流程数据中的项目名称顺序组合为最终UI测试项目数据。
在项目名称重合时,通过将新增UI测试流程数据中的测试项流程数据移植并替换掉历史UI测试流程数据中的测试项流程数据,从而在不影响历史流程顺序的前提下实现测试流程的更新;通过删除重合项目名称的历史测试项目数据能够实现测试项目数据的更新,避免更新后的测试项被历史测试项目数据测试而造成测试未通过。
进一步的,步骤2中,根据待测软件当前运行的UI从测试脚本库中选出对应的子测试库的具体步骤为:
步骤2.1,获取软件控制脚本的控制指令,控制指令用于控制待测软件进入对应的UI,因此可以根据控制指令判断待测软件将要或已经进入的UI;
步骤2.2,获取待测软件的运行配置信息,根据运行配置信息判断待测软件是否已经进入与控制指令相对应的UI,若已经进入对应的UI,则跳转至步骤2.4,若未进入对应的UI,则跳转至步骤2.3;
步骤2.3,等待预设的时间阈值后再次获取待测软件的运行配置信息,时间阈值一般设置为1~5秒,优选为2秒,若判断待测软件已经进入与控制指令相对应的UI,则跳转至步骤2.4,否则通过预设的通信方式向用户反馈软件运行失败的提示信息;
步骤2.4,根据UI的界面名称从测试脚本库中选择对应的子测试库。
通过根据运行配置信息判断待测软件是否已经进入与控制指令相对应的UI,从而判断待测软件是否被软件控制脚本正常控制运行,确保后续UI测试的可靠性。
进一步的,步骤3中,由UI测试控制脚本控制对应的各个项目测试脚本对待测软件当前运行的UI进行自动化测试的具体步骤为:
步骤3.1,UI测试控制脚本启动运行后,按照最终UI测试流程数据逐个启动运行各个项目测试脚本;
步骤3.2,项目测试脚本启动运行后,利用最终测试项目数据中的测试用例数据对待测项进行运行配置,并进入运行配置后的UI运行测试界面;
步骤3.3,按照测试用例数据的截图限定参数从UI运行测试界面中截取待测项所在区域的区域图像,截图限定参数包括截图坐标参数、截图分辨率以及截图时间参数,截图坐标参数用于设定区域图像的各个边界拐点在当前UI中的位置坐标,由各个边界拐点的包络线合围构成区域图像,截图时间参数用于设定UI运行测试界面正常进入后的截图时间,再将区域图像与最终测试项目数据中的比对界面数据中的比对图像进行图形界面近似度计算,截图分辨率用于设定截图时区域图像的分辨率,若图形界面的界面近似度大于等于近似比例阈值,近似比例阈值可以设置为70%~98%,优选为85%,则判定区域图像与比对图像一致,待测项的测试结果为测试通过,若图形界面的界面近似度小于近似比例阈值,则判定区域图像与比对图像不一致,待测项的测试结果为测试未通过;
步骤3.4,根据最终UI测试流程数据判断当前运行的UI中的全部待测项是否测试完毕,若测试完毕,则进入步骤4,若未测试完毕,则返回步骤3.1。
利用测试用例数据的截图限定参数能够限定区域图像的大小位置,从而使得区域图像能够与比对图像的大小形状保持一致,确保后续近似度识别准确可靠;利用截图时间参数能够规定截图的时机,可以针对UI界面有动画的这种情况,将截图的时间设置在动画播放之前或者播放结束之后,这样能够保证截图的一致性,避免动画不一样造成区域图像近似度判断未通过;利用截图分辨率的控制,使得区域图像与比对图像在相同的分辨率下进行近似度比对计算。
进一步的,步骤3.2中,利用测试用例数据对待测项进行运行配置的具体步骤为:
步骤3.2.1,从待测软件当前UI的运行配置信息中定位出属于当前测试项的默认配置参数;
步骤3.2.2,利用测试用例数据的测试配置参数替换掉定位出的默认配置参数,并通知UI测试控制脚本参数配置完毕;
步骤3.2.3,由UI测试控制脚本刷新当前UI,使得当前UI按照测试用例数据的测试配置参数运行配置。
需要注意的是在待测软件全部UI测试完成后,再恢复当前测试项的默认配置参数,使得待测软件按照默认配置参数运行,不影响后续待测软件的正常运行。
进一步的,步骤3.3中,将区域图像与最终测试项目数据中的比对界面数据中的比对图像进行图形界面近似度计算的具体步骤为:
步骤3.3.1,计算区域图像以及比对图像的灰度均值误差,具体的,将区域图像以及比对图像均转化为灰度图像,再分别计算两个灰度图像的灰度平均值,再计算两个灰度平均值的误差作为灰度均值误差,若误差在灰度阈值范围内,则判定为初始比对通过,设定初始比对系数K为1,再进入步骤3.3.2,否则判定为初始比对未通过,设定初始比对系数K为0,再进入步骤3.3.7;
利用初始比对系数K的设置,能够在初始的灰度均值误差评估未通过时直接进入步骤3.3.7,并输出界面近似度Q为0,从而无需进行后续的其他步骤计算,能够有效节省运算资源,提高测试效率。
步骤3.3.2,提取区域图像中的特征元素以及各个特征元素对应的元素位置,特征元素包括字符块图以及图形块图,字符块图就是针对各个字符的矩形截图,图形块图就是针对图形的矩形截图,在截取的时候如果字符和图形重合,则全部作为图形块图处理,且字符块图以及图形块图均为规则的矩形方块,从而方便进行各个图块的单独比对,元素位置为特征元素的块图中心在区域图像中的坐标位置;将区域图像中的各个特征元素进行单独比对,能够有效增强图像近似度比对的精度,使得UI发生局部细微变化时也能够精准比对,且增加了元素位置的特征提取,能够在图像近似的前提下保证所在位置同步精准,进一步增强图像近似度计算的可靠性;
步骤3.3.3,选取一个特征元素,将该特征元素分别与比对界面数据中的比对元素进行近似度计算,采用现有的图像近似算法计算即可,这里采用图像近似度比对而不是采用图像识别结果比对,因为本身就是针对界面的近似度比对,能够减少处理器运算资源占用,根据计算结果通过设定相应的近似度阈值判定是否相似,若存在一个或多个比对元素与之近似,则设定近似系数M为1,再进入步骤3.3.4,若不存在比对元素与之近似,则设定近似系数M为0,再进入步骤3.3.7;
步骤3.3.4,计算特征元素的坐标位置与各个相似的比对元素的坐标位置之间位置重合率,位置重合率P的计算公式为:,式中L为特征元素的坐标位置与比对元素的坐标位置的直线距离,S为比对元素的图块面积,即当特征元素的坐标位置与比对元素的坐标位置完全重合时,位置重合率P达到最大值为1,当特征元素的坐标位置与比对元素的坐标位置相偏离时,位置重合率P逐渐减小,甚至有可能成为负数;
再选择位置重合率最大的比对元素认定为特征元素的近似重合元素,且被认定为近似重合元素后该比对元素不再参与步骤3.3.3中的近似度计算;
步骤3.3.5,判断是否所有的特征元素都完成了近似度计算,若全部完成了近似度计算,则进入步骤3.3.6,若未全部完成近似度计算,则返回步骤3.3.3;
步骤3.3.6,判断是否所有的比对元素都被认定为了近似重合元素,若全部被认定为了近似重合元素,则设定重合系数G为1,再进入步骤3.3.7,若未全部被认定为了近似重合元素,则设定重合系数G为0,再进入步骤3.3.7;通过重合系数G的设定,能够防止特征元素少于比对元素的这种情况发生,即区域图像中的特征元素可能只提取了一部分,另一部分可能出现乱码或位置严重偏离的问题,只有当比对元素与特征元素均唯一对应上了才能设置重合系数G为1;
步骤3.3.7,计算图形界面的界面近似度Q为:,式中T为全部特征元素的位置重合率P的总和,N为特征元素的总数量,在计算界面近似度Q时,若初始比对系数K、近似系数M或重合系数G为0,则界面近似度Q的值直接输出为0。
进一步的,步骤4中,生成测试报告文件的具体步骤为:
步骤4.1,对各个UI的各个待测项的测试结果进行数据整理,汇聚成表格的形式,并在表格中列出各个待测项的测试用例数据、比对界面数据以及最终的测试结果为测试通过或测试未通过;
步骤4.2,利用导入的HTMLTEST文件插件将形成的表格生成测试报告文件;
步骤4.3,获取用户预设的通信方式,具体为用户的电子邮箱,并将测试报告文件以电子邮件的形式发送至用户预设的电子邮箱。
通过生成测试报告文件能够便于用户查看。
如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上作出各种变化。
Claims (9)
1.一种UI自动化测试方法,其特征在于,包括如下步骤:
步骤1,构建测试脚本库,测试脚本库中设置有软件控制脚本以及各个子测试库,软件控制脚本用于对待测软件进行运行控制,每个子测试库中均设置有UI测试控制脚本以及各个项目测试脚本,UI测试控制脚本用于对各个项目测试脚本进行运行控制,项目测试脚本用于通过测试用例数据和比对界面数据对UI中对应的待测项进行自动测试;
步骤2,由软件控制脚本控制待测软件启动运行,并根据待测软件当前运行的UI从测试脚本库中选出对应的子测试库;
步骤3,启动选出的子测试库中的UI测试控制脚本,再由UI测试控制脚本控制对应的各个项目测试脚本对待测软件当前运行的UI进行自动化测试,并获得当前运行的UI的测试结果;
步骤4,判定待测软件的全部UI是否测试完毕,若未全部测试完毕,则返回步骤2,若全部测试完毕,则汇总全部测试结果,生成测试报告文件,并根据预设的通信方式将测试报告文件发送至用户;
步骤3中,由UI测试控制脚本控制对应的各个项目测试脚本对待测软件当前运行的UI进行自动化测试的具体步骤为:
步骤3.1,UI测试控制脚本启动运行后,逐个启动运行各个项目测试脚本;
步骤3.2,项目测试脚本启动运行后,利用测试用例数据对待测项进行运行配置,并进入运行配置后的UI运行测试界面;
步骤3.3,按照测试用例数据的截图限定参数从UI运行测试界面中截取待测项所在区域的区域图像,再将区域图像与比对界面数据中的比对图像进行图形界面近似度计算,若图形界面的界面近似度大于等于近似比例阈值,则判定待测项的测试结果为测试通过,若图形界面的界面近似度小于近似比例阈值,则判定待测项的测试结果为测试未通过;
步骤3.4,判断当前运行的UI中的全部待测项是否测试完毕,若测试完毕,则进入步骤4,若未测试完毕,则返回步骤3.1。
2.根据权利要求1所述的UI自动化测试方法,其特征在于,步骤1中,构建测试脚本库的具体步骤为:
步骤1.1,获取待测软件的历史测试数据,再从历史测试数据中提取出分属于各个UI的历史UI测试流程数据以及各个历史测试项目数据;
步骤1.2,检查待测软件是否有更新信息,若没有更新信息,则直接进入步骤1.3,若有更新信息,则获取用户上传的分属于各个UI的新增UI测试流程数据以及各个新增测试项目数据,再进入步骤1.4;
步骤1.3,将历史UI测试流程数据作为最终UI测试流程数据,将各个历史测试项目数据作为各个最终测试项目数据,再进入步骤1.5;
步骤1.4,将同一UI的历史UI测试流程数据以及新增UI测试流程数据组合为最终UI测试流程数据,将同一UI的各个历史测试项目数据以及各个新增测试项目数据组合为各个最终测试项目数据,再进入步骤1.5;
步骤1.5,根据各个最终测试项目数据制定对应的各个项目测试脚本,再根据最终UI测试流程数据制定对应的UI测试控制脚本;
步骤1.6,利用每个UI对应的UI测试控制脚本以及各个项目测试脚本构建该UI对应的子测试库,再根据待测软件的交互控制要求制定软件控制脚本,再利用软件控制脚本以及各个子测试库共同构建测试脚本库。
3.根据权利要求2所述的UI自动化测试方法,其特征在于,步骤1.1中,从历史测试数据中提取出分属于各个UI的历史UI测试流程数据以及各个历史测试项目数据的具体步骤为:
步骤1.1.1,从历史测试数据中筛选出分属于各个UI的历史UI测试数据,再从历史UI测试数据中划分出属于各个测试项的测试项历史数据;
步骤1.1.2,对各个测试项历史数据进行筛选预处理,使得各个UI中的每个测试项均只有一个测试项历史数据;
步骤1.1.3,对筛选预处理后的各个测试项历史数据进行信息提取,获得其中的测试用例数据以及比对界面数据;
步骤1.1.4,将获得的每组测试用例数据以及比对界面数据作为一个历史测试项目数据,并按照命名规则为每个历史测试项目数据设置一个项目名称;
步骤1.1.5,将每个UI的历史UI测试数据按照历史测试时间分为各个分组历史数据,获取分组历史数据中各个测试项历史数据的排列顺序,再将该排列顺序作为对应UI的历史UI测试流程数据。
4.根据权利要求3所述的UI自动化测试方法,其特征在于,步骤1.1.2中,对各个测试项历史数据进行筛选预处理的具体步骤为:
首先判断各个测试项历史数据是否完整,若测试项历史数据存在完整的测试用例数据以及比对界面数据,则判定测试项历史数据是完整的,否则判定为数据不完整;
若同一个测试项存在多组完整的测试项历史数据,则保留其中测试时间最新的那组测试项历史数据,并删除该测试项的其他测试项历史数据;
若同一个测试项只存在一组完整的测试项历史数据,则保留该组完整的测试项历史数据,并删除该测试项的其他测试项历史数据;
若某个测试项不存在完整的测试项历史数据,则通过预设的通信方式向用户发送缺失提示信息,并实时获取用户对应补充的测试用例数据和/或比对界面数据。
5.根据权利要求2所述的UI自动化测试方法,其特征在于,步骤1.2中,新增测试项目数据包括新增的测试用例数据以及比对界面数据,新增测试项目数据按照命名规则设置有对应的项目名称,新增UI测试流程数据设置了各个新增测试项目数据用于测试时的排列顺序。
6.根据权利要求5所述的UI自动化测试方法,其特征在于,步骤1.4中,将历史UI测试流程数据以及新增UI测试流程数据进行组合时,首先判断历史UI测试流程数据中各个项目名称是否与新增UI测试流程数据中各个项目名称存在重合,若存在重合的项目名称,则利用新增UI测试流程数据中重合项目名称所对应的测试项流程数据移植并替换掉历史UI测试流程数据中重合项目名称所对应的测试项流程数据,再将剩余的新增UI测试流程数据排列在历史UI测试流程数据之后组合为最终的UI测试流程数据,若不存在重合的项目名称,则直接将新增UI测试流程数据排列在历史UI测试流程数据之后组合为最终UI测试流程数据;
将各个历史测试项目数据以及各个新增测试项目数据进行组合时,首先判断各个历史测试项目数据对应的项目名称是否与各个新增测试项目数据对应的项目名称存在重合,若存在重合的项目名称,则删除重合的历史测试项目数据,再将其余的各个历史测试项目数据以及新增测试项目数据组合为最终UI测试项目数据,若不存在重合的项目名称,则直接将各个历史测试项目数据以及新增测试项目数据组合为最终UI测试项目数据。
7.根据权利要求1所述的UI自动化测试方法,其特征在于,步骤2中,根据待测软件当前运行的UI从测试脚本库中选出对应的子测试库的具体步骤为:
步骤2.1,获取软件控制脚本的控制指令,控制指令用于控制待测软件进入对应的UI;
步骤2.2,获取待测软件的运行配置信息,根据运行配置信息判断待测软件是否已经进入与控制指令相对应的UI,若已经进入对应的UI,则跳转至步骤2.4,若未进入对应的UI,则跳转至步骤2.3;
步骤2.3,等待预设的时间阈值后再次获取待测软件的运行配置信息,若判断待测软件已经进入与控制指令相对应的UI,则跳转至步骤2.4,否则通过预设的通信方式向用户反馈软件运行失败的提示信息;
步骤2.4,根据UI的界面名称从测试脚本库中选择对应的子测试库。
8.根据权利要求1所述的UI自动化测试方法,其特征在于,步骤3.2中,利用测试用例数据对待测项进行运行配置的具体步骤为:
步骤3.2.1,从待测软件当前UI的运行配置信息中定位出属于当前测试项的默认配置参数;
步骤3.2.2,利用测试用例数据的测试配置参数替换掉定位出的默认配置参数,并通知UI测试控制脚本参数配置完毕;
步骤3.2.3,由UI测试控制脚本刷新当前UI,使得当前UI按照测试用例数据的测试配置参数运行配置。
9.根据权利要求1所述的UI自动化测试方法,其特征在于,步骤3.3中,将区域图像与比对界面数据中的比对图像进行图形界面近似度计算的具体步骤为:
步骤3.3.1,计算区域图像以及比对图像的灰度均值误差,若误差在灰度阈值范围内,则设定初始比对系数K为1,再进入步骤3.3.2,否则设定初始比对系数K为0,再进入步骤3.3.7;
步骤3.3.2,提取区域图像中的特征元素以及各个特征元素对应的元素位置;
步骤3.3.3,选取一个特征元素,将该特征元素分别与比对界面数据中的比对元素进行近似度计算,若存在一个或多个比对元素与之近似,则设定近似系数M为1,再进入步骤3.3.4,否则设定近似系数M为0,再进入步骤3.3.7;
步骤3.3.4,计算特征元素的坐标位置与各个相似的比对元素的坐标位置之间位置重合率,位置重合率P的计算公式为:
步骤3.3.5,判断是否所有的特征元素都完成了近似度计算,若全部完成了近似度计算,则进入步骤3.3.6,否则返回步骤3.3.3;
步骤3.3.6,判断是否所有的比对元素都被认定为了近似重合元素,若全部被认定为了近似重合元素,则设定重合系数G为1,否则设定重合系数G为0;
步骤3.3.7,计算图形界面的界面近似度Q为:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310147127.5A CN115827499B (zh) | 2023-02-22 | 2023-02-22 | 一种ui自动化测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310147127.5A CN115827499B (zh) | 2023-02-22 | 2023-02-22 | 一种ui自动化测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115827499A CN115827499A (zh) | 2023-03-21 |
CN115827499B true CN115827499B (zh) | 2023-04-25 |
Family
ID=85522066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310147127.5A Active CN115827499B (zh) | 2023-02-22 | 2023-02-22 | 一种ui自动化测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827499B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573567B (zh) * | 2024-01-17 | 2024-05-17 | 易方信息科技股份有限公司 | 一种自动生成ui自动化测试用例的方法及相关装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536593A (zh) * | 2018-04-02 | 2018-09-14 | 泰华智慧产业集团股份有限公司 | 基于ui的cs架构软件自动化测试方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737598A (zh) * | 2019-10-16 | 2020-01-31 | 珠海格力电器股份有限公司 | 基于页面组件特性对页面内容进行测试的方法及装置 |
CN112306893A (zh) * | 2020-11-27 | 2021-02-02 | 平安普惠企业管理有限公司 | 一种ui页面测试方法、装置、计算机设备及存储介质 |
CN114116441A (zh) * | 2020-12-30 | 2022-03-01 | 京东数科海益信息科技有限公司 | 一种ui界面测试方法、装置、电子设备及存储介质 |
-
2023
- 2023-02-22 CN CN202310147127.5A patent/CN115827499B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536593A (zh) * | 2018-04-02 | 2018-09-14 | 泰华智慧产业集团股份有限公司 | 基于ui的cs架构软件自动化测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115827499A (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389898A (zh) | 测试策略的获取方法、装置、终端及计算机可读存储介质 | |
WO2016090929A1 (zh) | 软件系统故障诊断方法、服务器及系统 | |
CN102541740B (zh) | 一种基于Android的手机便签自动化测试方法 | |
CN115827499B (zh) | 一种ui自动化测试方法 | |
CN110287098A (zh) | 自动创建测试脚本方法、服务器及计算机可读存储介质 | |
CN104252481A (zh) | 主从数据库一致性的动态校验方法和装置 | |
CN108459951B (zh) | 测试方法和装置 | |
CN112328489B (zh) | 测试用例生成方法、装置、终端设备和存储介质 | |
US20230376726A1 (en) | Inference service deployment method, device, and storage medium | |
CN110968505A (zh) | 一种api接口的自动化测试方法和系统 | |
CN114661584A (zh) | 一种用于软件测试的测试装置及使用方法 | |
CN112732237B (zh) | 一种无代码开发技术模型构建的方法及系统 | |
CN114238081A (zh) | 一种适用于小卫星批量测试的方法及系统 | |
CN117724980A (zh) | 软件框架性能的测试方法、装置、电子设备和存储介质 | |
CN110716778B (zh) | 应用兼容性测试方法、装置及系统 | |
CN115828804A (zh) | 一种修改rtl源代码文件的方法及电子设备 | |
CN115543820A (zh) | 一种基于tesseract-orc的软件自动化测试方法及系统 | |
CN115357488A (zh) | 自动化测试的方法、装置、电子设备以及存储介质 | |
CN114153725A (zh) | 一种面向复杂显控系统的自动化测试验证方法 | |
CN111309306B (zh) | 人机交互的对话管理系统 | |
CN110163374B (zh) | 一种基于Word通用配置的故障诊断推理系统 | |
CN113392436A (zh) | 一种cae分析软件和办公软件集成化控制方法及平台 | |
CN113297058A (zh) | 一种用例生成方法、测试方法、装置及服务器 | |
CN115033997B (zh) | 基于ar的建筑施工设计系统 | |
CN106201798A (zh) | 产品序列号处理装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |