CN107463500B - 测试脚本的调试方法、介质、系统和计算设备 - Google Patents

测试脚本的调试方法、介质、系统和计算设备 Download PDF

Info

Publication number
CN107463500B
CN107463500B CN201710676711.4A CN201710676711A CN107463500B CN 107463500 B CN107463500 B CN 107463500B CN 201710676711 A CN201710676711 A CN 201710676711A CN 107463500 B CN107463500 B CN 107463500B
Authority
CN
China
Prior art keywords
script
sub
test script
test
executed
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
Application number
CN201710676711.4A
Other languages
English (en)
Other versions
CN107463500A (zh
Inventor
井诚
刘潇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201710676711.4A priority Critical patent/CN107463500B/zh
Publication of CN107463500A publication Critical patent/CN107463500A/zh
Application granted granted Critical
Publication of CN107463500B publication Critical patent/CN107463500B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

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)
  • Stored Programmes (AREA)

Abstract

本发明的实施方式提供了一种测试脚本的调试方法,该测试脚本的调试方法包括:在执行测试脚本的过程中,检测包含在测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本;以及若出现了暂停执行的子脚本,则暂停执行测试脚本。通过在测试脚本执行时的任意时刻或者执行失败时,自动暂停测试脚本,本发明克服了相关技术中测试脚本只能终止不能暂停导致的测试脚本修复后只能从头开始重新执行的缺陷,从而显著地降低了测试脚本的调试成本,为用户带来了更好的体验,并且减少了测试人员的时间成本消耗。此外,本发明的实施方式提供了一种测试脚本的调试系统、一种介质和一种计算设备。

Description

测试脚本的调试方法、介质、系统和计算设备
技术领域
本发明的实施方式涉及计算机领域,更具体地,本发明的实施方式涉及测试脚本的调试方法、介质、系统和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
对于任何一款应用程序而言,在产品质量保障过程中,自动化测试越来越被测试人员熟知并认可,用以辅助日常的手工测试来保障产品的质量。特别是在安卓市场碎片化严重的今天,缺少自动化则意味着产品质量由于无法得到全面的兼容性测试而无法得到保障,因此自动化测试显得格外重要。而在编写自动化测试脚本的过程中,投入最多、成本最高的莫过于测试脚本的调试。
目前,已经出现一些常见测试脚本的调试方法。但是,在实现本发明实施例的过程中,发明人发现:常见测试脚本的调试方法都无一例外,在脚本执行期间,无论是由于脚本错误,还是由于安卓应用自身的问题,导致测试脚本终止,测试人员修改脚本后只能从头开始重新执行测试脚本,这种低效的调试方法带给测试人员的无疑是更多时间成本的投入。
发明内容
但是,由于相关技术中在测试脚本的过程中,测试脚本一旦出现故障,只能终止,无法暂停,导致测试脚本修复后只能从头开始重新执行,不仅测试效率较低,而且测试人员时间成本的投入高。
因此在现有技术中,测试脚本遇到故障后必须从头开始重新执行,这是非常令人烦恼的。
为此,非常需要一种改进的测试脚本的调试方法,以使测试人员在修改测试脚本后,可以自行决定从任意代码处开始继续执行测试脚本。
在本上下文中,本发明的实施方式期望提供一种改进的测试脚本的调试方法及其系统。
在本发明实施方式的第一方面中,提供了一种测试脚本的调试方法,包括:在执行测试脚本的过程中,检测包含在上述测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本;以及若出现了上述暂停执行的子脚本,则暂停执行上述测试脚本。
在本发明的一个实施例中,在暂停执行上述测试脚本之后,上述方法还包括:检测是否需要恢复执行上述测试脚本;以及若需要恢复执行上述测试脚本,则从上述暂停执行的子脚本处或从指定子脚本处开始继续执行上述测试脚本,其中,上述指定子脚本的执行顺序在上述暂停执行的子脚本之前。
在本发明的另一实施例中,检测包含在上述测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本包括:检测上述多个子脚本中的第一子脚本是否执行失败;或者检测上述多个子脚本中的上述第一子脚本是否被用户执行了暂停操作。
在本发明的又一个实施例中,上述方法还包括:若检测到上述多个子脚本中的上述第一子脚本执行失败,则通过上述测试脚本在上述测试脚本的目录下生成一个隐藏的空文件作为第一脚本暂停标识;或者若检测到上述多个子脚本中的上述第一子脚本被用户执行了暂停操作,则通过用户执行上述暂停操作所使用的客户端在上述测试脚本的目录下生成一个隐藏的空文件作为第二脚本暂停标识,其中,上述第一脚本暂停标识和上述第二脚本暂停标识用于标识上述测试脚本当前处于暂停执行状态。在本发明的再一个实施例中,在暂停执行上述测试脚本之后,上述方法还包括:在上述暂停执行的子脚本被修改后,更新上述暂停执行的子脚本的代码,得到更新后的子脚本;以及编译上述更新后的子脚本,以生成对应的类文件。
在本发明的再一个实施例中,在编译上述更新后的子脚本,以生成对应的类文件之后,上述方法还包括:检测上述第一脚本暂停标识或者上述第二脚本暂停标识是否已消失;若检测到上述第一脚本暂停标识或者上述第二脚本暂停标识已消失,则加载上述类文件,以使上述测试脚本能够从上述更新后的子脚本处恢复执行。
在本发明的再一个实施例中,在执行上述测试脚本之前,上述方法还包括:将上述测试脚本按照代码执行顺序划分为上述多个子脚本,其中,每个子脚本包括一行或者多行代码。
在本发明的再一个实施例中,在执行上述测试脚本之前,上述方法还包括:在将下位机与上位机相连,且从上述下位机上安装的应用程序中选定待测应用程序后,在上位机的显示屏中显示第一界面和第二界面,其中,上述第一界面用于显示上述下位机的屏幕内容,上述屏幕内容包括上述待测应用程序,上述第二界面用于显示测试步骤,上述测试步骤为录制用于测试上述待测应用程序的脚本时生成的步骤;以及将录制的脚本作为上述测试脚本。
在本发明的再一个实施例中,上述方法还包括:通过上述上位机的上述第一界面接收操作指令;控制上述下位机响应于上述操作指令,以执行对应的操作动作;以及在上述第一界面上同步显示上述下位机在执行上述操作动作后的屏幕内容。
在本发明实施方式的第二方面中,提供了一种介质,存储有计算机可执行指令,上述指令在被处理器执行时用于实现上述实施例中任一项所述的信息生成方法。
在本发明实施方式的第三方面中,提供了一种测试脚本的调试系统,包括:第一检测模块,用于在执行测试脚本的过程中,检测包含在上述测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本;以及第一处理模块,用于在出现了上述暂停执行的子脚本的情况下,暂停执行上述测试脚本。
在本发明的一个实施例中,上述系统还包括:第二检测模块,用于在暂停执行上述测试脚本之后,检测是否需要恢复执行上述测试脚本;以及第二处理模块,用于在需要恢复执行上述测试脚本的情况下,从上述暂停执行的子脚本处或从指定子脚本处开始继续执行上述测试脚本,其中,上述指定子脚本的执行顺序在上述暂停执行的子脚本之前。
在本发明的另一实施例中,上述第一检测模块包括:第一检测单元,用于检测上述多个子脚本中的第一子脚本是否执行失败;或者第二检测单元,用于检测上述多个子脚本中的上述第一子脚本是否被用户执行了暂停操作。
在本发明的又一个实施例中,上述系统还包括:第一生成模块,用于在检测到上述多个子脚本中的上述第一子脚本执行失败的情况下,通过上述测试脚本在上述测试脚本的目录下生成一个隐藏的空文件作为第一脚本暂停标识;或者第二生成模块,用于在检测到上述多个子脚本中的上述第一子脚本被用户执行了暂停操作的情况下,通过用户执行上述暂停操作所使用的客户端在上述测试脚本的目录下生成一个隐藏的空文件作为第二脚本暂停标识,其中,上述第一脚本暂停标识和上述第二脚本暂停标识用于标识上述测试脚本当前处于暂停执行状态。
在本发明的再一个实施例中,上述系统还包括:更新模块,用于在暂停执行上述测试脚本之后,且在上述暂停执行的子脚本被修改后,更新上述暂停执行的子脚本的代码,得到更新后的子脚本;以及编译模块,用于编译上述更新后的子脚本,以生成对应的类文件。
在本发明的再一个实施例中,上述系统还包括:第三检测模块,用于在编译上述更新后的子脚本,以生成对应的类文件之后,检测上述第一脚本暂停标识或者上述第二脚本暂停标识是否已消失;加载模块,用于在检测到上述第一脚本暂停标识或者上述第二脚本暂停标识已消失的情况下,加载上述类文件,以使上述测试脚本能够从上述更新后的子脚本处恢复执行。
在本发明的再一个实施例中,上述系统还包括:划分模块,用于在执行上述测试脚本之前,将上述测试脚本按照代码执行顺序划分为上述多个子脚本,其中,每个子脚本包括一行或者多行代码。
在本发明的再一个实施例中,上述系统还包括:第一显示模块,用于在执行上述测试脚本之前,在将下位机与上位机相连,且从上述下位机上安装的应用程序中选定待测应用程序后,在上位机的显示屏中显示第一界面和第二界面,其中,上述第一界面用于显示上述下位机的屏幕内容,上述屏幕内容包括上述待测应用程序,上述第二界面用于显示测试步骤,上述测试步骤为录制用于测试上述待测应用程序的脚本时生成的步骤;以及确定模块,用于将录制的脚本作为上述测试脚本。
在本发明的再一个实施例中,上述系统还包括:接收模块,用于通过上述上位机的上述第一界面接收操作指令;控制模块,用于控制上述下位机响应于上述操作指令,以执行对应的操作动作;以及第二显示模块,用于在上述第一界面上同步显示上述下位机在执行上述操作动作后的屏幕内容。
在本发明实施方式的第四方面中,提供了一种计算设备,包括:处理器;以及存储器,存储有计算机可执行指令,上述指令在被上述处理器执行时用于实现上述实施例中任一项所述的信息生成方法。
根据本发明实施方式的测试脚本的调试方法及其系统,测试人员在修改测试脚本后,可以通过删除脚本暂停标识的方式使修改后的脚本(即新的测试代码)立即生效,这样,脚本继续执行时会使用新的测试代码,而非老的测试代码(即修改前的脚本),并且修改脚本后测试人员可以自行决定从任意代码处开始继续执行测试脚本,克服了相关技术中需要从头开始重新执行测试脚本的缺陷,从而显著地降低了测试脚本的调试成本,为用户带来了更好的体验,并且减少了测试人员的时间成本消耗。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的可以应用测试脚本的调试方法及其系统的示例性系统架构;
图2A示意性地示出了根据本发明实施例的测试脚本的调试方法的流程图;
图2B示意性地示出了根据本发明实施例的传统测试脚本的调试方法的流程图;
图2C示意性地示出了根据本发明另一实施例的测试脚本的调试方法的流程图;
图2D示意性地示出了根据本发明另一实施例的测试脚本的调试方法的流程图;
图2E示意性地示出了根据本发明另一实施例的测试脚本的调试方法的流程图;
图2F示意性地示出了根据本发明另一实施例的测试脚本的调试方法的流程图;
图2G示意性地示出了根据本发明实施例的测试界面的示意图;
图2H示意性地示出了根据本发明另一实施例的测试界面的示意图;
图3A示意性地示出了根据本发明实施例的测试脚本的调试系统的框图;以及
图3B示意性地示出了根据本发明另一实施例的测试脚本的调试系统的框图;
图3C示意性地示出了根据本发明实施例的第一检测模块的框图;
图3D示意性地示出了根据本发明另一实施例的测试脚本的调试系统的框图;
图3E示意性地示出了根据本发明另一实施例的测试脚本的调试系统的框图;
图3F示意性地示出了根据本发明另一实施例的测试脚本的调试系统的框图;
图3G示意性地示出了根据本发明另一实施例的测试脚本的调试系统的框图;
图3H示意性地示出了根据本发明另一实施例的测试脚本的调试系统的框图;
图3I示意性地示出了根据本发明另一实施例的测试脚本的调试系统的框图;
图4示意性地示出了根据本发明实施方式的计算机可读存储介质产品的示意图;以及
图5示意性地示出了根据本发明实施方式的计算设备的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种测试脚本的调试方法、介质、系统和计算设备。
在本文中,需要理解的是,所涉及的术语主要包括:自动化测试,表示通过工具(例如,程序)替代手工测试的行为;测试脚本,由特定测试流程的一系列指令组成,这些指令可以被机器或者自动化测试工具解释并执行,以达到模拟手工测试的目的;上位机,表示可以发出操控指令的计算机,例如,它可以是对连接的安卓设备发出指令的PC机;安卓(Android)系统,表示基于Linux开放源代码的操作系统,主要使用于移动设备,比如智能手机以及平板电脑等;类加载器(Class Loader),表示Java运行时环境(JRE)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
在实现本发明实施例的过程中,发明人发现:常见测试脚本的调试方法都无一例外,在脚本执行期间,无论是由于脚本错误,还是由于安卓应用自身的问题,导致测试脚本终止,测试人员修改脚本后只能从头开始重新执行测试脚本,这种低效的调试方法带给测试人员的无疑是更多时间成本的投入。
本发明的实施方式提供了一种测试脚本的调试方法及系统,该方法包括:在执行测试脚本的过程中,检测包含在测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本;以及若出现了暂停执行的子脚本,则暂停执行测试脚本。由于本发明可以在测试人员修改测试脚本后,自行决定从任意代码处开始继续执行测试脚本,克服了相关技术中必须从头开始重新执行测试脚本的缺陷,从而显著地降低了测试脚本的调试成本,为用户带来了更好的体验,并且减少了测试人员的时间成本消耗。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1详细阐述本发明实施例的测试脚本的调试方法及其系统的示例性系统架构。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的测试脚本的调试方法一般可以由服务器105执行。相应地,本公开实施例所提供的测试脚本的调试系统一般可以设置于服务器105中。本公开实施例所提供的测试脚本的调试方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的测试脚本的调试系统也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
需要说明的是,本发明可以应用于多种场景,比如安卓应用等,为了便于说明,下文将以安卓应用为例详细阐述本发明。
示例性方法
下面结合图1的系统架构,参考图2来描述根据本发明示例性实施方式的测试脚本的调试方法。需要注意的是,上述系统架构仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
本发明实施例提供了一种测试脚本的调试方法。
图2A示意性地示出了根据本发明实施方式的测试脚本的调试方法的流程图。如图2A所示,该方法可以包括如下操作:
操作S201,在执行测试脚本的过程中,检测包含在测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本。
需要说明的是,对于每个测试脚本而言,可以按照代码执行顺序划分为多个子脚本,其中,每个子脚本可以包括一行或者多行代码。
一般地,在执行测试脚本,即使用测试脚本对目标应用(即测试对象)进行测试的过程中,对每个子脚本而言,如果出现脚本错误,或者测试对象本身异常,或者测试人员主动执行了暂停操作,则该子脚本就会暂停执行。
操作S202,若出现了暂停执行的子脚本,则暂停执行测试脚本。
换言之,对于测试脚本而言,只要其中包含的任意一个子脚本暂停执行了,则需要将整个测试脚本都暂停执行。
进一步,在暂停执行测试脚本之后,如果是某个子脚本出错,则可以对该子脚本进行修复,如果是测试对象异常,则可以对测试对象进行修复。
对于子脚本出错的情况,为了在修复工作完成后还能够使用修复后的测试脚本继续从原先失败的测试场景开始进行测试,在前述暂停执行测试脚本之后或者同时,系统可以记录测试对象(如某个安卓应用)当前的界面以及状态(而非退出应用)。
如图2B所示,在相关技术中,一般需要按照操作S301~S308来执行测试脚本,其中,将测试脚本划分为多个子脚本,每个子脚本对应一个代码块,其中:
操作S301,执行脚本;
操作S302~操作S304,依次执行代码块1至代码块M;
操作S305,判断代码块M是否执行失败,若否,则执行操作S306,若是,则执行操作S307;
操作S306,继续执行代码块M;
操作S307,终止整个测试脚本;
操作S308,测试人员修改测试脚本,且修改完成后,跳转至操作S301。
可见,在相关技术中,测试失败后,只能终止测试脚本,而不能将测试脚本中止在代码块M处,并且只能从头开始才重新测试,而不能从代码块M处开始测试。
与上述相关技术不同,如图2C所示,在本发明实施例中,一般需要按照操作S301~S307以及操作S401~S402来执行测试脚本,其中,将测试脚本划分为多个子脚本,每个子脚本对应一个代码块,其中:
操作S301,执行脚本;
操作S302~操作S304,依次执行代码块1至代码块M;
操作S305,判断代码块M是否执行失败,若否,则执行操作S306,若是,则执行操作S401;
操作S306,继续执行代码块M;
操作S307,终止整个测试脚本;
操作S401,自动暂停,即在代码块M出自动中止测试脚本;
操作S402,测试人员修改代码块M,之后跳转至操作S304。
需要说明的是,在操作S402之后除了可以跳转至操作S304之外,还可以跳转至操作S304之前的任一操作处继续执行测试任务。
可见,在本公开实施例中,测试失败后,可以将测试脚本中止在代码块M处(即子脚本出错的地方),并且重新测试时,既可以从头开始测试,又可以从代码块M处或者位于代码块M之前的代码块处开始测试。
另外,需要说明的是,在测试过程中,测试人员在任意时刻均能暂停以及继续执行测试脚本。
或者,如图2D所示,在本发明实施例中,一般需要按照操作S301~S304、操作S501、操作S306~S307以及操作S401~S402来执行测试脚本,其中,将测试脚本划分为多个子脚本,每个子脚本对应一个代码块,其中:
操作S301,执行脚本;
操作S302~操作S304,依次执行代码块1至代码块M;
操作S305,判断代码块M是否被用户暂停执行,若否,则执行操作S306,若是,则执行操作S401;
操作S306,继续执行代码块M;
操作S307,终止整个测试脚本;
操作S401,自动暂停,即在代码块M处自动中止测试脚本;
操作S402,测试人员修改代码块M,之后跳转至操作S304。
需要说明的是,在操作S402之后除了可以跳转至操作S304之外,还可以跳转至操作S304之前的任一操作处继续执行测试任务。
相较于传统的脚本调试方法,本发明实施例提供的调试方案的高效性可以在图2B~2D三张图的对比下清晰的展示:
采用本发明提供的方案进行测试脚本的调试,可以由测试人员控制脚本的执行进程(包括随时暂停以及恢复执行),同时本发明实施例也支持测试脚本任意的代码块执行失败,自动将当前测试脚本进程暂停而非传统的脚本终止。测试人员修改测试脚本后,并将测试对象恢复到失败的前一个状态后,通过开关可以触发加载新的测试脚本,并从上次失败的代码块开始继续执行而非传统方法的从头执行。如果脚本依然执行失败,则会再次暂停,等待用户修改完毕后再次触发开关。
具体地,控制测试脚本在失败(即情况1)或者测试人员主动暂停(即情况2)时,不终止测试进程,并通过对2C~2D的代码块进行异常捕获,可以在脚本执行失败时,生成一个隐藏的空文件:.suspend。该文件作为暂停执行的标记,让测试脚本进入暂停状态(在暂停状态下,测试脚本实际还在运行,只是不继续加载子脚本类而已,也就是说实际上并没有继续执行之后的测试)。其中:
情况1:测试脚本执行失败,自动暂停测试脚本。当测试脚本执行失败时,会将异常捕获(抛出异常则会导致测试脚本终止),并在测试脚本的同级目录下生成空文件.suspend。当该测试脚本的子线程监控到该文件存在后,将测试脚本暂停。
情况2:测试人员主动暂停测试脚本。客户端在测试脚本同级目录下生成空文件.suspend,测试脚本的子线程识别到该文件存在后,将测试脚本暂停。
通过本公开实施例,由于可以在测试人员修改测试脚本后,自行决定从任意代码处开始继续执行测试脚本,克服了相关技术中必须从头开始重新执行测试脚本的缺陷,从而显著地降低了测试脚本的调试成本,为用户带来了更好的体验,并且减少了测试人员的时间成本消耗。
需要说明的是,本发明提供的技术方案可以用于安卓应用的测试脚本的编写和维护阶段。在使用该方案后,测试人员无需花费大量时间等待测试脚本执行到待验证的那一行代码,而是可以在修改代码后立即验证该行代码的有效性,避免了时间上的浪费。特别是当测试脚本包含上百行的代码时,测试脚本在最后阶段出现异常导致执行终止,重跑的成本会异常高,而本发明提供的技术方案则能够给脚本调试带来更佳的效果以及更高的效率。
作为一种可选的实施例,在暂停执行测试脚本之后,该方法还可以包括:检测是否需要恢复执行测试脚本;以及若需要恢复执行测试脚本,则从暂停执行的子脚本处或从指定子脚本处开始继续执行测试脚本,其中,指定子脚本的执行顺序在暂停执行的子脚本之前。
如图2C所示,在修改代码块M之后,若需要恢复执行测试脚本,则可以从代码块1~M中的任意一处开始继续执行测试脚本,优选地,可以从代码块M处开始继续执行测试脚本。
通过本公开实施例,由于可以在测试人员修改测试脚本后,自行决定从任意代码处开始继续执行测试脚本,克服了相关技术中必须从头开始重新执行测试脚本的缺陷,从而显著地降低了测试脚本的调试成本,为用户带来了更好的体验,并且减少了测试人员的时间成本消耗。
作为一种可选的实施例,检测包含在测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本可以包括:检测多个子脚本中的第一子脚本是否执行失败;或者检测多个子脚本中的第一子脚本是否被用户执行了暂停操作。
由于子脚本暂停执行的原因很多,例如,可以是子脚本出错,也可以是子脚本被执行了暂停操作,还可以是测试对象异常,等等。因此,对应地,检测是否出现了暂停执行的子脚本可以也包括多种方式,例如,检测构成测试脚本的多个子脚本中的某个子脚本是否执行失败,检测构成测试脚本的多个子脚本中的某个子脚本是否被用户执行了暂停操作。其中,造成某个子脚本执行失败的原因至少可以包括:该子脚本自身出错,执行到该子脚本时,测试对象异常,等等。
通过本发明实施例,可以通过多种途径检测是否出现了暂停执行的子脚本,从而能够及时暂停测试脚本。
作为一种可选的实施例,该方法还可以包括:若检测到多个子脚本中的第一子脚本执行失败,则通过测试脚本在测试脚本的目录下生成一个隐藏的空文件作为第一脚本暂停标识;或者若检测到多个子脚本中的第一子脚本被用户执行了暂停操作,则通过用户执行暂停操作所使用的客户端在测试脚本的目录下生成一个隐藏的空文件作为第二脚本暂停标识,其中,第一脚本暂停标识和第二脚本暂停标识用于标识测试脚本当前处于暂停执行状态。
在本发明实施例中,无论是子脚本执行失败,还是子脚本执行失败被执行了暂停操作,都可以生成一个空文件,用于标识该子脚本暂停执行了,不同的是,前者是通过测试脚本本身生成脚本暂停标识的,后者是通过用户执行暂停操作所使用的客户端生成脚本暂停标识的。
对应地,检测包含在测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本可以检测是否生成了这些子脚本的暂停标识。对于某个子脚本而言,若存在对应的暂停标识,则认为该子脚本暂停执行了;否则,没有暂停执行。
需要说明的是,脚本暂停标识除了空文件形式之外,还可以是进程间通信、内存共享以及信号机制等多种其他形式,在此不再赘述。
通过本发明实施例,在子脚本暂停执行时,生成对应的暂停标识,如空文件,可以便于系统检测是否出现了暂停执行的子脚本。
作为一种可选的实施例,在暂停执行测试脚本之后,该方法还可以包括:在暂停执行的子脚本被修改后,更新暂停执行的子脚本的代码,得到更新后的子脚本;以及编译更新后的子脚本,以生成对应的类文件。
如图2E所示,例如,对于测试脚本文件testcase.java而言,经脚本解析器进行脚本解析之后,可以拆分为testcase_1.java、testcase_2.java、testcase_M.java、testcase_N.java四个子脚本文件,这四个子脚本文件经过编译之后,又可以生成testcase_1.class、testcase_2.class、testcase_M.class、testcase_N.class四个类文件。
作为一种可选的实施例,在编译更新后的子脚本,以生成对应的类文件之后,该方法还可以包括:检测第一脚本暂停标识或者第二脚本暂停标识是否已消失;若检测到第一脚本暂停标识或者第二脚本暂停标识已消失,则加载类文件,以使测试脚本能够从更新后的子脚本处恢复执行。
在本发明实施例中,子脚本修改后可以立即验证有效性。如图2C和2D所示,用户在修改导致测试执行失败的代码块M后,会再次回到操作S304,将对应java文件的执行代码更新为新的代码块并编译生成class类文件,同时删除.suspend隐藏空文件后,则会重新加载该类文件。
换言之,在本发明提供的技术方案中,在对测试脚本进行调试时,只要出现执行失败或者测试人员的主动暂停,则生成.suspend隐藏空文件以示暂停执行,待用户修改完脚本并删除.suspend隐藏空文件后,系统会自动加载新的子脚本继续运行测试流程。
通过本发明实施例,在子脚本修复完成,删除对应的暂停标识,可以便于系统检测是否继续进行脚本测试。
作为一种可选的实施例,在执行测试脚本之前,该方法还可以包括:将测试脚本按照代码执行顺序划分为多个子脚本,其中,每个子脚本包括一行或者多行代码。
具体地,如图2E所示,可以通过脚本解析器将测试脚本分拆成不同的子脚本,并顺序加载,达到测试脚本执行过程中,即使测试脚本部分修改也会实时生效的目的。该技术的具体实现是通过将测试脚本拆解为多个子脚本,通过对子脚本动态的加载实现测试脚本的自动暂停以及修改后子脚本的加载,适用于安卓应用上所有使用Java语言编写的测试脚本。该技术方案具体实现如下:通过脚本解析器将测试脚本拆分为多个子脚本,每个子脚本以一定的规范命名,比如:测试脚本名称为testcase,则会拆解为多个名称为testcase_index的子脚本,且每个子脚本包含脚本中的一行/块代码,其中index用于标记顺序。子脚本生成后会被编译为多个class文件,具体流程如下如图2F所示:
操作S601,加载M.class;
操作S602,判断M.class执行是否失败,若否,则执行操作S603,若是,则执行操作S604;
操作S603,加载M+1.class;
操作S604,生成.suspend;
操作S605,暂停测试;
操作S606,修改脚本;
操作S607,生成新的M.class;
操作S608,判断.suspend是否还存在,其中,若是,则跳转至操作S605,若否,则执行操作S609;
操作S609,加载新的M.class,并跳转至操作S602循环执行对应的操作。
进一步,在每一行/块代码都分拆到子脚本后,可以通过自定义的类加载器(ClassLoader)顺序加载编译生成的class文件,类似通过如下的方式顺序加载不同的类:
For(String CLASS_X:CLASS_LIST)
{
Class<ReplayStep>obj=(Class<ReplayStep>)
new ReplayClassLoader().loadClass(CLASS_X);
Constructor<?>ctor=obj.getConstructor(CLASS.class);
obj.getDeclaredMethod("execute").invoke(ctor.newInstance(Object[]));
}
这部分代码的执行等价于将原测试脚本的代码一行行/一块块执行,但较大的区别是通过这种类加载的方式,可以让测试脚本在修改后,仅需要加载修改后的新脚本(类文件),而无需整个测试脚本从头执行。
通过本发明实施例,对于安卓应用而言,为了保证其运行的稳定性,测试脚本代码行数可以限制在百行以内,因此将测试脚本进行分拆并不会带来过多的脚本加载以及资源占用,也更加具有可实施性。
作为一种可选的实施例,在执行测试脚本之前,该方法还可以包括:在将下位机(如智能手机)与上位机(如PC机)相连,且从下位机上安装的应用程序中选定待测应用程序(即待测对象)后,在上位机的显示屏中显示第一界面和第二界面,如图2G所示,其中,第一界面用于显示下位机的屏幕内容,屏幕内容包括待测应用程序,第二界面用于显示测试步骤,测试步骤为录制用于测试待测应用程序的脚本时生成的步骤;以及将录制的脚本作为测试脚本。
作为一种可选的实施例,该方法还可以包括:通过上位机的第一界面接收操作指令;控制下位机响应于操作指令,以执行对应的操作动作;以及在第一界面上同步显示下位机在执行操作动作后的屏幕内容,如图2H所示。
具体地,测试人员通过录制回放客户端使用测试脚本对测试对象进行测试时,首先需要连接智能手机(如安卓手机)到上位机并选择测试对象(如某APP)后,可以进入类似如图2G所示的界面:如图,左侧区域(即第一界面)显示手机屏幕内容,测试人员在该区域操作时,相同的动作会反应到连接到上位机的手机上,同时该区域的图像会实时同步手机屏幕;右侧区域(即第二界面)则显示测试人员录制脚本时,对应生成的测试步骤。
需要说明的是,当测试人员进入录制模式后,每在图2G左侧的界面上进行一次操作,上位机连接的手机上则会触发相同操作,同时在图2G右侧区域内就会生成对应的操作步骤,如图2H所示。
当测试人员在图2G左侧屏幕录制完所有的操作步骤后,可以主动停止录制并在本地进行一键回放,用以检验已录制的测试脚本是否可以按期望回放成功。
通过本发明实施例,在测试脚本的回放期间,一旦出现了执行失败或者测试人员发现有调整脚本的需要,则可以暂停脚本的执行,并重新进入到录制的模式;在录制模式下,测试人员可以修改任意一处的测试脚本代码,并从已修改的测试代码处恢复测试脚本的回放,完成一次极其方便的脚本调试、极大节省时间成本。
示例性系统
在介绍了本发明示例性实施方式的方法之后,接下来,参考图3A~图3I对本发明示例性实施方式的、用于实现测试脚本的调试方法的系统进行详细阐述。
本发明实施例提供了一种测试脚本的调试系统。
图3A示意性地示出了根据本发明一个实施例的测试脚本的调试系统的框图。如图3A所示,该系统可以包括:第一检测模块10,用于在执行测试脚本的过程中,检测包含在测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本;以及第一处理模块20,用于在出现了暂停执行的子脚本的情况下,暂停执行测试脚本。
通过本公开实施例,由于可以在测试人员修改测试脚本后,自行决定从任意代码处开始继续执行测试脚本,克服了相关技术中必须从头开始重新执行测试脚本的缺陷,从而显著地降低了测试脚本的调试成本,为用户带来了更好的体验,并且减少了测试人员的时间成本消耗。
作为一种可选的实施例,如图3B所示,该系统还可以包括:第二检测模块30,用于在暂停执行测试脚本之后,检测是否需要恢复执行测试脚本;以及第二处理模块40,用于在需要恢复执行测试脚本的情况下,从暂停执行的子脚本处或从指定子脚本处开始继续执行测试脚本,其中,指定子脚本的执行顺序在暂停执行的子脚本之前。
通过本公开实施例,由于可以在测试人员修改测试脚本后,自行决定从任意代码处开始继续执行测试脚本,克服了相关技术中必须从头开始重新执行测试脚本的缺陷,从而显著地降低了测试脚本的调试成本,为用户带来了更好的体验,并且减少了测试人员的时间成本消耗。
作为一种可选的实施例,如图3C所示,第一检测模块10可以包括:第一检测单元101,用于检测多个子脚本中的第一子脚本是否执行失败;或者第二检测单元102,用于检测多个子脚本中的第一子脚本是否被用户执行了暂停操作。
通过本发明实施例,可以通过多种途径检测是否出现了暂停执行的子脚本,从而能够及时暂停测试脚本。
作为一种可选的实施例,如图3D所示,该系统还可以包括:第一生成模块50,用于在检测到多个子脚本中的第一子脚本执行失败的情况下,通过测试脚本在测试脚本的目录下生成一个隐藏的空文件作为第一脚本暂停标识;或者第二生成模块60,用于在检测到多个子脚本中的第一子脚本被用户执行了暂停操作的情况下,通过用户执行暂停操作所使用的客户端在测试脚本的目录下生成一个隐藏的空文件作为第二脚本暂停标识,其中,第一脚本暂停标识和第二脚本暂停标识用于标识测试脚本当前处于暂停执行状态。
通过本发明实施例,在子脚本暂停执行时,生成对应的暂停标识,如空文件,可以便于系统检测是否出现了暂停执行的子脚本。
作为一种可选的实施例,如图3E所示,该系统还可以包括:更新模块70,用于在暂停执行测试脚本之后,且在暂停执行的子脚本被修改后,更新暂停执行的子脚本的代码,得到更新后的子脚本;以及编译模块80,用于编译更新后的子脚本,以生成对应的类文件。
作为一种可选的实施例,如图3F所示,该系统还可以包括:第三检测模块90,用于在编译更新后的子脚本,以生成对应的类文件之后,检测第一脚本暂停标识或者第二脚本暂停标识是否已消失;加载模块100,用于在检测到第一脚本暂停标识或者第二脚本暂停标识已消失的情况下,加载类文件,以使测试脚本能够从更新后的子脚本处恢复执行。
通过本发明实施例,在子脚本修复完成,删除对应的暂停标识,可以便于系统检测是否继续进行脚本测试。
作为一种可选的实施例,如图3G所示,该系统还可以包括:划分模块110,用于在执行测试脚本之前,将测试脚本按照代码执行顺序划分为多个子脚本,其中,每个子脚本包括一行或者多行代码。
通过本发明实施例,对于安卓应用而言,为了保证其运行的稳定性,测试脚本代码行数可以限制在百行以内,因此将测试脚本进行分拆并不会带来过多的脚本加载以及资源占用,也更加具有可实施性。
作为一种可选的实施例,如图3H所示,该系统还可以包括:第一显示模块120,用于在执行测试脚本之前,在将下位机与上位机相连,且从下位机上安装的应用程序中选定待测应用程序后,在上位机的显示屏中显示第一界面和第二界面,其中,第一界面用于显示下位机的屏幕内容,屏幕内容包括待测应用程序,第二界面用于显示测试步骤,测试步骤为录制用于测试待测应用程序的脚本时生成的步骤;以及确定模块130,用于将录制的脚本作为测试脚本。
作为一种可选的实施例,如图3I所示,该系统还可以包括:接收模块140,用于通过上位机的第一界面接收操作指令;控制模块150,用于控制下位机响应于操作指令,以执行对应的操作动作;以及第二显示模块160,用于在第一界面上同步显示下位机在执行操作动作后的屏幕内容。
通过本发明实施例,在测试脚本的回放期间,一旦出现了执行失败或者测试人员发现有调整脚本的需要,则可以暂停脚本的执行,并重新进入到录制的模式;在录制模式下,测试人员可以修改任意一处的测试脚本代码,并从已修改的测试代码处恢复测试脚本的回放,完成一次极其方便的脚本调试、极大节省时间成本。
示例性介质
本发明实施例提供了一种介质,存储有计算机可执行指令,该指令在被该处理单元执行时用于实现该方法实施例中任一项的所述的测试脚本的调试方法。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的测试脚本的调试方法中的步骤,例如,所述终端设备可以执行如图2中所示的操作S201:在执行测试脚本的过程中,检测包含在测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本;操作S202:若出现了暂停执行的子脚本,则暂停执行测试脚本。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图4所示,描述了根据本发明的实施方式的用于测试脚本的调试的程序产品40,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如Java,C++等,还包括常规的过程式程序设计语言——诸如“C”,语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)一连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性计算设备
在介绍了本发明示例性实施方式的方法、介质和系统之后,接下来,介绍根据本发明的一示例性实施方式的用于测试脚本的调试的计算设备。
本发明实施例还提供了一种计算设备。该计算设备包括:处理单元;以及存储单元,存储有计算机可执行指令,该指令在被该处理单元执行时用于实现该方法实施例中任一项所述的测试脚本的调试方法。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的计算设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的测试脚本的调试方法中的步骤。例如,所述处理单元可以执行如图2中所示的操作S201:在执行测试脚本的过程中,检测包含在测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本;操作S202:若出现了暂停执行的子脚本,则暂停执行测试脚本。
下面参照图5来描述根据本发明的这种实施方式的用于测试脚本的调试的计算设备50。如图5所示的计算设备50仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算设备50以通用计算设备的形式表现。计算设备50的组件可以包括但不限于:上述至少一个处理单元501、上述至少一个存储单元502、连接不同系统组件(包括存储单元502和处理单元501)的总线503。
总线503表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元502可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)5021和/或高速缓存存储器5022,还可以进一步包括只读存储器(ROM)5023。
存储单元502还可以包括具有一组(至少一个)程序模块5024的程序/实用工具5025,这样的程序模块5024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备50也可以与一个或多个外部设备504(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与计算设备50交互的设备通信,和/或与使得计算设备50能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/0)接口505进行。并且,计算设备50还可以通过网络适配器506与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器506通过总线503与计算设备50的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备50使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了测试脚本的调试系统的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (18)

1.一种测试脚本的调试方法,包括:
在执行测试脚本的过程中,检测包含在所述测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本;
若出现了所述暂停执行的子脚本,则暂停执行所述测试脚本;
在所述暂停执行的子脚本被修改后,更新所述暂停执行的子脚本的代码,得到更新后的子脚本;
检测是否需要恢复执行已被修改的测试脚本;以及
响应于需要恢复执行所述已被修改的测试脚本,直接从所述更新后的子脚本处或从指定子脚本处开始执行所述已被修改的测试脚本,其中,所述指定子脚本的执行顺序在所述更新后的子脚本之前且在起始子脚本之后。
2.根据权利要求1所述的方法,其中,检测包含在所述测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本包括:
检测所述多个子脚本中的第一子脚本是否执行失败;或者
检测所述多个子脚本中的所述第一子脚本是否被用户执行了暂停操作。
3.根据权利要求2所述的方法,其中,所述方法还包括:
若检测到所述多个子脚本中的所述第一子脚本执行失败,则通过所述测试脚本在所述测试脚本的目录下生成一个隐藏的空文件作为第一脚本暂停标识;或者
若检测到所述多个子脚本中的所述第一子脚本被用户执行了暂停操作,则通过用户执行所述暂停操作所使用的客户端在所述测试脚本的目录下生成一个隐藏的空文件作为第二脚本暂停标识,
其中,所述第一脚本暂停标识和所述第二脚本暂停标识用于标识所述测试脚本当前处于暂停执行状态。
4.根据权利要求3所述的方法,其中,在暂停执行所述测试脚本之后,所述方法还包括:
编译所述更新后的子脚本,以生成对应的类文件。
5.根据权利要求4所述的方法,其中,在编译所述更新后的子脚本,以生成对应的类文件之后,所述方法还包括:
检测所述第一脚本暂停标识或者所述第二脚本暂停标识是否已消失;
若检测到所述第一脚本暂停标识或者所述第二脚本暂停标识已消失,则加载所述类文件,以使所述测试脚本能够从所述更新后的子脚本处恢复执行。
6.根据权利要求1所述的方法,其中,在执行所述测试脚本之前,所述方法还包括:
将所述测试脚本按照代码执行顺序划分为所述多个子脚本,其中,每个子脚本包括一行或者多行代码。
7.根据权利要求1所述的方法,其中,在执行所述测试脚本之前,所述方法还包括:
在将下位机与上位机相连,且从所述下位机上安装的应用程序中选定待测应用程序后,在上位机的显示屏中显示第一界面和第二界面,其中,所述第一界面用于显示所述下位机的屏幕内容,所述屏幕内容包括所述待测应用程序,所述第二界面用于显示测试步骤,所述测试步骤为录制用于测试所述待测应用程序的脚本时生成的步骤;以及
将录制的脚本作为所述测试脚本。
8.根据权利要求7所述的方法,其中,所述方法还包括:
通过所述上位机的所述第一界面接收操作指令;
控制所述下位机响应于所述操作指令,以执行对应的操作动作;以及
在所述第一界面上同步显示所述下位机在执行所述操作动作后的屏幕内容。
9.一种测试脚本的调试系统,包括:
第一检测模块,用于在执行测试脚本的过程中,检测包含在所述测试脚本中顺序执行的多个子脚本中是否出现了暂停执行的子脚本;
第一处理模块,用于在出现了所述暂停执行的子脚本的情况下,暂停执行所述测试脚本;
更新模块,用于在暂停执行所述测试脚本之后,且在所述暂停执行的子脚本被修改后,更新所述暂停执行的子脚本的代码,得到更新后的子脚本;
第二检测模块,用于检测是否需要恢复执行已被修改的测试脚本;以及
第二处理模块,用于响应于需要恢复执行所述已被修改的测试脚本,直接从所述更新后的子脚本处或从指定子脚本处开始执行所述已被修改的测试脚本,其中,所述指定子脚本的执行顺序在所述更新后的子脚本之前且在起始子脚本之后。
10.根据权利要求9所述的系统,其中,所述第一检测模块包括:
第一检测单元,用于检测所述多个子脚本中的第一子脚本是否执行失败;或者
第二检测单元,用于检测所述多个子脚本中的所述第一子脚本是否被用户执行了暂停操作。
11.根据权利要求10所述的系统,其中,所述系统还包括:
第一生成模块,用于在检测到所述多个子脚本中的所述第一子脚本执行失败的情况下,通过所述测试脚本在所述测试脚本的目录下生成一个隐藏的空文件作为第一脚本暂停标识;或者
第二生成模块,用于在检测到所述多个子脚本中的所述第一子脚本被用户执行了暂停操作的情况下,通过用户执行所述暂停操作所使用的客户端在所述测试脚本的目录下生成一个隐藏的空文件作为第二脚本暂停标识,
其中,所述第一脚本暂停标识和所述第二脚本暂停标识用于标识所述测试脚本当前处于暂停执行状态。
12.根据权利要求11所述的系统,其中,所述系统还包括:
编译模块,用于编译所述更新后的子脚本,以生成对应的类文件。
13.根据权利要求12所述的系统,其中,所述系统还包括:
第三检测模块,用于在编译所述更新后的子脚本,以生成对应的类文件之后,检测所述第一脚本暂停标识或者所述第二脚本暂停标识是否已消失;
加载模块,用于在检测到所述第一脚本暂停标识或者所述第二脚本暂停标识已消失的情况下,加载所述类文件,以使所述测试脚本能够从所述更新后的子脚本处恢复执行。
14.根据权利要求9所述的系统,其中,所述系统还包括:
划分模块,用于在执行所述测试脚本之前,将所述测试脚本按照代码执行顺序划分为所述多个子脚本,其中,每个子脚本包括一行或者多行代码。
15.根据权利要求9所述的系统,其中,所述系统还包括:
第一显示模块,用于在执行所述测试脚本之前,在将下位机与上位机相连,且从所述下位机上安装的应用程序中选定待测应用程序后,在上位机的显示屏中显示第一界面和第二界面,其中,所述第一界面用于显示所述下位机的屏幕内容,所述屏幕内容包括所述待测应用程序,所述第二界面用于显示测试步骤,所述测试步骤为录制用于测试所述待测应用程序的脚本时生成的步骤;以及
确定模块,用于将录制的脚本作为所述测试脚本。
16.根据权利要求15所述的系统,其中,所述系统还包括:
接收模块,用于通过所述上位机的所述第一界面接收操作指令;
控制模块,用于控制所述下位机响应于所述操作指令,以执行对应的操作动作;以及
第二显示模块,用于在所述第一界面上同步显示所述下位机在执行所述操作动作后的屏幕内容。
17.一种介质,存储有计算机可执行指令,所述指令在被处理单元执行时用于实现权利要求1至8中任一项所述的测试脚本的调试方法。
18.一种计算设备,包括:
处理单元;以及
存储单元,存储有计算机可执行指令,所述指令在被处理单元执行时用于实现权利要求1至8中任一项所述的测试脚本的调试方法。
CN201710676711.4A 2017-08-09 2017-08-09 测试脚本的调试方法、介质、系统和计算设备 Active CN107463500B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710676711.4A CN107463500B (zh) 2017-08-09 2017-08-09 测试脚本的调试方法、介质、系统和计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710676711.4A CN107463500B (zh) 2017-08-09 2017-08-09 测试脚本的调试方法、介质、系统和计算设备

Publications (2)

Publication Number Publication Date
CN107463500A CN107463500A (zh) 2017-12-12
CN107463500B true CN107463500B (zh) 2020-05-01

Family

ID=60548815

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710676711.4A Active CN107463500B (zh) 2017-08-09 2017-08-09 测试脚本的调试方法、介质、系统和计算设备

Country Status (1)

Country Link
CN (1) CN107463500B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111198813B (zh) * 2018-11-20 2024-06-18 北京京东尚科信息技术有限公司 一种接口测试方法和装置
CN109726818B (zh) * 2018-12-29 2021-08-17 北京航天数据股份有限公司 一种模型编辑方法、装置、设备和介质
CN109857642B (zh) * 2018-12-30 2022-10-11 贝壳技术有限公司 一种ui自动化脚本的阻塞式调试方法及调试工具
CN109977011A (zh) * 2019-03-18 2019-07-05 平安普惠企业管理有限公司 测试脚本的自动生成方法、装置、存储介质及电子设备
CN110377520B (zh) * 2019-07-22 2024-03-15 中国工商银行股份有限公司 交易场景的测试方法及装置、电子设备和可读存储介质
CN110543429B (zh) * 2019-09-10 2023-05-16 深圳前海微众银行股份有限公司 测试用例调试方法、装置及存储介质
CN112162916B (zh) * 2020-08-31 2024-04-19 北京交大思诺科技股份有限公司 可自动生成测试脚本的lkj测试系统
CN112084117B (zh) * 2020-09-27 2023-08-08 网易(杭州)网络有限公司 一种测试方法和装置
CN112905466B (zh) * 2021-02-10 2024-06-07 中国工商银行股份有限公司 动态可修复案例的软件测试方法及装置
CN114003512B (zh) * 2021-12-30 2022-05-13 卡斯柯信号(北京)有限公司 一种基于列车自动控制集成验证平台脚本生成方法及装置
CN115309466B (zh) * 2022-10-12 2023-01-24 亿咖通(北京)科技有限公司 仪表系统启动方法、装置和仪表设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100337215C (zh) * 2004-03-29 2007-09-12 华为技术有限公司 测试执行器
US20090138857A1 (en) * 2007-11-28 2009-05-28 David Botzer Device, system, and method of testing computer programs
CN104008043B (zh) * 2013-02-21 2017-08-22 腾讯科技(深圳)有限公司 跨终端测试方法、待测试端及测试端
CN103218196B (zh) * 2013-04-12 2016-06-22 江苏浩峰汽车附件有限公司 一种自动测试系统的双屏显示的实现系统及方法
CN104391717B (zh) * 2014-11-18 2017-09-12 南京大学 一种调试时代码动态更新方法
CN106681897B (zh) * 2015-11-06 2020-10-16 北京国双科技有限公司 一种代码调试方法及装置

Also Published As

Publication number Publication date
CN107463500A (zh) 2017-12-12

Similar Documents

Publication Publication Date Title
CN107463500B (zh) 测试脚本的调试方法、介质、系统和计算设备
US8627296B1 (en) Unified unit and integration test with automatic mock creation
US9286191B2 (en) Logging code generation and distribution
CN110013672B (zh) 用于机器运行的游戏的自动化测试的方法、设备、装置以及计算机可读存储介质
EP3916560A1 (en) Fault injection method and apparatus, electronic device and storage medium to test microservices in the cloud
CN109726135B (zh) 一种多核调试方法、装置及计算机可读存储介质
US8904238B2 (en) System and method for capturing logging information
US10565091B2 (en) Method and apparatus for automatic cross-system program debugging
US9411711B2 (en) Adopting an existing automation script to a new framework
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
US10417116B2 (en) System, method, and apparatus for crowd-sourced gathering of application execution events for automatic application testing and replay
CN111488275B (zh) Ui自动化测试方法、装置、存储介质及电子设备
CN112911283A (zh) 智能电视测试方法及装置
CN115599645B (zh) 一种linux驱动模块稳定性测试方法及装置
CN112256560A (zh) 应用程序测试方法、装置及电子设备
US20180373512A1 (en) Method and device for simulating synchronous blocking in asynchronous environment, storage medium, server and terminal
CN113641575B (zh) 一种测试方法、装置、设备及存储介质
CN113590446B (zh) 数值文件的检测方法、装置、电子设备及存储介质
CN112379973B (zh) 重载方法和装置
CN113986263A (zh) 代码自动化测试方法、装置、电子设备、存储介质
CN110795338B (zh) 一种基于前后端交互的自动化测试方法、装置及电子设备
US20240211360A1 (en) Method and system for test script generation and execution
CN113590226B (zh) 引擎编辑器的启动方法、装置、电子设备及存储介质
CN114327648B (zh) 一种驱动调试方法、装置、电子设备及存储介质
CN115792578A (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