CN113722214A - 测试方法、测试设备及测试系统 - Google Patents
测试方法、测试设备及测试系统 Download PDFInfo
- Publication number
- CN113722214A CN113722214A CN202110936649.4A CN202110936649A CN113722214A CN 113722214 A CN113722214 A CN 113722214A CN 202110936649 A CN202110936649 A CN 202110936649A CN 113722214 A CN113722214 A CN 113722214A
- Authority
- CN
- China
- Prior art keywords
- test
- target
- value
- variable
- test item
- 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.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 289
- 238000010998 test method Methods 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 89
- 238000003672 processing method Methods 0.000 claims abstract description 87
- 230000008569 process Effects 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000004891 communication Methods 0.000 claims abstract description 10
- 230000002159 abnormal effect Effects 0.000 claims description 14
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 238000013515 script Methods 0.000 description 11
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 230000000875 corresponding effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- BUGBHKTXTAQXES-UHFFFAOYSA-N Selenium Chemical compound [Se] BUGBHKTXTAQXES-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013142 basic testing Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 229910052711 selenium Inorganic materials 0.000 description 1
- 239000011669 selenium Substances 0.000 description 1
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
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3692—Test management for test results analysis
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
技术领域
本申请涉及自动化测试领域,特别涉及一种测试方法、一种测试设备以及一种测试系统。
背景技术
近年来,随着移动端应用的大规模出现,对移动端应用的自动化测试也越来越重要。在对移动端应用的自动化测试中,用户需要编写测试用例代码,以通过测试用例代码判断预期和实际是否一致,进而对移动端应用进行测试。
现有的自动化测试框架,需要测试工程师采用框架底层的基础测试工具编写用例,因此需要测试工程师熟练掌握并操作框架内各种底层测试工具的使用,大大提高了测试工程师编写测试脚本的难度,其编写的脚本的可读性和可维护性也较低,降低了框架的灵活性和可扩展性。
发明内容
为解决上述技术问题,本申请公开了一种测试方法、一种测试设备以及一种测试系统。
本申请提供的测试方法,用于对待测目标的目标测试项进行测试,所述目标测试项包括一个以上处理过程,所述测试方法包括:同所述待测目标建立通信连接;获取所述待测目标的配置数据;以及通过项目汇总模块的目标测试项子模块中的同所述目标测试项相关的至少一个项目描述文件,调用并运行处理方法模块中的一个以上处理方法实现所述一个以上处理过程,从而实现对所述目标测试项的测试,其中所述一个以上处理方法中的每个处理方法实现一个处理过程。
在本申请的一些实施例中,所述项目汇总模块包括一个以上测试项子模块,所述一个以上测试项子模块中的每个测试项子模块包括同该测试项相关的至少一个项目描述文件,所述一个以上测试项子模块包括所述目标测试项子模块。
在本申请的一些实施例中,同所述目标测试项相关的至少一个项目描述文件包括:同所述目标测试项相关的元素属性描述文件;同所述目标测试项相关的元素初始化描述文件;以及同所述目标测试项相关的测试逻辑描述文件。
在本申请的一些实施例中,所述测试逻辑描述文件包括:对所述一个以上处理方法的调用指令;以及所述一个以上处理方法相互之间的逻辑。
在本申请的一些实施例中,所述一个以上处理方法中的每个处理方法包括:同该处理方法对应的webdriver API的基本处理方法;以及对所述基本处理方法的封装。
在本申请的一些实施例中,所述一个以上处理方法包括:对所述待测目标进行目标操作;以及对所述目标操作的结果进行判断。
在本申请的一些实施例中,对所述目标操作的结果进行判断包括:获取所述目标操作完成后目标页面中目标位置处的元素的当前属性值;获取所述目标位置处的元素的预设属性值;以及判断所述当前属性值同所述预设属性值是否一致并输出判断结果。
在本申请的一些实施例中,所述判断所述当前属性值同所述预置属性值是否一致并输出判断结果包括:当所述当前属性值同所述预置属性值一致时,向第一变量赋值True,当所述当前属性值同所述预置属性值不一致时,向所述第一变量赋值False;以及判断第二变量的值同所述第一变量的当前值是否一致并输出判断结果,其中所述第二变量的值由用户预先设置为True或者False,所述判断结果同所述第二变量的值相关。
在本申请的一些实施例中,所述第二变量的值由所述用户预先设置为True,当所述第二变量的值同所述第一变量的当前值不一致时,所述输出判断结果包括输出异常提示信息以指示所述目标操作方法的执行出现异常。
在本申请的一些实施例中,所述第二变量的值由所述用户预先设置为False,当所述第二变量的值同所述第一变量的当前值一致时,所述输出判断结果包括输出异常提示信息以指示所述目标操作方法的执行出现异常。
本申请还提供一种测试设备,包括:至少一个存储器,存储由至少一个指令集;至少一个处理器,同所述至少一个存储器通信连接,当所述至少一个指令集被所述至少一个处理器运行时,所述至少一个处理器执行上述的测试方法。
本申请还提供一种测试系统,包括:配置模块,包括待测目标的配置数据;处理方法模块,包括一个以上处理方法,所述一个以上处理方法中的每个处理方法实现一个处理过程;以及项目汇总模块,包括一个以上测试项子模块,所述一个以上测试项子模块中的每个测试项子模块包括同一个测试项相关的至少一个项目描述文件,其中在对待测目标的目标测试项进行测试时,所述测试系统通过目标测试项子模块中的至少一个目标项目描述文件,从所述处理方法模块中调用并运行至少一个目标处理方法,实现所述目标测试项中包含的至少一个目标处理过程,从而实现对所述目标测试项的测试。
在本申请的一些实施例中,所述同一个测试项相关的至少一个项目描述文件包括:同所述一个测试项相关的元素属性描述文件;同所述一个测试项相关的元素初始化描述文件;以及同所述一个测试项相关的测试逻辑描述文件。
在本申请的一些实施例中,所述测试用例描述文件包括:对一个以上处理方法的调用指令;以及所述一个以上处理方法相互之间的逻辑。
在本申请的一些实施例中,所述一个以上处理方法中的每个处理方法包括:同该处理方法对应的webdriver API的基本处理方法;以及对所述基本处理方法的封装。
在本申请的一些实施例中,所述一个以上处理方法包括:对所述待测目标进行目标操作;以及对所述目标操作的结果进行判断。
在本申请的一些实施例中,对所述目标操作的结果进行判断包括:获取所述目标操作完成后目标页面中目标位置处的元素的当前属性值;获取所述目标位置处的元素的预设属性值;以及判断所述当前属性值同所述预设属性值是否一致并输出判断结果。
在本申请的一些实施例中,所述判断所述当前属性值同所述预置属性值是否一致并输出判断结果包括:当所述当前属性值同所述预置属性值一致时,向第一变量赋值True,当所述当前属性值同所述预置属性值不一致时,向所述第一变量赋值False;以及判断第二变量的值同所述第一变量的当前值是否一致并输出判断结果,其中所述第二变量的值由用户预先设置为True或者False,所述判断结果同所述第二变量的值相关。
在本申请的一些实施例中,所述第二变量的值由所述用户预先设置为True,当所述第二变量的值同所述第一变量的当前值不一致时,所述输出判断结果包括输出异常提示信息以指示所述目标操作方法的执行出现异常。
在本申请的一些实施例中,所述第二变量的值由所述用户预先设置为False,当所述第二变量的值同所述第一变量的当前值一致时,所述输出判断结果包括输出异常提示信息以指示所述目标操作方法的执行出现异常。
综上,本申请提供一种测试系统、一种测试方法以及一种测试设备。本申请提供的测试方法、测试设备以及测试系统,通过对WebDriverApi的多次封装,屏蔽具体实现细节。在对目标测试项进行测试时,只需要通过项目汇总模块调用处理方法模块中的处理方法即可实现测试过程。本申请提供的测试系统提供的框架中所有测试脚本相互独立,每一行代码对应实现一个测试步骤,并通过类装饰器,使得对每个步骤的实际结果与期望结果实时进行判断,增加了代码的高度可读性和可维护性。通过对unittest的二次开发,实现单条用例、单个模块、整个项目等多种方式的运行,增加框架的灵活性和可扩展性。
附图说明
图1示出了根据本申请实施例提供的测试方法、测试设备以及测试系统的应用场景示意图;
图2示出了根据本申请实施例提供的一种测试设备的硬件结构示意图;
图3示出了根据本申请实施例提供的一种测试系统的框架示意图;
图4示出了根据本申请实施例提供的一种判断方法的流程图;以及
图5示出了根据本申请实施例提供的一种测试系统对待测目标进行测试的测试方法的流程图。
具体实施方式
以下描述提供了本申请的特定应用场景和要求,目的是使本领域技术人员能够制造和使用本申请中的内容。对于本领域技术人员来说,对所公开的实施例的各种局部修改是显而易见的,并且在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用。因此,本申请不限于所示的实施例,而是与权利要求一致的最宽范围。
这里使用的术语仅用于描述特定示例实施例的目的,而不是限制性的。
考虑到以下描述,本申请的这些特征和其他特征、以及结构的相关元件的操作和功能、以及部件的组合和制造的经济性可以得到明显提高。参考附图,所有这些形成本申请的一部分。然而,应该清楚地理解,附图仅用于说明和描述的目的,并不旨在限制本申请的范围。
以下描述可以显著改进本申请的这些和其他特征,以及结构的相关元件的操作和功能,以及组件的组合和制造的经济效率。所有这些都参考附图形成本申请的一部分。然而,应该清楚地理解,附图仅用于说明和描述的目的,并不旨在限制本申请的范围。还应理解,附图未按比例绘制。
python是一种跨平台的计算机设计语言,是一个结合解释性、编译型、互动性和面向对象的脚本语言。python作为编程语言的后起之秀,已经超越Java成为了最受欢迎的语言。它具有简单、易学、开源、面向对象等优点,因此在数据分析、后端开发、人工智能、自动化测试、机器学习、爬虫等领域都有得天独厚的优势。由于python自带了自动化测试所需的selenium模块,因此,近几年,很多公司都开始基于python构建自己的测试框架。
unittest是python自带的单元测试模块,具备完整的测试结构,支持自动化测试的执行,对测试用例集进行组织,提供丰富的断言方法。
appium是一个开源的,用于自动化iOS手机、Android手机的原生、移动Web和混合应用。
本申请提供一种测试方法、一种测试设备以及一种测试系统。本申请提供的测试系统提供了一种新的测试框架。本申请提供的测试框架基于appium和unittest框架,使用python语言开发。
作为示例,图1示出了根据本申请实施例提供的测试方法、测试设备以及测试系统的应用场景示意图。所述应用场景中包括终端设备100和测试设备200。
终端设备100中安装有待测目标300。所述待测目标300为待测试的应用程序。作为示例,所述待测目标300包括待测试的app应用。终端设备100对其特定的端口进行监听,从而接收来自测试设备200的命令,并根据该命令自动地对待测目标300执行各种操作,并将操作的结果返回给测试设备200。作为示例终端设备100可以是安装有待测目标300的真机或者模拟器。比如,终端设备100为安装有目标app的手机。
测试设备200提供了测试系统的框架运行的平台。测试设备200中存储有测试用的脚本代码,测试设备200通过所述脚本代码控制终端设备100中的待测目标300自动运行,并根据运行结果自动生成测试报告。
作为示例,图2示出了根据本申请实施例提供的一种测试设备200的硬件结构示意图。具体地,测试设备200包括至少一个存储器230和至少一个处理器220。在一些实施例中,测试设备200还可以包括通信端口250和内部通信总线210。同时,测试设备200还可以包括I/O组件260。
内部通信总线210可以连接不同的系统组件,包括存储器230和处理器220。
I/O组件260支持测试设备200和其他组件之间的输入/输出。
存储器230可以包括数据存储装置。所述数据存储装置可以是非暂时性存储介质,也可以是暂时性存储介质。比如,所述数据存储装置可以包括磁盘232、只读存储器(ROM)234或随机存取存储器(RAM)236中的一种或多种。存储器230还包括存储在所述数据存储装置中的至少一个指令集。所述指令集是计算机程序代码,所述计算机程序代码可以包括执行本申请中示出的方法的程序、例程、对象、组件、数据结构、过程、模块等等。
通信端口250用于测试设备200同外界的数据通讯。
至少一个处理器220同至少一个存储器230通过内部通信总线210进行通讯。至少一个处理器220用以执行上述至少一个指令集,当至少一个处理器220执行上述至少一个指令集时,测试设备200实施本申请示出的测试方法。处理器220可以执行本申请示出的方法包含的部分或者全部步骤。处理器220可以是一个或多个处理器的形式,在一些实施例中,处理器220可以包括一个或多个硬件处理器,例如微控制器,微处理器,精简指令集计算机(RISC),专用集成电路(ASIC),特定于应用的指令集处理器(ASIP),中央处理单元(CPU),图形处理单元(GPU),物理处理单元(PPU),微控制器单元,数字信号处理器(DSP),现场可编程门阵列(FPGA),高级RISC机器(ARM),可编程逻辑器件(PLD),能够执行一个或多个功能的任何电路或处理器等,或其任何组合。仅仅为了说明问题,在本申请中测试设备200中仅描述了一个处理器220。然而,应当注意,本申请中测试设备200还可以包括多个处理器,因此,本申请中披露的操作和/或方法步骤可以如本申请所述的由一个处理器执行,也可以由多个处理器联合执行。例如,如果在本申请中测试设备200的处理器220执行步骤A和步骤B,则应该理解步骤A和步骤B也可以由两个不同处理器220联合或分开执行(例如,第一处理器执行步骤A,第二处理器执行步骤B,或者第一和第二处理器共同执行步骤A和B)。
作为示例,图3示出了根据本申请实施例提供的一种测试系统400的框架示意图。参考图3,测试系统400可以包括处理方法模块410、项目汇总模块420和配置模块430。在一些实施例中,测试系统400还包括日志模块440、图片模块450和/或基础方法模块460。
处理方法模块420包括一个以上处理方法。作为示例,处理方法模块420可以是common模块。所述一个以上处理方法中的每个处理方法实现一个处理过程。一个处理过程可以是测试设备200为实现某个目的而执行的一个或者多个步骤。实现所述处理过程的处理方法可以包括若干指令。所述若干指令被封装为一个方法。当该处理方法被执行时,测试设备200实现同该处理方法对应的处理过程。
例如,为了控制待测目标300加载出目标控件被点击后的页面,测试设备200需要通过测试系统400控制终端设备100对该目标控件进行点击操作。此时,测试设备200希望实现的目的可以是"加载出目标控件被点击后的页面″;为实现该目的,测试设备200需要实现的处理过程可以是″点击该目标控件″。实现该处理过程的处理方法可以是方法401″click方法″。在一些实施例中,一个处理过程可能包含若干个子过程或步骤。比如,为了实现对目标控件进行点击操作的目的,测试系统需要实现的处理过程可以是″点击该目标控件″。该处理过程可以包括″加载目标页面″、″获取目标页面中的目标空间的id″、″执行点击操作″等多个子过程。实现该处理过程的处理方法实现了所述若干个子过程或步骤。
继续参考图3,作为示例,所述处理方法可以包括,但不限于,点击某个按钮的方法411,获取某个按钮属性值的方法412,对比两个值是否相等的方法413,检查视频流畅性的方法414,检查音频流畅性的方法415,录屏的方法416,截屏的方法417,判断是否包含的方法418,等等。
作为示例,所述一个以上处理方法中的每个处理方法包括:同该处理方法对应的webdriver API的基本处理方法,以及对所述基本处理方法的封装。具体地,可以采用checkpr装饰器来对所述基本方法进行封装。所述基本处理方法可以是webdriver API底层的工具。本申请提供的测试系统,将webdriver API底层的工具进行封装后形成新的处理方法。测试人员编写的测试用例包括一个以上的处理过程。实现这些处理过程的处理方法被独立的封装并存储在处理方法模块420内。当测试人员需要实现这些处理过程时,只需要从处理方法模块420中调用这些被封装好的方法即可,提高了测试效率,降低了对测试人员的要求,使测试系统具有较高的灵活性和可扩展性。
以点击某个按钮为例,采用传统的unittest框架编写用例时,测试人员需要在test.py中调用webdriverAPI的底层工具实现,test.py中的具体代码可以是:
WebDriverWait(self.driver,timeout,poll_frequency).until(lambda x:x.find_element(("id","listen_btn”))).click()
而如果采用本申请提供的框架编写用例,测试人员只需要在test.py中调用点击方法即可,test.py中的具体代码可以是:
listen_btn.click_btn()
综上,提高了测试效率,降低了对测试人员的要求,使测试系统具有较高的灵活性和可扩展性。
在一些实施例中,所述一个以上处理方法包括对所述待测目标进行目标操作。所述目标操作可以是程序执行中的一个事件。作为示例,所述目标操作可以是对目标页面中的目标控件执行的动作。比如,所述目标操作可以是一个点击动作,或者是一个滑动动作,或者是一个放大/缩小动作。当然,所述目标操作也可以是其他的事件而不影响本申请的核心精神。
在一些实施例中,所述一个以上处理方法还包括对所述目标操作的结果进行判断。判断的实现过程以判断方法表示。作为示例,图4示出了根据本申请实施例提供的一种判断方法S600的流程图。判断方法S600示出了对目标操作的结果进行判断的过程。为了便于描述,在本申请下面的描述中,以所述目标操作为"获取目标app的主页面标题"为例对本申请所述的判断方法进行介绍。
S601,获取所述目标操作完成后目标页面中目标位置处的元素的当前属性值。
所述目标页面可以是app启动后的主页面。所述目标页面中的目标位置可以是所述主页面的标题栏的位置。所述属性可以是所述标题栏处的文字属性。
测试系统通过调用处理方法模块中的"启动app的方法"来启动app,之后,测试系统通过调用处理方法模块中的"获取标题栏的文字属性的方法"来获取app启动后的主页面的标题栏文字属性。这样,测试系统就获得了app启动后主页面标题栏当前的文字属性值。
S603,获取所述目标位置处的元素的预设属性值。
所述预设属性值可以作为参数由测试人员设置。比如,app开机启动后的主页面标题被设计为"欢迎使用XXX!"。那么,测试人员就可以将"欢迎使用XXX!"对应的文字属性作为参数设置为预设属性值。
S605,判断所述当前属性值同所述预设属性值是否一致。
在获得了主页面标题栏位置处的当前文字属性以及预设文字属性后,测试系统可以判断该当前文字属性同预设文字属性是否一致。如果当前文字属性同预设文字属性一致,表示该步骤的测试通过;如果当前文字属性同预设文字属性不一致,表示该步骤的测试出现了异常。具体地,测试系统可以执行以下的步骤S607~S615来实现判断并输出结果。
S607,当所述当前属性值同所述预置属性值一致时,向第一变量赋值True。
S609,当所述当前属性值同所述预置属性值不一致时,向所述第一变量赋值False。
所述第一变量的值可以表示步骤S605的判断结果。若第一变量的值为True,表示当前属性值同预设属性值一致。若第一变量的值为False,表示当前属性值同预设属性值不一致。
S611,判断第二变量的值同所述第一变量的当前值是否一致。
S613,当所述第二变量的值同所述第一变量的当前值一致时,继续。
S615,当所述第二变量的值同所述第一变量的当前值不一致时,输出异常提示信息以指示所述目标操作方法的执行出现异常。
所述第二变量可以是用户设置的期望值。所述用户可以是本申请提供的测试系统的框架开发人员。当然,在一些实施例中,所述用户可以包括测试人员。用户可以根据需要将期望值预先设置为True或者False。为了便于理解,在本申请下面的描述中,以所述期望值被预先设置为True为例对所述判断方法进行介绍。
测试系统判断所述第一变量同期望值是否一致。由于期望值被预先设置为True,若所述第一变量同期望值一致,表示第一变量的值也是True,也就是,当前属性值同预先设置的属性值一致,该步骤的测试通过。当所述第一变量的当前值同期望值不一致,表示第一变量的值为False,也就是,当前属性值同预先设置的属性值不一致,测试系统输出异常提示信息以指示所述目标操作方法的执行出现异常。作为示例,测试系统指示测试设备在显示器上显示包含异常提示信息的人机交互界面。作为示例,所述异常提示信息被存储至日志模块的日志文件内以便于测试人员查询分析。作为示例,所述异常提示信息可以包括元素的id属性,测试的实际值,和/或预先设置的期望值。
需要说明的是,前文仅仅以所述期望值被预先设置为True为例对所述判断方法进行了介绍。测试系统输出的测试结果同期望值相关。所述期望值也可以被预先设置为False而不影响本申请的核心精神。比如,为了使测试获得的实际值和期望值不一样,可以将期望值预先设置为False,那么,当测试系统判断第一变量同期望值不一致的时候,测试通过,当测试系统判断第一变量同期望值一致的时候,输出异常提示。
继续参考图3,项目汇总模块420包括一个以上测试项子模块。比如,图3所示的项目汇总模块420包括测试项子模块421,测试项子模块422,测试项子模块423,测试项子模块424,等等。
所述一个以上测试项子模块中的每个测试项子模块包括同一个测试项相关的至少一个项目描述文件。其中所述同一个测试项相关的至少一个项目描述文件包括:同所述一个测试项相关的元素属性描述文件;同所述一个测试项相关的元素初始化描述文件;以及同所述一个测试项相关的测试逻辑描述文件。
同目标测试项相关的元素属性描述文件包括该目标测试项的测试页面需要的元素属性。所述元素属性可以包括,但不限于,元素的id属性,class类属性,style属性,等等。作为示例,同目标测试项相关的元素的属性可以都存放在该目标测试项文件夹(即目标测试项子模块)下的elements文件夹内。
同目标测试项相关的元素初始化描述文件描述了元素的初始化信息。作为示例,同目标测试项相关的元素初始化描述文件可以都存放在该目标测试项文件夹(即目标测试项子模块)下的elements_init文件夹内。
同目标测试项相关的测试逻辑描述文件描述了测试用例的逻辑。作为示例,所述测试逻辑描述文件可以包括对一个以上处理方法的调用指令,以及所述一个以上处理方法相互之间的逻辑。所述一个以上处理方法相互之间的逻辑可以包括各处理方法执行的先后顺序。作为示例,目标测试项目的测试用例test.py文件都存放在该目标测试项文件夹(即目标测试项子模块)下的testcase文件夹内。
参考图3:测试项子模块421中的elements文件夹存放了项目1的元素属性,elements_init文件夹存放了项目1的元素初始化文件,testcase文件夹存放了项目1的测试用例的逻辑等;测试项子模块422中的elements文件夹存放了项目2的元素属性,elements_init文件夹存放了项目2的元素初始化文件,testcase文件夹存放了项目2的测试用例的逻辑等;测试项子模块423中的elements文件夹存放了项目3的元素属性,elements_init文件夹存放了项目3的元素初始化信息,testcase文件夹存放了项目3的测试用例的逻辑。
测试人员在编写目标测试项目的测试用例时,对该目标测试项对应的模块(比如文件夹)下属的testcase文件夹内的test.py文件操作即可,通过test.py文件调用common模块中的各种方法,降低了测试人员编写脚本的难度,提高了测试系统的灵活性和可扩展性。
配置模块430包括待测目标的配置数据。
日志模块440包括若干个日志文件。所述日志文件用于对测试过程和结果进行记录。测试人员可以查看所述日志文件,进而对测试过程和结果进行分析。
图片模块450包括若干个图片文件。所述若干个图片文件可以包括对待测目标的截图。
基础方法模块460中可以存储webdriverAPI的基本处理方法。在一些实施例中,基础方法模块460也可以在处理方法模块410内。
在对待测目标300的目标测试项进行测试时,所述测试系统400通过目标测试项子模块中的至少一个目标项目描述文件,从所述处理方法模块410中调用并运行至少一个目标处理方法,实现所述目标测试项中包含的至少一个目标处理过程,从而实现对所述目标测试项的测试。
作为示例,图5示出了根据本申请实施例提供的一种测试系统400对待测目标300进行测试的测试方法S500的流程图。
S510,同待测目标300建立通信连接。
以待测目标300安装在手机上为例。测试人员对测试设备200的环境进行设置,并将手机调整至开发者模式。在设置好环境后,测试人员使安装有测试系统的测试设备200同待测目标300(比如待测的app)建立连接。
S530,获取待测目标300的配置数据。
所述配置数据可以由测试人员预先传递给测试系统。比如,测试人员可以修改config模块下的配置信息,比如手机的android系统版本,序列号,设备id等。又比如,测试人员可以修改test_case模块下待测试项目的测试报告填充信息并运行,便可将该测试项目的所有脚本添加到unittest套件,并全部运行。
S550,通过项目汇总模块420的目标测试项子模块中的同目标测试项相关的至少一个项目描述文件,调用并运行处理方法模块410中的一个以上处理方法实现所述一个以上处理过程。
S570,输出测试结果至日志模块440。
比如,测试系统可以通过项目汇总模块420中的test.py调用Base模块中initDevice来启动app。又比如,测试系统可以通过项目汇总模块420中的test.py调用common模块中的click方法来点击某个按钮。又比如,测试系统可以通过项目汇总模块420中的test.py调用common模块中的获取某个控件属性的方法来获取该控件的id属性。
测试系统可以通过项目汇总模块420中的test.py调用common模块中的判断方法来对每个方法的处理结果进行判断并将判断结果输出至日志。
测试系统还可以通过项目汇总模块420将每个测试脚本作为参数传到common模块中的装饰器retry和checkpr,使得在运行时一旦某个过程与预期不符或抛出异常时,会立即抛出异常并重跑,重跑次数可由测试人员设定。在脚本运行中常常存在由于网络或其他非内部因素导致的异常,并可通过重跑来验证该步骤是否异常。测试系统将所有WebDriver报错信息进行封装,使得实时存放在log模块下的日志具有可读性。
综上,本申请提供一种测试系统、一种测试方法以及一种测试设备。本申请提供的测试方法、测试设备以及测试系统,通过对WebDriverApi的多次封装,屏蔽具体实现细节。在对目标测试项进行测试时,只需要通过项目汇总模块调用处理方法模块中的处理方法即可实现测试过程。本申请提供的测试系统提供的框架中所有测试脚本相互独立,每一行代码对应实现一个测试步骤,并通过类装饰器,使得对每个步骤的实际结果与期望结果实时进行判断,增加了代码的高度可读性和可维护性。通过对unittest的二次开发,实现单条用例、单个模块、整个项目等多种方式的运行,增加框架的灵活性和可扩展性。
综上所述,在阅读本详细公开内容之后,本领域技术人员可以明白,前述详细公开内容可以仅以示例的方式呈现,并且可以不是限制性的。尽管这里没有明确说明,本领域技术人员可以理解本申请意图囊括对实施例的各种合理改变,改进和修改。这些改变,改进和修改旨在由本申请提出,并且在本申请的示例性实施例的精神和范围内。
此外,本申请中的某些术语已被用于描述本申请的实施例。例如,″一个实施例″,″实施例″和/或″一些实施例″意味着结合该实施例描述的特定特征,结构或特性可以包括在本申请的至少一个实施例中。因此,可以强调并且应当理解,在本说明书的各个部分中对"实施例"或"一个实施例"或"替代实施例"的两个或更多个引用不一定都指代相同的实施例。此外,特定特征,结构或特性可以在本申请的一个或多个实施例中适当地组合。
应当理解,在本申请的实施例的前述描述中,为了帮助理解一个特征,出于简化本申请的目的,本申请有时将各种特征组合在单个实施例、附图或其描述中。或者,本申请又是将各种特征分散在多个本申请的实施例中。然而,这并不是说这些特征的组合是必须的,本领域技术人员在阅读本申请的时候完全有可能将其中一部分特征提取出来作为单独的实施例来理解。也就是说,本申请中的实施例也可以理解为多个次级实施例的整合。而每个次级实施例的内容在于少于单个前述公开实施例的所有特征的时候也是成立的。
在一些实施方案中,表达用于描述和要求保护本申请的某些实施方案的数量或性质的数字应理解为在某些情况下通过术语"约″,″近似″或″基本上″修饰。例如,除非另有说明,否则″约″,"近似″或″基本上″可表示其描述的值的±20%变化。因此,在一些实施方案中,书面描述和所附权利要求书中列出的数值参数是近似值,其可以根据特定实施方案试图获得的所需性质而变化。在一些实施方案中,数值参数应根据报告的有效数字的数量并通过应用普通的舍入技术来解释。尽管阐述本申请的一些实施方案列出了广泛范围的数值范围和参数是近似值,但具体实施例中都列出了尽可能精确的数值。
本文引用的每个专利,专利申请,专利申请的出版物和其他材料,例如文章,书籍,说明书,出版物,文件,物品等,可以通过引用结合于此。用于所有目的的全部内容,除了与其相关的任何起诉文件历史,可能与本文件不一致或相冲突的任何相同的,或者任何可能对权利要求的最宽范围具有限制性影响的任何相同的起诉文件历史。现在或以后与本文件相关联。举例来说,如果在与任何所包含的材料相关联的术语的描述、定义和/或使用与本文档相关的术语、描述、定义和/或之间存在任何不一致或冲突时,使用本文件中的术语为准。
最后,应理解,本文公开的申请的实施方案是对本申请的实施方案的原理的说明。其他修改后的实施例也在本申请的范围内。因此,本申请披露的实施例仅仅作为示例而非限制。本领域技术人员可以根据本申请中的实施例采取替代配置来实现本申请中的申请。因此,本申请的实施例不限于申请中被精确地描述过的那些实施例。
Claims (20)
1.一种测试方法,用于对待测目标的目标测试项进行测试,其特征在于,所述目标测试项包括一个以上处理过程,所述测试方法包括:
同所述待测目标建立通信连接;
获取所述待测目标的配置数据;以及
通过项目汇总模块的目标测试项子模块中的同所述目标测试项相关的至少一个项目描述文件,调用并运行处理方法模块中的一个以上处理方法实现所述一个以上处理过程,从而实现对所述目标测试项的测试,其中所述一个以上处理方法中的每个处理方法实现一个处理过程。
2.如权利要求1所述的测试方法,其特征在于,所述项目汇总模块包括一个以上测试项子模块,所述一个以上测试项子模块中的每个测试项子模块包括同该测试项相关的至少一个项目描述文件,所述一个以上测试项子模块包括所述目标测试项子模块。
3.如权利要求1所述的测试方法,其特征在于,同所述目标测试项相关的至少一个项目描述文件包括:
同所述目标测试项相关的元素属性描述文件;
同所述目标测试项相关的元素初始化描述文件;以及
同所述目标测试项相关的测试逻辑描述文件。
4.如权利要求3所述的测试方法,其特征在于,所述测试逻辑描述文件包括
对所述一个以上处理方法的调用指令;以及
所述一个以上处理方法相互之间的逻辑。
5.如权利要求3所述的测试方法,其特征在于,所述一个以上处理方法中的每个处理方法包括:
同该处理方法对应的webdriver API的基本处理方法;以及
对所述基本处理方法的封装。
6.如权利要求3所述的测试方法,其特征在于,所述一个以上处理方法包括:
对所述待测目标进行目标操作;以及
对所述目标操作的结果进行判断。
7.如权利要求6所述的测试方法,其特征在于,对所述目标操作的结果进行判断包括:
获取所述目标操作完成后目标页面中目标位置处的元素的当前属性值;
获取所述目标位置处的元素的预设属性值;以及
判断所述当前属性值同所述预设属性值是否一致并输出判断结果。
8.如权利要求7所述的测试方法,其特征在于,所述判断所述当前属性值同所述预置属性值是否一致并输出判断结果包括:
当所述当前属性值同所述预置属性值一致时,向第一变量赋值True,当所述当前属性值同所述预置属性值不一致时,向所述第一变量赋值False;以及
判断第二变量的值同所述第一变量的当前值是否一致并输出判断结果,其中所述第二变量的值由用户预先设置为True或者False,所述判断结果同所述第二变量的值相关。
9.如权利要求8所述的测试方法,其特征在于,所述第二变量的值由所述用户预先设置为True,当所述第二变量的值同所述第一变量的当前值不一致时,所述输出判断结果包括
输出异常提示信息以指示所述目标操作方法的执行出现异常。
10.如权利要求8所述的测试方法,其特征在于,所述第二变量的值由所述用户预先设置为False,当所述第二变量的值同所述第一变量的当前值一致时,所述输出判断结果包括
输出异常提示信息以指示所述目标操作方法的执行出现异常。
11.一种测试设备,其特征在于,包括:
至少一个存储器,存储由至少一个指令集;
至少一个处理器,同所述至少一个存储器通信连接,当所述至少一个指令集被所述至少一个处理器运行时,所述至少一个处理器执行权利要求1-10中任意一项权利要求所述的测试方法。
12.一种测试系统,其特征在于,包括:
配置模块,包括待测目标的配置数据;
处理方法模块,包括一个以上处理方法,所述一个以上处理方法中的每个处理方法实现一个处理过程;以及
项目汇总模块,包括一个以上测试项子模块,所述一个以上测试项子模块中的每个测试项子模块包括同一个测试项相关的至少一个项目描述文件,
其中在对待测目标的目标测试项进行测试时,所述测试系统通过目标测试项子模块中的至少一个目标项目描述文件,从所述处理方法模块中调用并运行至少一个目标处理方法,实现所述目标测试项中包含的至少一个目标处理过程,从而实现对所述目标测试项的测试。
13.如权利要求12所述的测试系统,其特征在于,所述同一个测试项相关的至少一个项目描述文件包括:
同所述一个测试项相关的元素属性描述文件;
同所述一个测试项相关的元素初始化描述文件;以及
同所述一个测试项相关的测试逻辑描述文件。
14.如权利要求13所述的测试方系统,其特征在于,所述测试用例描述文件包括:
对一个以上处理方法的调用指令;以及
所述一个以上处理方法相互之间的逻辑。
15.如权利要求13所述的测试系统,其特征在于,所述一个以上处理方法中的每个处理方法包括:
同该处理方法对应的webdriver API的基本处理方法;以及
对所述基本处理方法的封装。
16.如权利要求13所述的测试系统,其特征在于,所述一个以上处理方法包括:
对所述待测目标进行目标操作;以及
对所述目标操作的结果进行判断。
17.如权利要求16所述的测试系统,其特征在于,对所述目标操作的结果进行判断包括:
获取所述目标操作完成后目标页面中目标位置处的元素的当前属性值;
获取所述目标位置处的元素的预设属性值;以及
判断所述当前属性值同所述预设属性值是否一致并输出判断结果。
18.如权利要求17所述的测试系统,其特征在于,所述判断所述当前属性值同所述预置属性值是否一致并输出判断结果包括:
当所述当前属性值同所述预置属性值一致时,向第一变量赋值True,当所述当前属性值同所述预置属性值不一致时,向所述第一变量赋值False;以及
判断第二变量的值同所述第一变量的当前值是否一致并输出判断结果,其中所述第二变量的值由用户预先设置为True或者False,所述判断结果同所述第二变量的值相关。
19.如权利要求18所述的测试系统,其特征在于,所述第二变量的值由所述用户预先设置为True,当所述第二变量的值同所述第一变量的当前值不一致时,所述输出判断结果包括
输出异常提示信息以指示所述目标操作方法的执行出现异常。
20.如权利要求18所述的测试系统,其特征在于,所述第二变量的值由所述用户预先设置为False,当所述第二变量的值同所述第一变量的当前值一致时,所述输出判断结果包括
输出异常提示信息以指示所述目标操作方法的执行出现异常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110936649.4A CN113722214B (zh) | 2021-08-16 | 2021-08-16 | 测试方法、测试设备及测试系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110936649.4A CN113722214B (zh) | 2021-08-16 | 2021-08-16 | 测试方法、测试设备及测试系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113722214A true CN113722214A (zh) | 2021-11-30 |
CN113722214B CN113722214B (zh) | 2024-05-03 |
Family
ID=78675951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110936649.4A Active CN113722214B (zh) | 2021-08-16 | 2021-08-16 | 测试方法、测试设备及测试系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113722214B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1420546A1 (de) * | 2002-11-15 | 2004-05-19 | Tektronix International Sales GmbH | Verfahren zum Erstellen eines Ablaufs einer zwischen mindestens zwei Instanzen ablaufenden Kommunikation und Protokolltester |
CN101706753A (zh) * | 2009-12-11 | 2010-05-12 | 武汉虹信通信技术有限责任公司 | 一种基于Perl的单元测试框架及方法 |
CN103176904A (zh) * | 2013-03-29 | 2013-06-26 | 北京经纬恒润科技有限公司 | 一种仿真测试平台软件架构及基于该架构的测试方法 |
CN107423211A (zh) * | 2017-03-15 | 2017-12-01 | 中国互联网络信息中心 | 一种sdns接口自动化测试系统和方法 |
CN107704392A (zh) * | 2017-09-30 | 2018-02-16 | 华为技术有限公司 | 一种测试用例的处理方法及服务器 |
WO2020233053A1 (zh) * | 2019-05-22 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 一种制作测试页面脚本的方法、装置、设备及存储介质 |
CN112860587A (zh) * | 2021-04-02 | 2021-05-28 | 中国工商银行股份有限公司 | Ui自动测试方法和装置 |
-
2021
- 2021-08-16 CN CN202110936649.4A patent/CN113722214B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1420546A1 (de) * | 2002-11-15 | 2004-05-19 | Tektronix International Sales GmbH | Verfahren zum Erstellen eines Ablaufs einer zwischen mindestens zwei Instanzen ablaufenden Kommunikation und Protokolltester |
CN101706753A (zh) * | 2009-12-11 | 2010-05-12 | 武汉虹信通信技术有限责任公司 | 一种基于Perl的单元测试框架及方法 |
CN103176904A (zh) * | 2013-03-29 | 2013-06-26 | 北京经纬恒润科技有限公司 | 一种仿真测试平台软件架构及基于该架构的测试方法 |
CN107423211A (zh) * | 2017-03-15 | 2017-12-01 | 中国互联网络信息中心 | 一种sdns接口自动化测试系统和方法 |
CN107704392A (zh) * | 2017-09-30 | 2018-02-16 | 华为技术有限公司 | 一种测试用例的处理方法及服务器 |
WO2020233053A1 (zh) * | 2019-05-22 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 一种制作测试页面脚本的方法、装置、设备及存储介质 |
CN112860587A (zh) * | 2021-04-02 | 2021-05-28 | 中国工商银行股份有限公司 | Ui自动测试方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113722214B (zh) | 2024-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9846638B2 (en) | Exposing method related data calls during testing in an event driven, multichannel architecture | |
US10354031B2 (en) | Information processing by interpenetrating signal transmission channel in design for testability of chip | |
CN105589805B (zh) | 一种代码覆盖率报告的生成方法和装置 | |
CN109783388A (zh) | Ui自动化测试方法、装置及电子设备 | |
CN104915297B (zh) | 一种android设备的APP耗电量的自动化测试方法 | |
CN109885480A (zh) | 一种基于调试桥的自动化界面兼容性测试方法及装置 | |
CN111930617A (zh) | 基于数据对象化的自动化测试方法及装置 | |
US11341030B2 (en) | Scriptless software test automation | |
CN103399814A (zh) | 自动化测试的方法及装置 | |
CN110990274A (zh) | 一种生成测试案例的数据处理方法、装置及系统 | |
CN105404574B (zh) | 一种智能卡与移动终端一致性测试方法及装置 | |
CN112231206A (zh) | 应用程序测试的脚本编辑方法、计算机可读存储介质及测试平台 | |
CN114328250A (zh) | 软件系统自动自检方法、介质和装置 | |
CN112860587A (zh) | Ui自动测试方法和装置 | |
CN112241373A (zh) | 自动化测试方法、测试装置、处理器和测试系统 | |
CN113806209A (zh) | 接口测试方法、框架、计算机设备和存储介质 | |
CN113722214B (zh) | 测试方法、测试设备及测试系统 | |
CN105446877A (zh) | 一种测试移动应用程序功耗的方法和装置 | |
CN105339974B (zh) | 模拟传感器 | |
CN109815127A (zh) | 自动化脚本转换方法、装置、计算机设备和存储介质 | |
KR20120051933A (ko) | 시뮬레이터 기반의 로봇 소프트웨어 컴포넌트 성능평가시스템 및 성능평가방법 | |
CN111625447B (zh) | 测试方法及装置、电子设备、计算机可读存储介质 | |
CN115550826A (zh) | Mic阵列的检测分析方法、装置、设备及存储介质 | |
CN115061902A (zh) | 页面加载时间测试方法、装置、设备、存储介质 | |
CN112306844B (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 | ||
CB02 | Change of applicant information |
Address after: Room 001a, 11 / F, building 1, 588 Zixing Road, Minhang District, Shanghai, 200241 Applicant after: Shanghai chuangmi Shulian Intelligent Technology Development Co.,Ltd. Address before: Room 001a, 11 / F, building 1, 588 Zixing Road, Minhang District, Shanghai, 200241 Applicant before: SHANGHAI CHUANGMI TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |