CN110688318A - 程序测试方法和装置 - Google Patents

程序测试方法和装置 Download PDF

Info

Publication number
CN110688318A
CN110688318A CN201910931438.4A CN201910931438A CN110688318A CN 110688318 A CN110688318 A CN 110688318A CN 201910931438 A CN201910931438 A CN 201910931438A CN 110688318 A CN110688318 A CN 110688318A
Authority
CN
China
Prior art keywords
electronic device
program
control instruction
screenshot
target program
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.)
Pending
Application number
CN201910931438.4A
Other languages
English (en)
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.)
JD Digital Technology Holdings Co Ltd
Original Assignee
JD Digital Technology Holdings 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 JD Digital Technology Holdings Co Ltd filed Critical JD Digital Technology Holdings Co Ltd
Priority to CN201910931438.4A priority Critical patent/CN110688318A/zh
Publication of CN110688318A publication Critical patent/CN110688318A/zh
Pending legal-status Critical Current

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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • 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/3688Test 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

程序测试方法和装置
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种程序测试方法和装置。
背景技术
为了保证功能的正确性和界面显示的正确性,通常需要使用不同品牌、不同系统版本、不同尺寸的手机等移动终端对移动端APP进行验证。与稳定功能可以使用脚本进行自动化验证不同,新功能需要人工手动验证。然而在实现本发明过程中,发明人发现随着敏捷化开发的推行,APP版本迭代越来越快,通过人工手动验证一款APP在多个品牌、多种系统版本、多种尺寸的数十款甚至上百款的移动终端上的运行情况,变得越来越不现实。并且这会耽误敏捷化开发的进程,影响APP版本的快速迭代。
发明内容
有鉴于此,本公开实施例提供了一种应用于移动终端共享平台的程序测试方法和装置。
本公开实施例的一个方面提供了一种程序测试方法,包括:确定用于测试目标程序的至少一个电子设备;使上述至少一个电子设备运行上述目标程序;控制运行在上述至少一个电子设备上的上述目标程序执行操控指令;控制上述至少一个电子设备对执行了上述操控指令后的界面显示效果进行截图;以及获取来自上述至少一个电子设备的截图,以便能够基于获取的上述截图确定上述目标程序在上述至少一个电子设备上的运行效果。
根据本公开的实施例,上述方法还包括:配置上述至少一个电子设备中的一个设备为主设备并配置上述至少一个电子设备中的剩余设备为从设备;以及上述控制运行在上述至少一个电子设备上的上述目标程序执行操控指令,包括:获取针对第一程序进行操控的第一操控指令,上述第一程序为在上述主设备中运行的上述目标程序;发送上述第一操控指令给上述主设备,以便上述第一程序执行上述第一操控指令;以及控制第二程序通过模拟上述第一程序执行上述第一操控指令而执行对应的操控指令,上述第二程序为在上述从设备中运行的上述目标程序。
根据本公开的实施例,上述控制第二程序通过模拟上述第一程序执行上述第一操控指令而执行对应的操控指令,包括:确定与上述第一操控指令对应的用户操作;针对上述主设备,确定上述用户操作所针对的第一最小控件;针对上述从设备,基于上述第一最小控件确定上述用户操作所针对的第二最小控件;模拟上述用户操作触发上述第二最小控件而生成第二操控指令;以及发送上述第二操控指令给上述从设备,以便上述第二程序执行上述第二操控指令。
根据本公开的实施例,上述方法还包括:根据获取的上述截图确定上述目标程序在上述多个电子设备上的运行效果,该操作包括:比对第二截图与第一截图之间的差异,其中,上述第一截图来自上述主设备,上述第二截图来自上述从设备;响应于上述差异已超出容错阈值,则针对上述从设备反馈相应的提示信息。
根据本公开的实施例,上述方法还包括:在针对上述从设备反馈相应的提示信息后,显示上述第二截图。
根据本公开的实施例,上述方法还包括:在针对上述从设备反馈相应的提示信息后,将上述从设备重新配置为新的主设备;获取针对上述新的主设备中运行的上述目标程序进行操控的第三操控指令;发送上述第三操控指令给上述新的主设备,以便上述目标程序执行上述第三操控指令;控制上述新的主设备对执行了上述第三操控指令后的界面显示效果进行截图;以及获取来自上述新的主设备的截图,以便能够基于获取的上述截图确定上述目标程序在上述新的主设备上的运行效果。
本公开实施例的另一个方面提供了一种程序测试装置,包括:确定模块,用于确定用于测试目标程序的至少一个电子设备;第一控制模块,用于使上述至少一个电子设备运行上述目标程序;第二控制模块,用于控制运行在上述至少一个电子设备上的上述目标程序执行操控指令;第三控制模块,用于控制上述至少一个电子设备对执行了上述操控指令后的界面显示效果进行截图;以及第一获取模块,用于获取来自上述至少一个电子设备的截图;以便能够基于获取的上述截图确定上述目标程序在上述至少一个电子设备上的运行效果。
根据本公开的实施例,上述装置还包括:第一配置模块,用于配置上述至少一个电子设备中的一个设备为主设备并配置上述至少一个电子设备中的剩余设备为从设备;以及上述第二控制模块包括:获取单元,用于获取针对第一程序进行操控的第一操控指令,上述第一程序为在上述主设备中运行的上述目标程序;发送单元,用于发送上述第一操控指令给上述主设备,以便上述第一程序执行上述第一操控指令;以及控制单元,用于控制第二程序通过模拟上述第一程序执行上述第一操控指令而执行对应的操控指令,上述第二程序为在上述从设备中运行的上述目标程序。
根据本公开的实施例,上述控制单元包括:第一确定子单元,用于确定与上述第一操控指令对应的用户操作;第二确定子单元,用于针对上述主设备,确定上述用户操作所针对的第一最小控件;第三确定子单元,用于针对上述从设备,基于上述第一最小控件确定上述用户操作所针对的第二最小控件;生成子单元,用于模拟上述用户操作触发上述第二最小控件而生成第二操控指令;以及发送子单元,用于发送上述第二操控指令给上述从设备,以便上述第二程序执行上述第二操控指令。
根据本公开的实施例,上述测试模块包括:比对单元,用于比对第二截图与第一截图之间的差异,其中,上述第一截图来自上述主设备,上述第二截图来自上述从设备;确定单元,用于确定上述差异是否已超出容错阈值;报错单元,用于在确定上述差异已超出上述容错阈值的情况下,针对上述从设备进行报错。
根据本公开的实施例,上述装置还包括:显示模块,用于在针对上述从设备报错后,显示上述第二截图。
根据本公开的实施例,上述装置还包括:第二配置模块,用于在针对上述从设备报错后,将上述从设备重新配置为新的主设备;第二获取模块,用于获取针对上述新的主设备中运行的上述目标程序进行操控的第三操控指令;发送模块,用于发送上述第三操控指令给上述新的主设备,以便上述目标程序执行上述第三操控指令;第四控制模块,用于控制上述新的主设备对执行了上述第三操控指令后的界面显示效果进行截图;第三获取模块,用于获取来自上述新的主设备的截图,以便能够基于获取的上述截图确定上述目标程序在上述新的主设备上的运行效果。
本公开实施例的另一方面提供了一种计算机系统,包括:一个或多个处理器;以及存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现本公开实施例的方法。
本公开实施例的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现本公开实施例的方法。
本公开实施例的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现本公开实施例的方法。
根据本公开的实施例,因为采用了通过群控方式对APP新功能进行验证的技术手段,所以至少部分地克服了相关技术中只能通过人工手动的方式逐台验证APP新功能而导致敏捷化开发难以推进,APP版本难以实现快速迭代的技术问题,进而达到了加快APP版本迭代速度的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了可以应用于本公开实施例的程序测试方法和装置的示例性系统架构;
图2A和图2B示意性示出了根据本公开实施例的程序测试方法的应用场景;
图3示意性示出了根据本公开实施例的程序测试方法的流程图;
图4A示意性示出了根据本公开实施例的远程控制主、从设备的示意图;
图4B示意性示出了根据本公开实施例的从设备模拟主设备执行执行操控指令的示意图;
图5示意性示出了根据本公开实施例的程序测试装置的框图;以及
图6示意性示出了根据本公开实施例的适于实现程序测试方法和装置的计算机系统的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
本公开的实施例提供了一种共享平台群控式的程序测试方法以及能够应用该方法的程序测试装置。该方法包括确定用于测试目标程序的至少一个电子设备,使该至少一个电子设备运行该目标程序。控制运行在该至少一个电子设备上的该目标程序执行操控指令,同时控制该至少一个电子设备对执行了该操控指令后的界面显示效果进行截图。获取来自该至少一个电子设备的截图,以便能够基于获取的该截图测试该目标程序在该至少一个电子设备上的运行效果。
图1示意性示出了可以应用于本公开的程序测试方法和装置的示例性系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构可以包括移动终端101、102、103,个人计算机PC 104、服务器105和WEB展示端106。移动终端(如移动终端101、102)可以通过个人计算机PC 104与服务器105建立有线通信连接,从而实现设备共享的目的。移动终端(如移动终端103)也可以通过WIFI网络或者蜂窝网络与服务器105建立无线通信连接,从而实现设备共享的目的。
用户可以使用WEB展示端106与服务器105交互,实现租用符合当前的测试任务的特定设备的目的,进而远程操控所租用的特定设备。移动终端101、102、103上可以安装各种客户端应用,以便于测试人员完成测试任务。
移动终端101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机等等。
服务器105可以是提供各种服务的服务器,例如对于通过无线或者有线接入服务器105的移动终端101、102、103进行设备信息采集(仅为示例)。服务器105可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)向移动终端转发操控指令和向WEB展示端转发截图等。
需要说明的是,本公开实施例所提供的程序测试方法一般可以由WEB展示端106执行。本公开实施例所提供的程序测试方法也可以由不同于WEB展示端106且能够与终端设备101、102、103和/或服务器105通信的其他终端设备执行。
应该理解,图1中的移动终端、个人计算机PC、服务器和WEB展示端的数目仅仅是示意性的。根据实现需要,可以具有任意数目的移动终端、个人计算机PC、服务器和WEB展示端。
图2A和图2B示意性示出了根据本公开实施例的程序测试方法的应用场景。如图2A和图2B,通过本公开实施例提供的程序测试方法可以根据界面显示效果验证一款APP产品的新功能和界面显示是否正确。
以下将参考附图并结合具体实施例详细阐述本公开。
图3示意性示出了根据本公开实施例的程序测试方法的流程图。
如图3所示,该方法例如可以包括操作S301~S305。
在操作S301,确定用于测试目标程序的至少一个电子设备。
需要说明的是,相关技术中测试人员在测试一个应用时一贯采用一个设备或者一个浏览器对一个应用的代码验证方式。显然,这种代码验证方式容易造成应用无法更好地兼容更多设备,或者为了更好地兼容更多设备,测试人员需要逐个地在多个真机上验证同一段代码,导致测试效率较低。
对此,本公开实施例提供了如图1所示的系统架构,以便于公司或个人共享自己的电子设备。简单来说,公司或个人可以将自己的移动终端通过PC或者直接与用于作为共享平台的服务器连接,从而实现共享移动终端的目的。这样,测试人员可以通过这个共享平台租用其中的一个或者多个能够满足当前的测试任务的移动终端。其中在租用了多个移动终端的情况下,还可以以群控的方式远程控制这些移动终端对同一代码同时进行代码验证,从而达到提高应用的兼容性和提高测试效率的技术效果。
具体地,返回参考图1,当一个移动终端通过PC连接至服务器时,该移动终端可以将其设备信息上传至与之连接的PC,再由该PC将其设备信息上传至服务器。当一个移动终端直接通过WIFI或者蜂窝网络连接至服务器时,该移动终端也可以直接将其设备信息上传至服务器。服务器可以将接入共享平台的所有移动终端的设备信息提供给WEB展示端。这样,基于服务器105提供的设备信息,用户可以通过WEB展示端106提供的搜索界面搜索并确定出满足当前的测试任务的一个或者多个移动终端。需要说明的是,上述设备信息可以包括但不限于:设备的品牌信息、设备的系统版本信息和设备的序列号等。
在操作S302,使该至少一个电子设备运行该目标程序。
具体地,操作S302例如可以包括使该至少一个电子设备运行该目标程序的第一代码。
需要说明的是,在本公开实施例中,第一代码例如可以是一个应用的第一个版本的代码,或者也可以是一个应用的第N个版本的代码,其中N大于1且N为整数。例如首次测试一个应用时,可以将该应用的第一个版本的代码发给所有参与对该应用进行代码验证的电子设备,使得这些电子设备能够安装并运行该应用,进而使得测试人员可以通过测试端(可以是如图1所示的WEB展示端)对这些电子设备进行远程群控,从而实现针对第一版本的代码验证该应用的目的。
进一步,在操作S302后还可以执行以下操作。发送该目标程序的第二代码给该至少一个电子设备,使得该至少一个电子设备将该第一代码更新为该第二代码。
需要说明的是,在本公开实施例中,开发端如果有代码更新,可以将更新后的代码发送给测试端,再由测试端将其转发给参与测试的所有电子设备,使得这些电子设备也能够及时地针对目标程序进行代码更新,如将之前的第一代码更新为现在的第二代码。这样,开发人员每修改一次代码,都可以在测试端和所有参与对目标程序进行代码验证的电子设备端实现代码更新。
需要说明的是,在本公开实施例中,如果一个电子设备(即移动终端)通过PC接入共享平台,则开发端更新后的代码例如可以通过以下流程传递给该电子设备(即各个移动终端):开发端-->测试端-->服务器-->PC端-->电子设备。如果一个电子设备通过WIFI等无线方式接入共享平台,则开发端更新后的代码例如可以通过以下流程传递给该电子设备:开发端-->测试端-->服务器-->电子设备。
返回参考图1,对于操作S302,在选出参与本次测试的电子设备后,可以获取目标程序的安装包,并通过WEB展示端106执行远程操作,从而将待测试的目标程序安装在参与本次测试的所有电子设备上并控制这些电子设备运行该目标程序。
在操作S303,远程控制运行在该至少一个电子设备上的该目标程序执行操控指令。
返回参考图1,对于操作S303,可以通过WEB展示端106直接对参与本次测试的所有电子设备中的一个电子设备A进行远程操控,同时控制参与本次测试的其他电子设备进行联动操作,以执行与该电子设备A同样的操作。
在操作S304,远程控制该至少一个电子设备对执行了该操控指令后的界面显示效果进行截图。
在操作S305,获取来自该至少一个电子设备的截图,以便能够基于获取的该截图确定该目标程序在该至少一个电子设备上的运行效果。
具体地,在本公开实施例中,参与本次测试的所有电子设备每执行一次操作后都可以针对当前显示的界面截一张图,并将截图传回如图1所示的WEB展示端106。通过截图可以确定,每执行一次操作后运行在参与测试的各个电子设备上的目标程序是否都会出现界面变化、以及每次出现的界面变化是否准确等。
需要说明的是,对于通过PC接入共享平台的电子设备,远程操控指令例如可以通过以下流程传递给该电子设备:WEB展示端-->服务器-->PC端-->电子设备。电子设备的截图例如可以通过以下流程传递给WEB展示端:电子设备-->PC端-->服务器-->WEB展示端。
此外,对于通过WIFI等无线方式接入共享平台的电子设备,远程操控指令例如可以通过以下流程传递给该电子设备:WEB展示端-->服务器-->电子设备。电子设备的截图例如可以通过以下流程传递给WEB展示端:电子设备-->服务器-->WEB展示端。
需要说明的是,在本公开实施例中,对于用户直接通过WEB展示端远程操控的电子设备而言,其截图可以直接展示在WEB展示端,因此用户可以通过观察截图确定目标程序在该电子设备上的运行情况,进而确定目标程序的新功能和界面显示是否正确。因此,每执行一次操作,都可以将来自该电子设备的截图作为基准截图,将来自其他电子设备的截图与该基准截图进行对比,进而根据对比结果确定该目标程序在其他电子设备上的运行效果。
通过本公开实施例,对于任何一款APP产品都可以通过一次测试同时验证数十甚至数百部涉及多个品牌、多种系统版本以及多种尺寸的电子设备对各个新功能点的兼容性问题,而无需像现有技术那样针对每个功能点都需要测试人员拿着每台电子设备去单独操作一遍。因此在面对同样的测试任务时,本公开实施例可以缩短测试时间,避免测试人员由于测试任务繁重而疲惫,进而避免由此造成的测试错误。并且在本公开实施例中,通过一次测试可以同时覆盖多款电子设备,从而避免产品上线后出现各种兼容性问题。并且在本公开实施例中,还可以提高测试效率,避免因一个项目占用测试设备的时间较长而影响其他项目的测试进程。
下面参考图4A~图4B,结合具体实施例对图3所示的方法做进一步说明。
作为一种可选的实施例,该方法例如还可以包括如下操作。配置该至少一个电子设备中的一个设备为主设备并配置该至少一个电子设备中的剩余设备为从设备。对应的,操作S303即控制运行在该至少一个电子设备上的该目标程序执行操控指令例如可以包括如下操作。获取针对第一程序进行操控的第一操控指令,该第一程序为在该主设备中运行的该目标程序,该第一操控指令对应于第一用户操作。发送该第一操控指令给该主设备,以便该第一程序执行该第一操控指令。控制第二程序通过模拟该第一程序执行该第一操控指令而执行对应的操控指令,该第二程序为在该从设备中运行的该目标程序。
需要说明的是,在本公开实施例中,第二程序所执行的操控指令既可以在运行该第二程序的电子设备端生成,也可以先在WEB展示端生成,再发给从设备执行。其中,该操控指令在可发端生成的方法与其在从设备端生成的方法类似。例如,可以通过模拟用户对该第二程序执行第一用户操作而生成该操控指令。
如图4A所示,参与本次测试的电子设备包括电子设备1和电子设备2。其中可以配置电子设备1为主设备,并配置电子设备2为从设备。作为主设备,电子设备1上运行的测试程序的相关界面除了显示在电子设备1的显示屏上之外,还可以同时显示在WEB展示端的显示屏上。作为从设备,电子设备2上运行的测试程序的相关界面仅仅显示在电子设备2的显示屏上,而并不同时显示在WEB展示端的显示屏上。基于此,在本公开实施例中,用户可以直接通过WEB展示端对电子设备1进行远程操作,而电子设备2则可以通过联动的方式模拟电子设备1执行同样的操作,从而实现对电子设备1和电子设备2进行群控的目的。
通过本公开实施例,针对所有参与本次测试的电子设备,可以在WEB展示端控制其中的一台电子设备,同时使其余的电子设备能够联动地执行同样的操作,由此可以实现通过一次测试同时验证数台涉及多个品牌、多种系统版本以及多种尺寸的电子设备对一款应用在代码不断更新中的兼容性问题。。
作为一种可选的实施例,控制第二程序通过模拟该第一程序执行该第一操控指令而执行对应的操控指令例如可以包括如下操作。确定与该第一操控指令对应的用户操作。针对该主设备,确定该用户操作所针对的第一最小控件。针对该从设备,基于该第一最小控件确定该用户操作所针对的第二最小控件。模拟该用户操作触发该第二最小控件而生成第二操控指令。发送该第二操控指令给该从设备,以便该第二程序执行该第二操控指令。
具体地,在本公开实施例中,如图4B所示,首先测试人员可以通过WEB展示端选择参与本次测试的电子设备,譬如选了多个品牌的数十个电子设备。然后测试人员可以远程操控一台主设备,譬如通过WEB展示端对主设备执行点击操作(如点击登陆按钮的操作)。随后主设备可以自动截图并传回WEB展示端,作为与从设备提供的截图进行对比的参照图像。数十个从设备可以根据用户对主设备执行的点击操作联动地执行同样的操作。具体地,首先查找主设备中包含所有点击坐标点的最小控件,找到后继续搜集该最小控件的控件信息(如xpath,id,text等),进而基于这些控件信息在从设备中查找对应的最小控件,找到后对该控件执行虚拟点击操作,即模拟该控件被点击操作触发。随后从设备也可以自动截图并传回WEB展示端,从而与主设备提供的截图进行对比。
需要说明的是,在本公开实施例中,主设备和从设备还可以将截图传递给服务器,从而在服务器端实现对截图的比对操作。
需要说明的是,在本公开实施例中,从设备除了通过控件方式外,还可以通过坐标方式根据用户对主设备执行的点击操作联动地执行同样的操作。具体地,首先查找点击操作所针对的主设备A中的坐标点,进而基于该坐标点在从设备中查找对应的坐标点,找到后对该坐标点执行虚拟点击操作,即模拟该坐标点被点击操作触发。
与控件方式相比,坐标方式会因为不同设备的宽高比例不同而造成坐标的偏差。因为很多设备的宽高比例都是不同的,所以就算通过比例放大所有的坐标也可能得不到准确的结果。因此优选地采用一种更准确的方式,即控件方式。
作为一种可选的实施例,该方法例如还可以包括:根据获取的该截图确定该目标程序在该多个电子设备上的运行效果,该操作例如可以包括如下操作。比对第二截图与第一截图之间的差异,其中,该第一截图来自该主设备,该第二截图来自该从设备。响应于该差异已超出该容错阈值,针对该从设备反馈相应的提示信息。
具体地,在本公开实施例中,例如服务器可以开启对应的线程,对传输到服务器的截图进行对比。其中主设备每次截图后可以先对截图进行压缩再上传给服务器,譬如都压缩成400*800大小的图片。从设备每次截图后也可以先进行同样的压缩再上传给服务器,从而压缩成与主设备的截图大小一样的图片。对此,服务器可以使用opencv提供的模板匹配主设备提供的截图和各从设备提供的截图。对每个从设备而言,如果其提供的截图与主设备提供的截图在容错阈值范围内能够匹配成功,那么认为这个从设备显示的界面与主设备显示的界面是相同的。如果两者的截图对比差别比较大,即如果一个从设备提供的截图与主设备提供的截图在容错阈值范围内匹配失败,那么可以给出报错,同时列出都有哪些设备的界面有偏差。需要说明的是,对于参与测试的电子设备,如果被报错,则表明当前的目标程序可能存在兼容性问题,可能需要开发人员进一步修改代码。
进一步地,作为一种可选的实施例,该方法例如还可以包括如下操作。在针对该从设备反馈相应的提示信息后,显示该第二截图。
在本公开实施例中,对于被列入错误列表中的从设备,可以在WEB展示端展示其截图,从而可以通过人工查看的方式确定该从设备显示的界面是否真的存在问题。其中如果经查看确定真的存在问题,则可以记录该从设备的设备信息以及界面显示中存在的问题,并将记录结果反馈给程序开发人员,以便调试出兼容性更强的APP产品。
作为一种可选的实施例,该方法例如还可以包括如下操作。在针对该从设备反馈相应的提示信息后,将该从设备重新配置为新的主设备。获取针对该新的主设备中运行的该目标程序进行操控的第三操控指令。发送该第三操控指令给该新的主设备,以便该目标程序执行该第三操控指令。控制该新的主设备对执行了该第三操控指令后的界面显示效果进行截图。获取来自该新的主设备的截图,以便能够基于获取的该截图确定该目标程序在该新的主设备上的运行效果。
具体地,在本公开实施例中,对于被列入错误列表中的从设备,可以在WEB展示端展示其截图,从而可以通过人工查看的方式确定该从设备显示的界面是否真的存在问题。如果经查看不确定是否真的存在问题,则可以将该从设备临时设置为主设备,并通过WEB展示端对其直接进行远程操控,进而再通过人工查看的方式确定其显示的界面是否真的存在问题。
需要说明的是,在本公开实施例中,对于被列入错误列表中的从设备,还可以省略在WEB展示端展示其截图的操作,直接将该从设备临时设置为主设备,并通过WEB展示端对其直接进行远程操控,进而再通过人工查看的方式确定其显示的界面是否真的存在问题。
图5示意性示出了根据本公开实施例的程序测试装置的框图。
如图5所示,该程序测试装置500例如可以包括确定模块501、第一控制模块502、第二控制模块503、第三控制模块504和第一获取模块505。
具体地,确定模块501用于确定用于测试目标程序的至少一个电子设备。
第一控制模块502用于使该至少一个电子设备运行该目标程序。
第二控制模块503用于控制运行在该至少一个电子设备上的该目标程序执行操控指令。
第三控制模块504用于控制该至少一个电子设备对执行了该操控指令后的界面显示效果进行截图。
第一获取模块505用于获取来自该至少一个电子设备的截图,以便能够基于获取的该截图测试该目标程序在该至少一个电子设备上的运行效果。
作为一种可选的实施例,该装置例如还可以包括第一配置模块。其中第一配置模块用于配置该至少一个电子设备中的一个设备为主设备并配置该至少一个电子设备中的剩余设备为从设备。对应的,该第二控制模块例如可以包括:获取单元、发送单元和控制单元。具体地,获取单元用于获取针对第一程序进行操控的第一操控指令,该第一程序为在该主设备中运行的该目标程序。发送单元用于发送该第一操控指令给该主设备,以便该第一程序执行该第一操控指令。控制单元用于控制第二程序通过模拟该第一程序执行该第一操控指令而执行对应的操控指令,该第二程序为在该从设备中运行的该目标程序。
作为一种可选的实施例,该控制单元例如可以包括:第一确定子单元、第二确定子单元、第三确定子单元、生成子单元和发送子单元。具体地,第一确定子单元用于确定与该第一操控指令对应的用户操作。第二确定子单元用于针对该主设备,确定该用户操作所针对的第一最小控件。第三确定子单元用于针对该从设备,基于该第一最小控件确定该用户操作所针对的第二最小控件。生成子单元用于模拟该用户操作触发该第二最小控件而生成第二操控指令。发送子单元,用于发送该第二操控指令给该从设备,以便该第二程序执行该第二操控指令。
作为一种可选的实施例,该测试模块例如可以包括:比对单元、确定单元和报错单元。具体地,比对单元用于比对第二截图与第一截图之间的差异,其中,该第一截图来自该主设备,该第二截图来自该从设备。报错单元用于响应于该差异已超出容错阈值,针对该从设备反馈相应的提示信息。
作为一种可选的实施例,该装置例如还可以包括显示模块。具体地,显示模块用于在针对该从设备反馈相应的提示信息后,显示该第二截图。
作为一种可选的实施例,该装置例如还可以包括:第二配置模块、第二获取模块、发送模块、第四控制模块、第三获取模块和第二测试模块。具体地,第二配置模块用于在针对该从设备反馈相应的提示信息后,将该从设备重新配置为新的主设备。第二获取模块用于获取针对该新的主设备中运行的该目标程序进行操控的第三操控指令。发送模块用于发送该第三操控指令给该新的主设备,以便该目标程序执行该第三操控指令。第四控制模块用于控制该新的主设备对执行了该第三操控指令后的界面显示效果进行截图。第三获取模块用于获取来自该新的主设备的截图,以便能够基于获取的该截图确定该目标程序在该新的主设备上的运行效果。
根据本公开的实施例的模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,确定模块501、第一控制模块502、第二控制模块503、第三控制模块504、第一获取模块505中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,确定模块501、第一控制模块502、第二控制模块503、第三控制模块504、第一获取模块505中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,确定模块501、第一控制模块502、第二控制模块503、第三控制模块504、第一获取模块505中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的装置部分实施例与本公开的方法部分实施例对应相同或类似,装置部分的描述具体参考方法部分的描述,在此不再赘述。
图6示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统的框图。图6示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,根据本公开实施例的计算机系统600包括处理器601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 603中,存储有系统600操作所需的各种程序和数据。处理器601、ROM 602以及RAM 603通过总线604彼此相连。处理器601通过执行ROM 602和/或RAM 603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 602和RAM 603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统600还可以包括输入/输出(I/O)接口605,输入/输出(I/O)接口605也连接至总线604。系统600还可以包括连接至I/O接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 602和/或RAM 603和/或ROM 602和RAM 603以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (10)

1.一种程序测试方法,包括:
确定用于测试目标程序的至少一个电子设备;
使所述至少一个电子设备运行所述目标程序;
控制运行在所述至少一个电子设备上的所述目标程序执行操控指令;
控制所述至少一个电子设备对执行了所述操控指令后的界面显示效果进行截图;以及
获取来自所述至少一个电子设备的截图,以便能够基于获取的所述截图确定所述目标程序在所述至少一个电子设备上的运行效果。
2.根据权利要求1所述的方法,其中,
所述方法还包括:配置所述至少一个电子设备中的一个设备为主设备并配置所述至少一个电子设备中的剩余设备为从设备;以及
所述控制运行在所述至少一个电子设备上的所述目标程序执行操控指令,包括:
获取针对第一程序进行操控的第一操控指令,所述第一程序为在所述主设备中运行的所述目标程序;
发送所述第一操控指令给所述主设备,以便所述第一程序执行所述第一操控指令;以及
控制第二程序通过模拟所述第一程序执行所述第一操控指令而执行对应的操控指令,所述第二程序为在所述从设备中运行的所述目标程序。
3.根据权利要求2所述的方法,其中,所述控制第二程序通过模拟所述第一程序执行所述第一操控指令而执行对应的操控指令,包括:
确定与所述第一操控指令对应的用户操作;
针对所述主设备,确定所述用户操作所针对的第一最小控件;
针对所述从设备,基于所述第一最小控件确定所述用户操作所针对的第二最小控件;
模拟所述用户操作触发所述第二最小控件而生成第二操控指令;以及
发送所述第二操控指令给所述从设备,以便所述第二程序执行所述第二操控指令。
4.根据权利要求1所述的方法,其中,所述方法还包括:根据获取的所述截图确定所述目标程序在所述多个电子设备上的运行效果,该操作包括:
比对第二截图与第一截图之间的差异,其中,所述第一截图来自所述主设备,所述第二截图来自所述从设备;
响应于所述差异已超出容错阈值,针对所述从设备反馈相应的提示信息。
5.根据权利要求4所述的方法,其中,所述方法还包括:
在针对所述从设备反馈相应的提示信息后,显示所述第二截图。
6.根据权利要求4所述的方法,其中,所述方法还包括:
在针对所述从设备反馈相应的提示信息后,将所述从设备重新配置为新的主设备;
获取针对所述新的主设备中运行的所述目标程序进行操控的第三操控指令;
发送所述第三操控指令给所述新的主设备,以便所述目标程序执行所述第三操控指令;
控制所述新的主设备对执行了所述第三操控指令后的界面显示效果进行截图;以及
获取来自所述新的主设备的截图,以便能够基于获取的所述截图确定所述目标程序在所述新的主设备上的运行效果。
7.根据权利要求1所述的方法,其中:
所述使所述至少一个电子设备运行所述目标程序,包括:使所述至少一个电子设备运行所述目标程序的第一代码;
所述方法还包括:发送所述目标程序的第二代码给所述至少一个电子设备,使得所述至少一个电子设备将所述第一代码更新为所述第二代码。
8.一种程序测试装置,包括:
确定模块,用于确定用于测试目标程序的至少一个电子设备;
第一控制模块,用于使所述至少一个电子设备运行所述目标程序;
第二控制模块,用于控制运行在所述至少一个电子设备上的所述目标程序执行操控指令;
第三控制模块,用于控制所述至少一个电子设备对执行了所述操控指令后的界面显示效果进行截图;以及
第一获取模块,用于获取来自所述至少一个电子设备的截图以便能够基于获取的所述截图确定所述目标程序在所述至少一个电子设备上的运行效果。
9.一种计算机系统,包括:
一个或多个处理器;以及
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1至7中任一项所述的方法。
CN201910931438.4A 2019-09-27 2019-09-27 程序测试方法和装置 Pending CN110688318A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910931438.4A CN110688318A (zh) 2019-09-27 2019-09-27 程序测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910931438.4A CN110688318A (zh) 2019-09-27 2019-09-27 程序测试方法和装置

Publications (1)

Publication Number Publication Date
CN110688318A true CN110688318A (zh) 2020-01-14

Family

ID=69110922

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910931438.4A Pending CN110688318A (zh) 2019-09-27 2019-09-27 程序测试方法和装置

Country Status (1)

Country Link
CN (1) CN110688318A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831546A (zh) * 2020-05-29 2020-10-27 大数金科网络技术有限公司 同时兼容移动端和pc端的ui测试框架方法
CN114385477A (zh) * 2020-10-21 2022-04-22 腾讯科技(深圳)有限公司 一种应用界面测试方法、系统及存储介质和终端设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220452A1 (en) * 2014-04-30 2017-08-03 Yi-Quan REN Performing a mirror test for localization testing
CN107102950A (zh) * 2017-07-04 2017-08-29 天津云聚科技有限公司 一种应用程序测试方法和装置
CN108282542A (zh) * 2018-02-13 2018-07-13 百度在线网络技术(北京)有限公司 用于测试设备的远程操作方法和装置
CN108920380A (zh) * 2018-07-20 2018-11-30 百度在线网络技术(北京)有限公司 软件兼容性的测试方法、装置、服务器、设备和存储介质
CN108920376A (zh) * 2018-07-13 2018-11-30 北京京东金融科技控股有限公司 应用程序的测试方法、装置及介质
CN109302522A (zh) * 2018-09-11 2019-02-01 北京京东金融科技控股有限公司 测试方法、装置以及计算机系统和介质
CN109992494A (zh) * 2017-12-29 2019-07-09 北京京东尚科信息技术有限公司 一种自动化测试执行方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220452A1 (en) * 2014-04-30 2017-08-03 Yi-Quan REN Performing a mirror test for localization testing
CN107102950A (zh) * 2017-07-04 2017-08-29 天津云聚科技有限公司 一种应用程序测试方法和装置
CN109992494A (zh) * 2017-12-29 2019-07-09 北京京东尚科信息技术有限公司 一种自动化测试执行方法和装置
CN108282542A (zh) * 2018-02-13 2018-07-13 百度在线网络技术(北京)有限公司 用于测试设备的远程操作方法和装置
CN108920376A (zh) * 2018-07-13 2018-11-30 北京京东金融科技控股有限公司 应用程序的测试方法、装置及介质
CN108920380A (zh) * 2018-07-20 2018-11-30 百度在线网络技术(北京)有限公司 软件兼容性的测试方法、装置、服务器、设备和存储介质
CN109302522A (zh) * 2018-09-11 2019-02-01 北京京东金融科技控股有限公司 测试方法、装置以及计算机系统和介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831546A (zh) * 2020-05-29 2020-10-27 大数金科网络技术有限公司 同时兼容移动端和pc端的ui测试框架方法
CN114385477A (zh) * 2020-10-21 2022-04-22 腾讯科技(深圳)有限公司 一种应用界面测试方法、系统及存储介质和终端设备

Similar Documents

Publication Publication Date Title
CN109302522B (zh) 测试方法、装置以及计算机系统和介质
US9021443B1 (en) Test automation API for host devices
US9846638B2 (en) Exposing method related data calls during testing in an event driven, multichannel architecture
US9910941B2 (en) Test case generation
US9910764B2 (en) Automated software testing
CN108959068B (zh) 软件界面测试方法、设备及存储介质
US20140331209A1 (en) Program Testing Service
US9152541B1 (en) Automated mobile application verification
US9679090B1 (en) Systematically exploring programs during testing
US20130263090A1 (en) System and method for automated testing
US9292423B1 (en) Monitoring applications for compatibility issues
CN105338110A (zh) 远程调试方法和平台、服务器
US11237948B2 (en) Rendering engine component abstraction system
US10705946B2 (en) Techniques for real time server testing in a production environment
US10942837B2 (en) Analyzing time-series data in an automated application testing system
US20160077955A1 (en) Regression testing of responsive user interfaces
CN111190820A (zh) 一种显示控制软件的配置项测试平台构建方法和测试方法
JP2015141620A (ja) アプリケーションテストシステム、方法及びプログラム
CA2910977A1 (en) Program testing service
CN110704321A (zh) 程序调试方法和装置
CN106294099A (zh) 一种测试方法及设备
CN114647572A (zh) 用于软件应用组件测试的方法和系统
CN111240947A (zh) 页面热力图生成方法及系统
CN110688318A (zh) 程序测试方法和装置
CN112506772A (zh) web自动化测试方法、装置、电子设备和存储介质

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
CB02 Change of applicant information

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

CB02 Change of applicant information
RJ01 Rejection of invention patent application after publication

Application publication date: 20200114