一种图形用户界面的测试方法及系统
文献发布时间:2024-04-18 19:58:30
【技术领域】
本发明涉及图形用户界面的设计领域,特别涉及一种图形用户界面的测试方法和系统。
【背景技术】
在计算机软件领域中,图形用户界面(Graphical User Interface)应用程序越来越多,为了保障软件的可靠性,通常会采用手动测试或手动测试与自动化测试相结合的方式对被测软件进行测试。而对于一些软件,随着其功能变得越发复杂与强大,功能模块越来越多,版本不断更新迭代,如何在少量人力的情况下进行测试,且保证测试代码的稳定性就会是一件庞大的工作量,集成电路图形用户界面软件就是这样一类软件。
不同的测试方法应用领域对测试的效率有着不同的要求,例如直接读取数据进行精确验证可以发现很精细的漏洞,属于对单一结果验证的深度足够,但往往需要更加精细化的测试代码准备以及后续维护,而对一系列操作行为的适应性需待考量,因为精细化的测试本身对测试代码就提出了较高要求,从而对测试代码的设计提出了要求。因为对集成电路图形界面的测试验证不仅涉及到软件功能本身,还涉及到大量数据行为、数据展示的验证,以及数据与图形交互行为的验证。
现有的图形用户界面测试方法,对图形用户界面的控件元素的管理属于创建随机命名变量。这样在简单的使用中是可以的,考虑到控件对象之间存在一定的依赖关系时,这种对象间的依赖关系信息也会包含在变量属性中,且这种行为也出现在对表中元素的访问时,缺乏对被测图形用户界面控件元素更为精细化的、便捷化的管理。没有完全和后续元素访问操作独立出来。
同时,现有的图形用户界面测试方法在设置验证点时,会依据检测对象特性而采用不同的检测方式,比如检查一个数据值时,会采用将该数值读取出来进行数值比对。若处理的任务中有大量的不定行列的表格数据时,图形用户界面测试方法的测试代码逻辑对数据的处理就依据不同表数据而有不同逻辑,测试程序将包含被测软件的一些逻辑而增加耦合度。此外表格的一些行为,比如多行合并,不同数据在表格上不同颜色显示等,就需要在读取表格数据的同时,读取表格的逻辑信息,这样事实上测试代码的逻辑就会变得比较复杂,使得测试程序本身出现漏洞的概率就变高。而且测试代码对被测图形用户界面程序的依赖度较高,在图形用户界面程序更新时,测试程序需要改动,维护成本增加。
【发明内容】
为提高图形用户界面的测试效率,本发明提供了一种图形用户界面的测试方法及系统。
本发明解决技术问题的方案是提供一种图形用户界面的测试方法,包括以下步骤:
S1:获取图形用户界面运行过程产生的代码;
S2:提取代码中图形用户界面的控件,将具有依赖关系的控件变量化封装成控件对象,控件对象保存在一个控件对象文件中;
S3:按照功能模块将图形用户界面运行过程的操作步骤封装为关键字函数;
S4:按照操作步骤的执行顺序依次调用对应的关键字函数,组成测试用例;
S5:运行测试用例,得到图形用户界面的测试结果。
优选地,步骤S2之后,还包括步骤S21:将至少部分具有依赖关系的控件变量化封装成元素函数接口。
优选地,步骤S3之后,还包括步骤S31:将控件对象封装为直接调用函数,通过直接调用函数来获取控件对象相对应的控件对象截图。
优选地,步骤S4之后,还包括步骤S41:运行测试用例,通过设置函数开关将该次运行调整为生成预期流程,将预期流程的测试结果设置为预期值。
优选地,步骤S41之后,还包括步骤S42:将至少部分控件对象设置为验证点,再次运行所述测试用例,验证点的测试结果和验证点相应的预期值进行比对,判断在验证点处测试用例是否通过测试。
优选地,步骤S5之后,还包括步骤S6:调用关键字函数执行测试用例,根据关键字函数的返回结果和验证点的比对结果,判断测试用例是否通过测试,并将判断结果写入测试报告。
优选地,验证点的测试结果包括测试结果图片和测试结果文件,将测试结果图片在函数中和预期值中的图片进行像素级比对,将测试结果文件和预期值中的文件进行完整字符比对。
优选地,步骤S6之后,还包括步骤S7:测试用例维护,当控件发生调整时,重新获取调整后的控件,将调整后的控件变量化封装成控件对象,在控件对象文件中替换相应的控件对象。
本发明为解决上述技术问题还提供一种图形用户界面的测试系统,用于实现图形用户界面的测试方法,包括:
代码录制模块,用于获取代码;
控件管理模块,用于从代码中提取控件,将控件变量化和函数化处理;
封装模块,用于封装关键字函数和直接调用函数;
测试用例生成模块,用于调用关键字函数,组成测试用例;
测试用例运行模块,用于运行测试用例,设置预期值和验证点;
测试结果生成模块,用于根据验证点处的测试结果和验证点处的预期值的比对结果,判断测试用例是否通过测试,并将判断结果写入测试报告;
测试维护模块,用于重新获取调整后的控件,将所述调整后的控件变量化封装成控件对象,并替换原有的控件对象。
本发明为解决上述技术问题还提供一种存储介质,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述计算机程序时,实现图形用户界面的测试方法。
与现有技术相比,本发明的一种图形用户界面的测试方法和系统,具有如下的有益效果:
1.本发明提供的一种图形用户界面的测试方法,包括以下步骤:S1:获取图形用户界面运行过程产生的代码;S2:提取代码中图形用户界面的控件,将具有依赖关系的控件变量化封装成控件对象,控件对象保存在一个控件对象文件中;S3:按照功能模块将图形用户界面运行过程的操作步骤封装为关键字函数;S4:按照操作步骤的执行顺序依次调用对应的关键字函数,组成测试用例;S5:运行测试用例,得到图形用户界面的测试结果。本发明通过在测试过程将图形用户界面的控件变量化封装成控件对象,并将控件对象保存在一个控件对象文件中,去掉控件之间的关联。使得控件变量对图形用户界面软件的访问更加稳定可靠,也使得后续测试代码编程过程中和验证时对控件对象的访问与待测软件对象隔离开来,测试更加便捷高效。
2.本发明的步骤S2之后,还包括步骤S21:将至少部分具有依赖关系的控件变量化封装成元素函数接口。通过将具有依赖关系的控件如表数据及其关联的子表,变量化封装成元素函数接口,保存在控件对象文件中进行管理。后续访问接收传入参数行列等信息就可以访问相应表中的相应元素,将访问端和控件管理端分割开来。这样后续访问具体对象既不需要了解具体对象,又可以准确的与表或表的某个元素访问。
3.本发明的步骤S3之后,还包括步骤S31:将控件对象封装为直接调用函数,通过直接调用函数来获取控件对象相对应的控件对象截图。将不同功能不同模块不同格式的控件对象封装到一套通用方式访问的方法函数,即直接调用函数,通过将控件对象传入直接调用函数,可以直接返回控件对象截图。这样可以将对控件对象的验证封装到直接调用函数中,更加细化到每一个想要待测的功能模块,使得验证点的选择灵活度增加。即每个功能模块对象既当作被操作对象,也可以当作被检测对象,增加了测试验证的自由度。
4.本发明的步骤S4之后,还包括步骤S41:运行测试用例,通过设置函数开关将该次运行调整为生成预期流程,将预期流程的测试结果设置为预期值。
步骤S41之后,还包括步骤S42:将至少部分控件对象设置为验证点,再次运行所述测试用例,验证点的测试结果和验证点相应的预期值进行比对,判断在验证点处测试用例是否通过测试。
步骤S5之后,还包括步骤S6:调用关键字函数执行测试用例,根据关键字函数的返回结果和验证点的比对结果,判断测试用例是否通过测试,并将判断结果写入测试报告。验证点的测试结果包括测试结果图片和测试结果文件,将测试结果图片在函数中和预期值中的图片进行像素级比对,将测试结果文件和预期值中的文件进行完整字符比对。
本发明通过设置预期值和验证点,可以在需要验证的控件对象处进行自动化验证,通过比对预期值和验证点的测试结果,从而对图形用户界面进行测试判断。同时,采用了精细化元素的控件对象图片截取,即依据情况将验证点的图像信息尽可能细化到检测对象,保证测试验证点的准确性和稳定性,将验证点的测试结果和预期值进行像素级比对,用图片信息替代很多场景下的数值比对,可以满足快速检测要求的同时,提升待测软件变动频繁时的测试软件的稳定性,提高测试效率。例如对于一个表来说,既可以截取图表,又可以截取图表中的一行,一列,又或者一个元素。这样就将无关信息排除在外,只需要考虑控件对象截图的大小准确,即使多次运行截图,图片质量也比较稳定,测试程序也比较稳定。
5.本发明的步骤S6之后,还包括步骤S7:测试用例维护,当控件发生调整时,重新获取调整后的控件,将调整后的控件变量化封装成控件对象,在控件对象文件中替换相应的控件对象。如果图形用户界面功能逻辑不发生变动的基础上,控件发生改动,自动化测试维护者只需要改动控件对象变量,其子控件对象可以在不发生修改的基础上依然可以访问,减少了待测图形用户界面软件变动而产生的测试代码的修改量。
6.本发明还提供一种图形用户界面的测试系统,具有与上述图形用户界面的测试方法相同的有益效果,在此不做赘述。
7.本发明还提供一种存储介质,其上存储有计算机程序,该计算机程序被执行时实现上述图形用户界面的测试方法,具有与上述图形用户界面的测试方法相同的有益效果,在此不做赘述。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的一种图形用户界面的测试方法的步骤流程图。
图2是本发明第二实施例提供的一种图形用户界面的测试方法中步骤S2和S3的步骤流程图。
图3是本发明第二实施例提供的一种图形用户界面的测试方法中步骤S4的步骤流程图。
图4是本发明第二实施例提供的一种图形用户界面的测试方法的部分步骤流程图。
图5是本发明第三实施例提供的图形用户界面的测试系统的结构示意图。
图6是本发明第三实施例提供存储介质的结构示意图。
附图标识说明:
1、图形用户界面的测试系统;
2、存储介质
101、代码录制模块;102、控件管理模块;103、封装模块;104、测试用例生成模块;105、测试用例运行模块;106、测试结果生成模块;107、测试维护模块;
201、存储器;202、处理器;203、计算机程序。
【具体实施方式】
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图及实施实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,本发明第一实施例提供一种图形用户界面的测试方法,包括以下步骤:
S1:获取图形用户界面运行过程产生的代码;
S2:提取代码中图形用户界面的控件,将具有依赖关系的控件变量化封装成控件对象,控件对象保存在一个控件对象文件中;
S3:按照功能模块将图形用户界面运行过程的操作步骤封装为关键字函数;
S4:按照操作步骤的执行顺序依次调用对应的关键字函数,组成测试用例;
S5:运行测试用例,得到图形用户界面的测试结果。
需要说明的是,在计算机软件领域中,图形用户界面(Graphical UserInterface)应用程序越来越多,为了保障软件的可靠性,通常会采用手动测试或手动测试与自动化测试相结合的方式对被测软件进行测试。
在图形用户界面软件测试中,控件指的是用户界面上的各种可交互的元素或组件。这些控件用于接收用户的输入、展示信息、执行操作等,常见的控件包括按钮、文本框、复选框、下拉列表、滑块、标签等。控件在软件测试中扮演着重要的角色,因为测试人员需要验证这些控件是否能够正常工作、响应用户的操作并正确地显示信息。
对基于QT框架开发的图形交互界面软件,现有的测试方法是对控件的管理创建随机命名变量。这样在简单的使用中是可以的,考虑到控件之间存在一定的依赖关系时,比如存在表(Table)A、表(Table)B、表(Table)B是表(Table)A的子表,这种对象间的依赖关系信息也会包含在变量属性中,且这种行为也出现在对表中元素的访问时,缺乏对被测软件控件更为精细化的、便捷化的管理,没有完全和后续控件访问操作独立出来。
可以理解地,本实施例中,将具有依赖关系的控件变量化封装成控件对象,控件对象保存在一个控件对象文件中,通过控件对象,可以访问和设置控件的属性,调用控件的方法,并响应用户交互。优化了待测软件控件的保存和维护,对不同控件元素,将其变量化,去掉控件之间的关联化。使得控件变量对软件的访问更加稳定可靠,也使得后续测试代码编程过程中和验证时对对象的访问与待测软件对象隔离开来,更加便捷高效。
进一步的,在上述步骤S1中,获取图形用户界面运行过程产生的所有代码。具体地,使用Squish软件打开待测图形用户界面软件,录制图形用户界面应用程序运行过程产生的所有代码。
可以理解地,在上述步骤S2中,提取代码中图形用户界面的控件,例如控件包括按钮、文本框、复选框、下拉列表、滑块、标签等。然后将具有依赖关系的控件变量化封装成控件对象,保存在一个控件对象文件中,特别是用控件变量替代控件之间的依赖关系,便于后续访问。
可以理解地,在上述步骤S2中,控件变量化是指,根据图形用户界面上的控件,为每个需要操作的控件定义一个变量。变量的命名可以根据实际需求来命名,能够直观地表达出元素的含义。在代码中使用变量来代替具体的控件定位信息,例如使用变量来进行控件的操作。通过控件变量化,可以很方便地维护和重用代码。如果页面的控件发生了变化,只需要修改变量的定位信息即可,而不需要修改每个使用到该控件的地方。
在上述步骤S3中,按照功能模块将图形用户界面运行过程的操作步骤封装为关键字函数。首先根据测试需求,识别出控件元素中的关键字,如点击按钮、输入文本等操作步骤。针对每个关键字,编写对应的函数封装,将关键字的操作和验证逻辑封装在函数中。函数的参数可以用于传递需要操作的控件信息或其他相关数据。
在上述步骤S4中,按照操作步骤的执行顺序依次调用对应的关键字函数,组成测试用例。
在上述步骤S5中,运行上述测试用例,得到图形用户界面的测试结果。通过调用关键字函数来执行测试用例,测试框架会自动执行各个关键字函数,并根据关键字函数的返回结果判断测试是否通过。
通过关键字函数化封装,可以将测试用例的复杂度降低,提高测试用例的可读性和可维护性。同时,由于关键字函数可以被重复使用,可以节省测试用例编写的时间和精力。此外,关键字函数化封装也可以促进测试团队的协作,多人共同开发和维护关键字函数库,提高整体测试效率。
请结合参阅图1~图4,本发明第二实施例提供一种图形用户界面的测试方法,本第二实施例与第一实施例的区别点在于上述步骤S2之后,还包括步骤S21:将至少部分具有依赖关系的控件变量化封装成元素函数接口。
例如当程序在处理多个文件(比如文件A1,A2,A3)的数据表时,它们的表(B1,B2,B3,)及其子表(C1,C2,C3,),都是依赖互相包含的规则存续的,比如C1包含B1中的信息,而B1元素信息又包含A1信息。对于表、其子表和其表的子元素这种依赖关系,封装成元素函数接口。
可以理解地,通过元素函数接口可以实现控件的定位、属性获取、操作执行等功能,将表中的每个元素及行列以函数的形式封装成接口保存在控件对象管理文件中进行管理。后续访问可以接受传入参数行列等信息就可以访问相应表中的相应元素,将访问端和控件管理端分割开来。这样后续访问具体对象既不需要了解具体对象,又可以准确的与表或表的某个元素访问。
本第二实施例在上述步骤S3之后,还包括步骤S31:将控件对象封装为直接调用函数,通过直接调用函数来获取控件对象相对应的控件对象截图。
需要说明的是,由于集成电路图形界面的验证不仅涉及到软件功能本身,还涉及到大量数据行为、数据展示的验证,以及数据与GDS图形交互行为的验证。因此,本第二实施例提供对不同功能不同模块不同格式的数据可以用一套通用方式访问的方法函数,即直接调用函数,将对象传入直接调用函数,可以返回控件对象截图。
可以理解地,将对控件对象的验证封装到直接调用函数中,更加细化到每一个想要待测的功能模块,使得验证点的选则灵活度增加。即每个功能模块对象既当作被操作对象,也可以当作被检测对象,增加了测试验证的自由度。
请结合参阅图3和图4,本第二实施例在上述步骤S4之后,还包括步骤:
S41:运行测试用例,通过设置函数开关将该次运行调整为生成预期流程,将预期流程的测试结果设置为预期值;
S42:将至少部分控件对象设置为验证点,再次运行所述测试用例,验证点的测试结果和验证点相应的预期值进行比对,判断在验证点处测试用例是否通过测试;
S5:运行测试用例,得到图形用户界面的测试结果;
S6:调用关键字函数执行测试用例,根据关键字函数的返回结果和验证点的比对结果,判断测试用例是否通过测试,并将判断结果写入测试报告。
进一步地,验证点的测试结果包括测试结果图片和测试结果文件,将测试结果图片在函数中和预期值中的图片进行像素级比对,将测试结果文件和预期值中的文件进行完整字符比对。
可以理解地,首先依照测试用例,依次调用关键字函数,并将测试参数传入,组成可复用的测试用例。然后在需要验证的地方设置验证点,比如验证表(Table)A,因为不需要对表中的数据进行读写操作,所以可以通过直接调用函数,传入表控件元素,获取表格截图。将截图变量传给图片比对函数。图片比对函数中一个变量是测试值,一个是预设的预期值,比对的结果将会以报告的形式发出。
可以理解地,本第二实施例通过设置预期值和验证点,可以在需要验证的控件对象处进行自动化验证,通过比对预期值和验证点的测试结果,从而对图形用户界面进行测试判断。
同时,采用了精细化元素的控件对象图片截取,即依据情况将验证点的图像信息尽可能细化到检测对象,保证测试验证点的准确性和稳定性,将验证点的测试结果和预期值进行像素级比对,用图片信息替代很多场景下的数值比对,可以满足快速检测要求的同时,提升待测软件变动频繁时的测试软件的稳定性,提高测试效率。例如对于一个表来说,既可以截取图表,又可以截取图表中的一行,一列,又或者一个元素。这样就将无关信息排除在外,只需要考虑控件对象截图的大小准确,即使多次运行截图,图片质量也比较稳定,测试程序也比较稳定。
进一步地,本第二实施例在上述步骤S6之后,还包括步骤S7:测试用例维护,当控件发生调整时,重新获取调整后的控件,将调整后的控件变量化封装成控件对象,在控件对象文件中替换相应的控件对象。
可以理解地,如果图形用户界面功能逻辑不发生变动的基础上,控件发生改动,自动化测试维护者只需要改动控件对象变量,其子控件对象可以在不发生修改的基础上依然可以访问,减少了待测图形用户界面软件变动而产生的测试代码的修改量。
在本第二实施例所述的图形用户界面的测试方法中,可以在相同的测试流程下,输入多种测试参数,使得创建测试用例的工作量大大降低。此外,验证信息也是对一个控件,比如一个窗口,或者一个表格,甚至是表格中的一个元素进行截图,这样截图的信息就与程序所在的位置没有关系,只需要保证截图控件的大小就可以。这个流程,会降低测试用例的创建速度,增加测试程序的健壮性。此外,特别是能够降低代码和需求频繁增改导致的程序行为变动,引起的测试代码随动时的修改量。大大提高了测试代码的健壮性,提高了测试效率。
请参阅图5,本发明第三实施例提供一种图形用户界面的测试系统1,包括:
代码录制模块101:用于获取图形用户界面运行过程产生的所有代码;
控件管理模块102:用于从代码中提取图形用户界面的控件,将具有依赖关系的控件变量化封装成控件对象,将控件对象保存在一个控件对象文件中,将至少部分具有依赖关系的控件变量化封装成元素函数接口;
封装模块103:用于将图形用户界面运行过程的操作步骤按照功能模块封装为关键字函数,将控件对象封装为直接调用函数,通过直接调用函数来获取控件对象相对应的控件对象截图;
测试用例生成模块104:用于将操作步骤按照执行顺序依次调用对应的关键字函数,组成测试用例;
测试用例运行模块105:用于运行测试用例,通过设置函数开关将该次运行调整为生成预期流程,并检查预期流程的测试结果,将预期流程的测试结果设置为预期值;将至少部分控件对象设置为验证点,再次运行测试用例,验证点的测试结果和验证点相应的预期值进行比对,判断在验证点处测试用例是否通过测试;
测试结果生成模块106:调用关键字函数执行所述测试用例,根据关键字函数的返回结果和验证点的比对结果,判断测试用例是否通过测试,并将判断结果写入测试报告;生成的测试结果包括测试结果图片和测试结果文件,将测试结果图片在函数中和预期值中的图片进行像素级比对,将测试结果文件和预期值中的文件进行完整字符比对;
测试维护模块107:用于当控件发生调整时,重新进行获取调整后的控件,将调整后的控件变量化封装成控件对象,在控件对象文件中替换相应的控件对象。
本发明第三实施例提供的图形用户界面的测试系统1,具有与上述图形用户界面的测试方法相同的有益效果,在此不做赘述。
请参阅图6,本发明第四实施例提供一种存储介质2,包括存储器201、处理器202及存储在存储器201上并可在处理器202上运行的计算机程序203,处理器202执行计算机程序203时,能够实现图形用户界面的测试方法。
本发明第四实施例提供的一种存储介质2,其上存储有计算机程序203,该计算机程序203被执行时实现上述图形用户界面的测试方法,具有与上述图形用户界面的测试方法相同的有益效果,在此不做赘述。
可以理解地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在本发明所提供的实施例中,应理解,“与A对应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定特征、结构或特性可以以任意适合的方式结合在一个或多个实施例中。本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在本发明的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在本发明的附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方案中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,在此基于涉及的功能而确定。需要特别注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
与现有技术相比,本发明的一种图形用户界面的测试方法及系统具有以下优点:
1.本发明提供的一种图形用户界面的测试方法,包括以下步骤:S1:获取图形用户界面运行过程产生的代码;S2:提取代码中图形用户界面的控件,将具有依赖关系的控件变量化封装成控件对象,控件对象保存在一个控件对象文件中;S3:按照功能模块将图形用户界面运行过程的操作步骤封装为关键字函数;S4:按照操作步骤的执行顺序依次调用对应的关键字函数,组成测试用例;S5:运行测试用例,得到图形用户界面的测试结果。本发明通过在测试过程将图形用户界面的控件变量化封装成控件对象,并将控件对象保存在一个控件对象文件中,去掉控件之间的关联。使得控件变量对图形用户界面软件的访问更加稳定可靠,也使得后续测试代码编程过程中和验证时对控件对象的访问与待测软件对象隔离开来,测试更加便捷高效。
2.本发明的步骤S2之后,还包括步骤S21:将至少部分具有依赖关系的控件变量化封装成元素函数接口。通过将具有依赖关系的控件如表数据及其关联的子表,变量化封装成元素函数接口,保存在控件对象文件中进行管理。后续访问接收传入参数行列等信息就可以访问相应表中的相应元素,将访问端和控件管理端分割开来。这样后续访问具体对象既不需要了解具体对象,又可以准确的与表或表的某个元素访问。
3.本发明的步骤S3之后,还包括步骤S31:将控件对象封装为直接调用函数,通过直接调用函数来获取控件对象相对应的控件对象截图。将不同功能不同模块不同格式的控件对象封装到一套通用方式访问的方法函数,即直接调用函数,通过将控件对象传入直接调用函数,可以直接返回控件对象截图。这样可以将对控件对象的验证封装到直接调用函数中,更加细化到每一个想要待测的功能模块,使得验证点的选则灵活度增加。即每个功能模块对象既当作被操作对象,也可以当作被检测对象,增加了测试验证的自由度。
4.本发明的步骤S4之后,还包括步骤S41:运行测试用例,通过设置函数开关将该次运行调整为生成预期流程,将预期流程的测试结果设置为预期值。
步骤S41之后,还包括步骤S42:将至少部分控件对象设置为验证点,再次运行所述测试用例,验证点的测试结果和验证点相应的预期值进行比对,判断在验证点处测试用例是否通过测试。
步骤S5之后,还包括步骤S6:调用关键字函数执行测试用例,根据关键字函数的返回结果和验证点的比对结果,判断测试用例是否通过测试,并将判断结果写入测试报告。验证点的测试结果包括测试结果图片和测试结果文件,将测试结果图片在函数中和预期值中的图片进行像素级比对,将测试结果文件和预期值中的文件进行完整字符比对。
本发明通过设置预期值和验证点,可以在需要验证的控件对象处进行自动化验证,通过比对预期值和验证点的测试结果,从而对图形用户界面进行测试判断。同时,采用了精细化元素的控件对象图片截取,即依据情况将验证点的图像信息尽可能细化到检测对象,保证测试验证点的准确性和稳定性,将验证点的测试结果和预期值进行像素级比对,用图片信息替代很多场景下的数值比对,可以满足快速检测要求的同时,提升待测软件变动频繁时的测试软件的稳定性,提高测试效率。例如对于一个表来说,既可以截取图表,又可以截取图表中的一行,一列,又或者一个元素。这样就将无关信息排除在外,只需要考虑控件对象截图的大小准确,即使多次运行截图,图片质量也比较稳定,测试程序也比较稳定。
5.本发明的步骤S6之后,还包括步骤S7:测试用例维护,当控件发生调整时,重新获取调整后的控件,将调整后的控件变量化封装成控件对象,在控件对象文件中替换相应的控件对象。如果图形用户界面功能逻辑不发生变动的基础上,控件发生改动,自动化测试维护者只需要改动控件对象变量,其子控件对象可以在不发生修改的基础上依然可以访问,减少了待测图形用户界面软件变动而产生的测试代码的修改量。
6.本发明还提供一种图形用户界面的测试系统,具有与上述图形用户界面的测试方法相同的有益效果,在此不做赘述。
7.本发明还提供一种存储介质,其上存储有计算机程序,该计算机程序被执行时实现上述图形用户界面的测试方法,具有与上述图形用户界面的测试方法相同的有益效果,在此不做赘述。
以上对本发明实施例公开的一种虚拟摇杆的控制方法及控制系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制,凡在本发明的原则之内所作的任何修改,等同替换和改进等均应包含本发明的保护范围之内。
- 一种图形用户界面的测试方法和系统
- 一种图形用户界面的测试方法和系统