CN113377650B - 自动化测试用例运行方法、装置、测试设备及存储介质 - Google Patents
自动化测试用例运行方法、装置、测试设备及存储介质 Download PDFInfo
- Publication number
- CN113377650B CN113377650B CN202110644401.0A CN202110644401A CN113377650B CN 113377650 B CN113377650 B CN 113377650B CN 202110644401 A CN202110644401 A CN 202110644401A CN 113377650 B CN113377650 B CN 113377650B
- Authority
- CN
- China
- Prior art keywords
- test
- target
- screenshot
- page
- test case
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及自动化测试技术领域,提供了一种自动化测试用例运行方法、装置、测试设备及存储介质,所述方法包括:截取目标测试步骤测试的页面的页面截图,其中,目标测试步骤为多个测试步骤中当前待执行的测试步骤;根据页面截图及测试设备预先存储的参考截图,判断目标测试步骤是否为重复执行步骤;若目标测试步骤为重复执行步骤,则用目标测试步骤的下一个测试步骤替换目标测试步骤;若目标测试步骤为非重复执行步骤,则执行目标测试步骤。本发明通过跳过重复执行步骤,避免了测试用例再次重复执行时,执行异常测试步骤之前的所有步骤,提高了自动化测试的效率。
Description
技术领域
本发明涉及自动化测试技术领域,具体而言,涉及一种自动化测试用例运行方法、装置、测试设备及存储介质。
背景技术
现有的针对页面的自动化测试基于selenium(selenium是自动化测试工具,其本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等)和Appium(Appium是一个开源工具,用于自动化iOS手机、Android手机和Windows桌面平台上的原生、移动Web和混合应用),需要使用到对应的浏览器驱动和手机驱动,而该类驱动程序异常崩溃概率非常高,页面自动化测试(也称为UI自动化测试)每一步对上一步的依赖性特别强,当驱动程序或者测试脚本发生异常时,测试脚本再次执行会重复执行异常点之前的所有步骤,造成测试用例执行时间的极大浪费,降低了自动化测试的效率。
发明内容
本发明的目的在于提供了一种自动化测试用例运行方法、装置、测试设备及存储介质,其能够避免测试用例再次执行时,重复执行异常测试步骤之前的所有步骤,提高了自动化测试的效率。
为了实现上述目的,本发明采用的技术方案如下:
第一方面,本发明提供一种自动化测试用例运行方法,应用于测试设备,所述测试设备包括待运行的测试用例,所述测试用例包括按序执行的多个测试步骤,所述方法包括:截取目标测试步骤测试的页面的页面截图,其中,所述目标测试步骤为所述多个测试步骤中当前待执行的测试步骤;根据所述页面截图及所述测试设备预先存储的参考截图,判断所述目标测试步骤是否为重复执行步骤;若所述目标测试步骤为重复执行步骤,则用所述目标测试步骤的下一个测试步骤替换所述目标测试步骤;若所述目标测试步骤为非重复执行步骤,则执行所述目标测试步骤。
第二方面,本发明提供一种自动化测试用例运行装置,应用于测试设备,所述测试设备包括待运行的测试用例,所述测试用例包括按序执行的多个测试步骤,所述装置包括:截取模块,用于截取目标测试步骤测试的页面的页面截图,其中,所述目标测试步骤为所述多个测试步骤中当前待执行的测试步骤;判断模块,用于根据所述页面截图及所述测试设备预先存储的参考截图,判断所述目标测试步骤是否为重复执行步骤;替换模块,用于若所述目标测试步骤为重复执行步骤,则用所述目标测试步骤的下一个测试步骤替换所述目标测试步骤;执行模块,用于若所述目标测试步骤为非重复执行步骤,则执行所述目标测试步骤。
第三方面,本发明提供一种测试设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上述的自动化测试用例运行方法。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述的自动化测试用例运行方法。
相对于现有技术,本发明在执行测试用例时,首先截取目标测试步骤测试的页面的页面截图,然后根据页面截图及测试设备预先存储的参考截图,判断目标测试步骤是否为重复执行步骤,若目标测试步骤为重复执行步骤,则用目标测试步骤的下一个测试步骤替换目标测试步骤;若目标测试步骤为非重复执行步骤,则执行目标测试步骤,通过跳过重复执行步骤,避免了测试用例再次重复执行时,执行异常测试步骤之前的所有步骤,提高了自动化测试的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的一种自动化测试用例运行方法的流程示意图。
图2为本发明实施例提供的另一种自动化测试用例运行方法的流程示意图。
图3为本发明实施例提供的另一种自动化测试用例运行方法的流程示意图。
图4为本发明实施例提供的另一种自动化测试用例运行方法的流程示意图。
图5为本发明实施例提供的自动化测试用例运行装置的方框示意图。
图6为本发明实施例提供的测试设备的方框示意图。
图标:10-测试设备;11-处理器;12-存储器;13-总线;14-通信接口;100-自动化测试用例运行装置;110-截取模块;120-判断模块;130-替换模块;140-执行模块;150-生成模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
在现有技术中,以chrome浏览器为例,自动化测试的测试用例稳定性强依赖于chrome驱动(chrome driver),但是chrome driver异常崩溃的概率非常高。当chromedriver异常崩溃时,chrome浏览器会直接退出,导致崩溃之前的测试环境无法恢复。测试用例直接再次执行崩溃前的所有测试步骤,一方面,极大地浪费了测试时间,另一方面,再次执行测试用例时会按照未改变之前的步骤运行,还可能导致一些状态改变类的测试操作无法正常运行通过,最终导致测试用例的测试结果判定错误,且影响相关测试用例的执行,继而导致后续大量的测试用例的测试结果判定错误,并且增加了自动化测试人员定位问题难度。
有鉴于此,本发明实施例提供一种自动化测试用例运行方法、装置、测试设备及存储介质,用于解决上述问题,下面将对其进行详细描述。
请参考图1,为本发明实施例提供的一种自动化测试用例运行方法的流程示意图,该方法包括以下步骤:
步骤S100,截取目标测试步骤测试的页面的页面截图,其中,目标测试步骤为多个测试步骤中当前待执行的测试步骤。
在本实施例中,测试设备包括待运行的测试用例,测试用例包括多个测试步骤,且测试步骤的执行顺序已经预先确定。在执行步骤S100之前,测试用例已经被执行过,且在执行的过程中因浏览器驱动程序或者负责运行测试用例的测试脚本发生异常而导致测试用例的中断,中断后,该测试用例会自动重新被执行。步骤S100即为重新执行测试用例时执行其中任意一个测试步骤的步骤。
在本实施例中,由于是基于浏览器页面的测试,正常情况下,例如,在执行测试用例时,测试脚本或者自动化测试工具会启动浏览器进程,打开浏览器界面,测试步骤在执行时会在界面上确定需要点击的按钮或者输入框,然后进行将预设测试数据输入至输入框中,点击对应的按钮等操作,并判断操作之后的页面显示结果是否与预设结果一致,或者操作后跳转至的页面是否与预设结果一致。
在本实施例中,每一测试步骤对应一个测试页面,测试用例中的每一测试步骤按照预设顺序依次执行,为了避免测试用例中的步骤在本次重复执行过程中再次被执行,在执行测试用例中任一测试步骤之前,首先将该测试步骤测试的测试页面进行截图,得到本测试步骤对应的页面截图。
步骤S110,根据页面截图及测试设备预先存储的参考截图,判断目标测试步骤是否为重复执行步骤。
在本实施例中,作为一种具体实施方式,参考截图预先存储于测试设备,参考截图可以是测试用例第一次正常运行或者测试步骤对应的测试页面发生变化后执行测试用例时,执行每一测试步骤之前对测试页面进行截图后得到的,此时,每一测试步骤均对应一个参考截图。作为另一种具体实施方式,参考截图也可以是上一次测试用例异常中断时保存的当时测试步骤对应的测试页面的截图。
在本实施例中,测试用例可以是针对UI的自动化测试用例,UI可以是webUI或者appUI。
在本实施例中,若目标测试步骤在上一次运行测试用例时已经执行过,则表征目标测试步骤为重复执行步骤,否则目标测试步骤不为重复执行步骤。
步骤S120,若目标测试步骤为重复执行步骤,则用目标测试步骤的下一个测试步骤替换目标测试步骤。
在本实施例中,为了避免再次重复执行目标测试步骤,以提高测试效率,同时也避免由于重复执行目标测试步骤导致后续测试步骤执行失败,进而导致测试用例的执行结果判断错误,将目标测试步骤跳过,然后继续判断目标测试步骤的下一个测试步骤是否为重复执行步骤,判断方式仍然采用步骤S110和步骤S120的方式,直至目标测试步骤为非重复执行步骤或者目标测试步骤为最后一个测试步骤。例如,测试用例包括4个测试步骤:a、b、c和d。当前待执行的测试步骤为a,则a为目标测试步骤,截取a测试的页面的页面截图1,根据页面截图1和参考截图A判断出a为重复执行步骤,则将b替换成目标测试步骤,截取b测试的页面的页面截图2,根据页面截图2和参考截图B判断出b为重复执行步骤,继续判断c,c为非重复执行步骤,则执行c,作为一种具体实施方式,在执行d之前,也可以先判断d是否为重复执行步骤,再确定是否执行d,作为另一种具体实施方式,由于测试步骤是按序执行的,若c非重复执行步骤,则d也必然是非重复执行步骤,则此时可以在执行步骤c之后直接继续执行d,直至所有测试步骤均执行完毕。
步骤S130,若目标测试步骤为非重复执行步骤,则执行目标测试步骤。
本实施例提供的上述方法,通过判断重复执行步骤并跳过重复执行步骤,避免了测试用例再次重复执行时,执行异常测试步骤之前的所有步骤,提高了自动化测试的效率。
在图1的基础上,本发明实施例还给出了一种判断是否为重复执行步骤的具体实施方式,请参照图2,图2为本发明实施例提供的另一种自动化测试用例运行方法的流程示意图,步骤S110包括以下子步骤:
子步骤S1101,根据映射关系,从多个参考截图中确定与目标测试步骤对应的目标参考截图。
在本实施例中,参考截图包括多个,每一测试步骤均对应一个参考截图,测试设备预先存储有每一测试步骤与对应的参考截图之间的映射关系,作为一种具体实现方式,测试步骤和对应的参考截图的截图名可以以dict键值对的方式进行关联,例如映射关系可以如表1所示。
表1
测试步骤 | 参考截图的名称 |
Test001-01 | Login-01 |
Test001-02 | Create-02 |
Test001-03 | Query-03 |
子步骤S1102,判断页面截图与目标参考截图是否一致。
在本实施例中,作为一种具体实施方式,根据目标参考截图的名称可以读取到目标参考截图。
子步骤S1103,若页面截图与目标参考截图一致,则判定目标测试步骤为重复执行步骤。
在本实施例中,页面截图与目标参考截图一致可以是两张图像的哈希值相同,也可以是两张图像中包括的关键信息一致,以测试页面包括页面标题和输入框为例,如果页面截图与目标参考截图分别提取到的页面标题对应的区域特征和输入框对应的区域特征均相同,则判定页面截图与目标参考截图一致,否则判定页面截图与目标参考截图不一致。
子步骤S1104,若页面截图与目标参考截图不一致,则判定目标测试步骤不为重复执行步骤。
本实施例提供的上述方法,通过每一测试步骤与对应的参考截图之间的映射关系,可以快速定位与页面截图对应的目标参考截图,提高了判断页面截图与目标参考截图是否一致的效率,最终提高了判断目标测试步骤是否为重复执行步骤的效率。
在图2的基础上,本发明实施例还提供了一种判断页面截图与目标参考截图是否一致的具体实施方式,请参照图3,图3为本发明实施例提供的另一种自动化测试用例运行方法的流程示意图,子步骤S1102包括以下子步骤:
子步骤S11020,计算页面截图的第二哈希值。
在本实施例中,第二哈希值可以是根据页面截图的数据通过预设哈希函数生成哈希值。作为一种具体实施方式,第二哈希值可以通过如下方式计算:
首先,将页面截图缩放为预设大小,并将缩放后的图片转换为灰度图。
在本实施例中,将缩放后的图片转换为灰度图采用的转换方式包括、但不限于浮点法、整数法、移位法、平均值法等。
其次,计算灰度图的平均灰度值。
在本实施例中,计算灰度图中的所有像素点的灰度值的平均值,得到灰度图的平均灰度值。
最后,根据平均灰度值及灰度图中每一像素点的灰度值生成第二哈希值。
在本实施例中,对于灰度图中任一目标像素点而言,若目标像素点的灰度值大于平均灰度值,则将目标像素点对应的值设置为1,否则将目标像素点对应的值设置为0,对灰度图中每一个像素点均设置对应的值,得到该灰度图的图片数据,再对该图片数据进行哈希计算,得到第二哈希值。
子步骤S11021,若第一哈希值等于第二哈希值,则判定页面截图与目标参考截图一致。
在本实施例中,第一哈希值是目标参考截图的哈希值,计算第一哈希值和第二哈希值的方式完全相同,此处不再赘述。
在本实施例中,作为一种具体实现方式,每一个参考截图均对应一个哈希值,每一参考截图对应的哈希值可以在截取参考截图后就计算出来,然后存储于测试设备,后续需要进行哈希值比较时可以直接读取预先存储的第一哈希值,也可以在确定目标参考截图后,在需要和第二哈希值进行比较之前再计算得到。
子步骤S11022,若第一哈希值不等于第二哈希值,则判定页面截图与目标参考截图不一致。
在本实施例中,可以直接比较第一哈希值和第二哈希值,也可以先将第一哈希值和第二哈希值分别转换成哈希字符串,通过对比两个哈希字符串是否相同,以判断页面截图与目标参考截图是否一致。
本发明实施例提供的上述方式,通过比较页面截图与目标参考截图的哈希值判断二者是否一致,由此可以大大减少比较数据量,提高了判断的效率。
在本实施例中,为了及时得到参考截图或者在测试页面发生变化后及时对参考截图进行更新,本发明实施例还提供了一种获取参考截图的实现方式,请参照图4,图4为本发明实施例提供的另一种自动化测试用例运行方法的流程示意图,该方法包括以下步骤:
步骤S200,当检测到首次执行测试用例或者测试页面发生变化时,执行测试用例的每一测试步骤之前,均截取每一测试步骤对应的测试页面,作为每一测试步骤对应的参考截图。
在本实施例中,作为一种具体实施方式,为了将获取参考截图和实际运行测试用例很好地统一起来,可以设置一个标志位flag,当flag为TRUE时,则在执行测试用例的每一测试步骤之前,均截取每一测试步骤对应的测试页面,作为每一测试步骤对应的参考截图,也就是获取参考截图,当flag为FALSE时,则正常执行测试用例,无需获取参考截图。
可以理解的是,为了避免频繁地获取参考截图,可以在首次执行测试用例时将flag设置为TRUE,也可以在测试页面发生变化时将flag设置为TRUE,还可以根据需要将flag设置为TRUE。
为了便于理解本发明实施例,下面分别给出应用本发明实施例前后的自动化测试流程的一种具体实现示例。
应用于本发明实施例之前,自动化测试流程如下:
S11:调用各自测试框架的构建脚本或命令执行脚本。
S12:测试脚本调用Chrome driver(即Chrome浏览器驱动)。
S13:启动浏览器进程,打开浏览器界面,显示测试页面。
S14:执行测试用例中的测试操作,使用selenium模块函数进行元素定位,找到测试页面需要点击的按钮和输入框,进行登录,创建,查询等测试操作。
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
S15:每一次测试操作之后测试页面会进行相应的跳转,获取操作结果的页面标志并获取标志按钮里的txt信息。
测试操作之后,测试页面会发生变化,或者测试页面会进行跳转,或者是测试页面上弹出对话框,对话框中存在txt信息等。例如,创建员工信息的操作之后,测试页面可以发生变化,将创建成功的员工信息显示在测试页面上,也可以跳转至另一个页面,在该页面上显示“员工信息创建成功”的信息提示,还可以弹出一个消息提示框,该框中的信息为“员工信息创建成功”。
S16:根据txt信息进行断言(断言方式,可以是将txt信息与预设的信息进行比对),以判断该测试操作的测试结果是测试通过还是测试未通过。
若txt信息与预设的信息相同,则测试通过,否则测试未通过。
S17:恢复测试环境,清除测试搭建的预置环境和测试逻辑改变的环境,确保执行用例之后的环境与执行测试用例之前完全一致,如删除创建的用户,清除环境的修改等。
S18:关闭浏览器,关闭Chrome driver,脚本执行完毕。
本发明实施例的一种具体实现方式如下:
该实现方式包括pretest模块、test模块、exception模块。
pretest模块用于:设置一个标志位flag,当flag为TRUE时在测试用例执行之前执行,获取测试用例中各个节点的屏幕截图将截图名和对应步骤以dict键值对的方式形成映射关系,以备异常处理时使用,执行完之后将标志位置为FALSE,该模块只在首次运行或UI测试页面有变更的情况下执行一遍即可。
具体地,测试用例执行前判定flag标志位,如果为TRUE则运行屏幕截图脚本,更新各个步骤的测试截图到工程resource目录下,截图名和步骤以键值对的方式形成映射,执行完成将flag置为FALSE;如果为FALSE则不执行屏幕截图脚本。
test模块用于:执行具体测试用例,判定测试结果。
具体地,test模块用于:
(1)预置环境搭建
每条测试用例测试逻辑之前执行,自动化创建测试所需的预置环境。
(2)测试逻辑
执行测试用例核心逻辑,并对各个测试步骤进行断言。
(3)测试环境清理
恢复测试环境,清除测试搭建的预置环境和测试逻辑改变的环境,确保执行用例之后的环境与执行测试用例之前完全一致。
exception模块用于:当浏览器驱动出现异常崩溃或测试脚本异常退出时,重新执行该条测试用例,并逐步判定各个步骤是否执行,未执行按原步骤执行,已执行则跳过,直接判定下一步是否已执行。
exception模块重新执行异常用例时,依次判定各个步骤是否已执行,如未执行则正常执行,如已执行则直接跳过该步骤,进入下一个步骤的判定,直至测试用例结束,重试次数上限可以根据需要进行设置,例如设置为3次,超过则该条用例直接判定为失败,接着执行下一条用例。
具体地,该模块负责浏览器驱动异常崩溃和测试脚本异常退出处理,当驱动异常崩溃或测试脚本异常退出时,用例会重新执行,在每个步骤执行前会再次截图,将截取的图片和pretest模块预先采集的截图,使用均值哈希算法转为哈希字符串,通过对比两张截图的哈希字符串,来判定各个步骤是否已经执行,如果未执行则按原步骤执行,否则直接跳过该步骤进入下一个步骤的判定,从而避免发生异常时测试用例因上一步已执行而导致连锁失败。
应用于本发明实施例之后,自动化测试流程如下:
S21:调用各自测试框架的构建脚本或命令执行脚本。
S22:判定pretest模块flag标志位,如果为TRUE则执行S23,如果为FALSE则执行S24,flag标志位只在首次运行或UI页面有变化的时候需要置为True;
S23:运行屏幕截图脚本,更新各个步骤的测试截图到工程resource目录下,截图名和步骤以dict键值对的方式形成映射并生成key-value.json文件,执行完成后将flag置为False;
S24:不再对页面进行截图,测试脚本直接调用Chrome driver;
S25:启动浏览器,打开浏览器界面;
S26:执行脚本步骤1,对当前步骤页面再次截图,通过exception模块函数将当前步骤页面截取的图片和S3步骤采集的截图,通过读取key-value.json文件的映射关系进行匹配,匹配成功之后采用均值哈希算法将对应步骤两次采集的图片转为hash字符串,对比两张截图的hash字符串,相同则说明步骤1未执行,不同则说明该步骤1已执行,如果已执行则跳过步骤1,继续以此方法判定步骤2,以此类推步骤3,4,……n循环此操作。如果步骤1未执行,则执行步骤1,执行完之后进入步骤2判定,以此类推步骤3,4,……n循环此操作;
S27:获取操作结果的页面标志并获取标志按钮里的txt信息,根据txt信息进行断言;
S28:恢复测试环境,清除测试搭建的预置环境和测试逻辑改变的环境,确保执行用例之后的环境与执行测试用例之前完全一致,如删除创建的用户,清除环境的修改等;
S29:关闭浏览器,脚本执行完毕。
为了执行上述实施例及各个可能的实施方式中安全装备的识别方法的相应步骤,下面给出一种自动化测试用例运行装置100的实现方式。请参照图5,图5示出了本发明实施例提供的自动化测试用例运行装置100的方框示意图。需要说明的是,本实施例所提供的自动化测试用例运行装置100,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及指出。
自动化测试用例运行装置100包括截取模块110、判断模块120、替换模块130、执行模块140及生成模块150。
截取模块110,用于截取目标测试步骤测试的页面的页面截图,其中,目标测试步骤为所述多个测试步骤中当前待执行的测试步骤。
判断模块120,用于根据页面截图及测试设备预先存储的参考截图,判断目标测试步骤是否为重复执行步骤。
作为一种具体实施方式,参考截图包括多个,每一测试步骤均对应一个参考截图,测试设备预先存储有每一测试步骤与对应的参考截图之间的映射关系,判断模块120具体用于:根据映射关系,从多个参考截图中确定与目标测试步骤对应的目标参考截图;判断页面截图与目标参考截图是否一致;若页面截图与目标参考截图一致,则判定目标测试步骤为重复执行步骤;若页面截图与目标参考截图不一致,则判定目标测试步骤不为重复执行步骤。
作为一种具体实施方式,测试设备预先还存储有目标参考截图的第一哈希值,判断模块120在用于判断页面截图与目标参考截图是否一致时,具体用于:计算页面截图的第二哈希值;若第一哈希值等于第二哈希值,则判定页面截图与目标参考截图一致;若第一哈希值不等于第二哈希值,则判定页面截图与目标参考截图不一致。
作为一种具体实施方式,判断模块120在用于计算页面截图的第二哈希值时,具体用于:将页面截图缩放为预设大小,并将缩放后的图片转换为灰度图;计算灰度图的平均灰度值;根据平均灰度值及灰度图中每一像素点的灰度值生成第二哈希值。
替换模块130,用于若目标测试步骤为重复执行步骤,则用目标测试步骤的下一个测试步骤替换目标测试步骤。
执行模块140,用于若目标测试步骤为非重复执行步骤,则执行目标测试步骤。
生成模块150,用于当检测到首次执行测试用例或者测试页面发生变化时,执行测试用例的每一测试步骤之前,均截取每一测试步骤对应的测试页面,作为每一测试步骤对应的参考截图。
本发明实施例还给出了测试设备10的方框示意图,请参照图6,图6为本发明实施例提供的测试设备10的方框示意图,测试设备10包括处理器11、存储器12、总线13、通信接口14。处理器11、存储器12通过总线13连接,处理器11通过通信接口14与外部设备通信。
处理器11可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器11中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器11可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器12用于存储程序,例如本发明实施例中的自动化测试用例运行装置100,自动化测试用例运行装置100均包括至少一个可以软件或固件(firmware)的形式存储于存储器12中的软件功能模块,处理器11在接收到执行指令后,执行所述程序以实现本发明实施例中的自动化测试用例运行方法。
存储器12可能包括高速随机存取存储器(RAM:Random Access Memory),也可能还包括非易失存储器(non-volatile memory)。可选地,存储器12可以是内置于处理器11中的存储装置,也可以是独立于处理器11的存储装置。
总线13可以是ISA总线、PCI总线或EISA总线等。图6仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述的自动化测试用例运行方法。
综上所述,本发明实施例提供了一种自动化测试用例运行方法、装置、测试设备及存储介质,应用于测试设备,测试设备包括待运行的测试用例,测试用例包括按序执行的多个测试步骤,所述方法包括:截取目标测试步骤测试的页面的页面截图,其中,目标测试步骤为多个测试步骤中当前待执行的测试步骤;根据页面截图及测试设备预先存储的参考截图,判断目标测试步骤是否为重复执行步骤;若目标测试步骤为重复执行步骤,则用目标测试步骤的下一个测试步骤替换目标测试步骤;若目标测试步骤为非重复执行步骤,则执行目标测试步骤。与现有技术相比,本发明实施例具有以下有益效果:
首先,能够更快捷的定位问题。
现有的UI自动化测试,当浏览器驱动异常崩溃或测试脚本异常退出时,由于当前测试脚本执行失败,如果异常点之前的步骤中有状态改变类的操作,重新运行会导致异常点的下一步失败,进而导致后续脚本大面积的失败且脚本失败原因一致,此时失败脚本多且脚本执行没有固定顺序,生成大量干扰日志,很难定位到第一个出错的脚本以及具体的失败原因。本发明实施例能够避免在该异常情况下脚本的大面积失败,且能够对失败脚本进行重跑,缩小定位范围,从而达到快捷定位问题的效果。
其次,节省人力。
当浏览器驱动异常崩溃或脚本异常退出时,按照现有的UI自动化测试,可能出现大面积失败,此时需要测试人员对失败脚本进行一个一个的手动执行去定位每个脚本的失败原因,执行起来耗时间,效率也不高。采用本发明的方法,可以避免脚本大面积失败,从而达到减少人力成本的效果。
最后,记忆执行脚本,避免已执行的步骤重复执行。
在脚本执行过程中,通过本发明提出的方法,已对各个测试页面预先进行截图,如果执行到某一个步骤发生异常了,则脚本会重新执行,重新执行的过程中会将当前步骤所对应的测试页面和预先截取的参考截图进行对比,异常点之前,已经执行过的步骤则不再进行重复执行避免出错,脚本会在出错的地方继续往下执行,从而达到记忆执行的效果,提升脚本运行效率及自动化测试的效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种自动化测试用例运行方法,其特征在于,应用于测试设备,所述测试设备包括待运行的测试用例,所述测试用例包括按序执行的多个测试步骤,所述测试用例已经被执行过,且在执行的过程中因浏览器驱动程序或者负责运行测试用例的测试脚本发生异常而导致测试用例的中断,所述方法包括:
截取目标测试步骤测试的页面的页面截图,其中,所述目标测试步骤为所述多个测试步骤中当前待执行的测试步骤;
根据所述页面截图及所述测试设备预先存储的参考截图,判断所述目标测试步骤是否为重复执行步骤;
若所述目标测试步骤为重复执行步骤,则用所述目标测试步骤的下一个测试步骤替换所述目标测试步骤,重复执行所述根据所述页面截图及所述测试设备预先存储的参考截图,判断所述目标测试步骤是否为重复执行步骤及所述若所述目标测试步骤为重复执行步骤,则用所述目标测试步骤的下一个测试步骤替换所述目标测试步骤,直至所述目标测试步骤为非重复执行步骤或者所述目标测试步骤为最后一个测试步骤;
若所述目标测试步骤为非重复执行步骤,则执行所述目标测试步骤。
2.如权利要求1所述的自动化测试用例运行方法,其特征在于,所述参考截图包括多个,每一测试步骤均对应一个参考截图,所述测试设备预先存储有每一测试步骤与对应的参考截图之间的映射关系,所述根据所述页面截图及所述测试设备预先存储的参考截图,判断所述目标测试步骤是否为重复执行步骤的步骤包括:
根据所述映射关系,从多个所述参考截图中确定与所述目标测试步骤对应的目标参考截图;
判断所述页面截图与所述目标参考截图是否一致;
若所述页面截图与所述目标参考截图一致,则判定所述目标测试步骤为重复执行步骤;
若所述页面截图与所述目标参考截图不一致,则判定所述目标测试步骤不为重复执行步骤。
3.如权利要求2所述的自动化测试用例运行方法,其特征在于,所述测试设备预先还存储有所述目标参考截图的第一哈希值,所述判断所述页面截图与所述目标参考截图是否一致的步骤包括:
计算所述页面截图的第二哈希值;
若所述第一哈希值等于所述第二哈希值,则判定所述页面截图与所述目标参考截图一致;
若所述第一哈希值不等于所述第二哈希值,则判定所述页面截图与所述目标参考截图不一致。
4.如权利要求3所述的自动化测试用例运行方法,其特征在于,所述计算所述页面截图的第二哈希值的步骤包括:
将所述页面截图缩放为预设大小,并将缩放后的图片转换为灰度图;
计算所述灰度图的平均灰度值;
根据所述平均灰度值及所述灰度图中每一像素点的灰度值生成所述第二哈希值。
5.如权利要求1-4中任一项所述的自动化测试用例运行方法,其特征在于,所述方法还包括:
当检测到首次执行所述测试用例或者测试页面发生变化时,执行测试用例的每一测试步骤之前,均截取所述每一测试步骤对应的测试页面,作为所述每一测试步骤对应的参考截图。
6.一种自动化测试用例运行装置,其特征在于,应用于测试设备,所述测试设备包括待运行的测试用例,所述测试用例包括按序执行的多个测试步骤,所述测试用例已经被执行过,且在执行的过程中因浏览器驱动程序或者负责运行测试用例的测试脚本发生异常而导致测试用例的中断,所述装置包括:
截取模块,用于截取目标测试步骤测试的页面的页面截图,其中,所述目标测试步骤为所述多个测试步骤中当前待执行的测试步骤;
判断模块,用于根据所述页面截图及所述测试设备预先存储的参考截图,判断所述目标测试步骤是否为重复执行步骤;
替换模块,用于若所述目标测试步骤为重复执行步骤,则用所述目标测试步骤的下一个测试步骤替换所述目标测试步骤,还用于重复执行所述根据所述页面截图及所述测试设备预先存储的参考截图,判断所述目标测试步骤是否为重复执行步骤及所述若所述目标测试步骤为重复执行步骤,则用所述目标测试步骤的下一个测试步骤替换所述目标测试步骤,直至所述目标测试步骤为非重复执行步骤或者所述目标测试步骤为最后一个测试步骤;
执行模块,用于若所述目标测试步骤为非重复执行步骤,则执行所述目标测试步骤。
7.如权利要求6所述的自动化测试用例运行装置,其特征在于,所述参考截图包括多个,每一测试步骤均对应一个参考截图,所述测试设备预先存储有每一测试步骤与对应的参考截图之间的映射关系,所述判断模块具体用于:
根据所述映射关系,从多个所述参考截图中确定与所述目标测试步骤对应的目标参考截图;
判断所述页面截图与所述目标参考截图是否一致;
若所述页面截图与所述目标参考截图一致,则判定所述目标测试步骤为重复执行步骤;
若所述页面截图与所述目标参考截图不一致,则判定所述目标测试步骤不为重复执行步骤。
8.如权利要求6或7所述的自动化测试用例运行装置,其特征在于,所述装置还包括生成模块,所述生成模块用于:
当检测到首次执行所述测试用例或者测试页面发生变化时,执行测试用例的每一测试步骤之前,均截取所述每一测试步骤对应的测试页面,作为所述每一测试步骤对应的参考截图。
9.一种测试设备,包括存储器和处理器,其特征在于,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-5中任一项所述的自动化测试用例运行方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-5中任一项所述的自动化测试用例运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110644401.0A CN113377650B (zh) | 2021-06-09 | 2021-06-09 | 自动化测试用例运行方法、装置、测试设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110644401.0A CN113377650B (zh) | 2021-06-09 | 2021-06-09 | 自动化测试用例运行方法、装置、测试设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377650A CN113377650A (zh) | 2021-09-10 |
CN113377650B true CN113377650B (zh) | 2022-06-21 |
Family
ID=77573372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110644401.0A Active CN113377650B (zh) | 2021-06-09 | 2021-06-09 | 自动化测试用例运行方法、装置、测试设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377650B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114670200B (zh) * | 2022-03-30 | 2024-04-26 | 上海擎朗智能科技有限公司 | 应用于机器人的自动化测试方法、计算机存储介质及机器人 |
CN115756996B (zh) * | 2023-01-09 | 2023-04-18 | 苏州浪潮智能科技有限公司 | 一种芯片测试方法、装置、设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851665A (zh) * | 2005-11-07 | 2006-10-25 | 华为技术有限公司 | 一种利用测试套完成产品自动化测试的方法 |
CN109828906A (zh) * | 2018-12-15 | 2019-05-31 | 中国平安人寿保险股份有限公司 | Ui自动化测试方法、装置、电子设备及存储介质 |
CN109857642A (zh) * | 2018-12-30 | 2019-06-07 | 贝壳技术有限公司 | 一种ui自动化脚本的阻塞式调试方法及调试工具 |
CA3094320A1 (en) * | 2018-03-23 | 2019-09-26 | Sungard Availability Services, Lp | Unified test automation system |
CN110543429A (zh) * | 2019-09-10 | 2019-12-06 | 深圳前海微众银行股份有限公司 | 测试用例调试方法、装置及存储介质 |
CN112799943A (zh) * | 2021-01-29 | 2021-05-14 | 中国工商银行股份有限公司 | 业务系统自动化测试方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496527B2 (en) * | 2017-07-25 | 2019-12-03 | Belay Technologies, Inc. | System and method for rapid and repeatable provisioning and regression testing plans |
-
2021
- 2021-06-09 CN CN202110644401.0A patent/CN113377650B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851665A (zh) * | 2005-11-07 | 2006-10-25 | 华为技术有限公司 | 一种利用测试套完成产品自动化测试的方法 |
CA3094320A1 (en) * | 2018-03-23 | 2019-09-26 | Sungard Availability Services, Lp | Unified test automation system |
CN109828906A (zh) * | 2018-12-15 | 2019-05-31 | 中国平安人寿保险股份有限公司 | Ui自动化测试方法、装置、电子设备及存储介质 |
CN109857642A (zh) * | 2018-12-30 | 2019-06-07 | 贝壳技术有限公司 | 一种ui自动化脚本的阻塞式调试方法及调试工具 |
CN110543429A (zh) * | 2019-09-10 | 2019-12-06 | 深圳前海微众银行股份有限公司 | 测试用例调试方法、装置及存储介质 |
CN112799943A (zh) * | 2021-01-29 | 2021-05-14 | 中国工商银行股份有限公司 | 业务系统自动化测试方法及装置 |
Non-Patent Citations (2)
Title |
---|
Testing analytics on software variability;Hareton K. N. Leung等;《2015 IEEE 1st International Workshop on Software Analytics (SWAN)》;20150402;第17-20页 * |
Web应用测试模型及其自动化测试研究;陈江勇;《cnki优秀硕士学位论文全文库 信息科技辑》;20130215;第I138-1019页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113377650A (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9846634B2 (en) | Visual graphical user interface verification | |
CN113377650B (zh) | 自动化测试用例运行方法、装置、测试设备及存储介质 | |
CN111026645B (zh) | 用户界面自动化测试方法、装置、存储介质及电子设备 | |
CN107025174B (zh) | 用于设备的用户界面异常测试的方法、装置和可读储介质 | |
US20160283353A1 (en) | Automated software testing | |
CN104391797A (zh) | Gui控件的识别方法和装置 | |
CN111061526A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN111274154A (zh) | 一种自动化测试的方法、装置、设备及存储介质 | |
WO2019056720A1 (zh) | 自动化测试用例管理方法、装置、设备及存储介质 | |
JP2006268666A (ja) | 補正機能を持つ自動試験システム、自動試験方法、およびプログラム | |
CN111414309B (zh) | 应用程序的自动化测试方法、计算机设备和存储介质 | |
JP6891780B2 (ja) | ソフトウェア品質判定装置、ソフトウェア品質判定方法、及びソフトウェア品質判定プログラム | |
CN108121648B (zh) | 一种界面错误监控方法 | |
CN114020432A (zh) | 任务异常处理方法、装置及任务异常处理系统 | |
US20220171510A1 (en) | Automated testing of mobile devices using behavioral learning | |
CN111125990A (zh) | 一种寄生参数结果正确性的判断方法 | |
US7500145B2 (en) | Anomaly-driven software switch to capture event responses and automate recovery | |
CN113722229A (zh) | 软件测试方法、装置、电子设备和存储介质 | |
CN109739752B (zh) | 内置资源测试方法、装置、电子设备及可读存储介质 | |
TWI650710B (zh) | 測試流程的檢測方法 | |
CN112733199A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN113312269B (zh) | 软件缺陷分级方法、装置、设备及存储介质 | |
CN111522737B (zh) | 一种前端界面的自动化测试校验方法、装置及存储介质 | |
CN112015650B (zh) | 基于计算机视觉的事件测试方法及装置 | |
CN112783788B (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 |