CN104932980B - 软件自动测试方法及装置 - Google Patents

软件自动测试方法及装置 Download PDF

Info

Publication number
CN104932980B
CN104932980B CN201510375347.9A CN201510375347A CN104932980B CN 104932980 B CN104932980 B CN 104932980B CN 201510375347 A CN201510375347 A CN 201510375347A CN 104932980 B CN104932980 B CN 104932980B
Authority
CN
China
Prior art keywords
test
library
action
module
code
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
CN201510375347.9A
Other languages
English (en)
Other versions
CN104932980A (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.)
Beijing Hongxiang Technical Service Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510375347.9A priority Critical patent/CN104932980B/zh
Publication of CN104932980A publication Critical patent/CN104932980A/zh
Application granted granted Critical
Publication of CN104932980B publication Critical patent/CN104932980B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种软件自动测试方法及装置,其中软件自动测试方法包括:接收用于测试软件的描述性语言;从描述性语言中提取至少一个测试对象和至少一个测试动作;根据至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码;按照描述性语言中描述的执行顺序,将对象代码和动作代码组合为可执行代码;执行可执行代码,得到执行结果;将执行结果与期望结果进行对比分析,得到测试结果。本方案不仅可直接根据描述性语言自动获取与该描述性语言相对应的可执行代码并对其进行执行,减少了人力成本和时间成本,而且还降低了可执行代码的编写错误率。

Description

软件自动测试方法及装置
技术领域
本发明涉及互联网技术领域,具体涉及一种软件自动测试方法及装置。
背景技术
随着互联网技术的普及,越来越多的互联网技术已融入到人们的生活中。因此,人们经常会使用到各种软件。这些软件在正式发布之前或之后都需要软件工程师进行仔细测试与调试,以发现并解决其中所存在的各种漏洞、缺陷,或对软件进行改进及进一步优化,从而尽量满足用户的多种需求,提高用户的使用体验感。
虽然已经有一些自动化测试方法能够实现一些软件的自动化测试,并在一定程度上节约了人力成本与时间成本,然而这些自动化测试方法并不能够完全满足所有用户的需求。另外,为了使用这些自动化测试方法,还是需要专业人员编写可用于自动化测试的可执行代码,如果编写的可执行代码存在错误,则会造成测试结果不准确甚至测试失败。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的软件自动测试方法及装置。
根据本发明的一个方面,提供了一种软件自动测试方法,包括:
接收用于测试软件的描述性语言;
从描述性语言中提取至少一个测试对象和至少一个测试动作;
根据至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码;
按照描述性语言中描述的执行顺序,将对象代码和动作代码组合为可执行代码;
执行可执行代码,得到执行结果;
将执行结果与期望结果进行对比分析,得到测试结果。
根据本发明的另一方面,提供了一种软件自动测试装置,包括:
接收模块,适于接收用于测试软件的描述性语言;
提取模块,适于从描述性语言中提取至少一个测试对象和至少一个测试动作;
查找模块,适于根据至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码;
组合模块,适于按照描述性语言中描述的执行顺序,将对象代码和动作代码组合为可执行代码;
执行模块,适于执行组合模块组合得到的可执行代码,得到执行结果;
对比分析模块,适于将执行结果与期望结果进行对比分析,得到测试结果。
根据本发明提供的技术方案,从用于测试软件的描述性语言中提取至少一个测试对象和至少一个测试动作,并分别在对象库和动作库中查找每个测试对象所匹配的对象代码和每个测试动作所匹配的动作代码,然后根据描述性语言将对象代码和动作代码进行组合得到可执行代码,执行可执行代码,并将其执行结果与期望结果进行对比分析获取测试结果。本发明提供的技术方案使用户无需编写可执行代码,直接根据描述性语言就可自动获取与该描述性语言相对应的可执行代码,进而快捷方便地完成了软件的自动测试,减少了人力成本和时间成本,降低了可执行代码的编写错误率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的软件自动测试方法的流程示意图;
图2示出了根据本发明另一个实施例的软件自动测试方法的流程示意图;
图3示出了根据本发明一个实施例的软件自动测试装置的功能结构示意图;
图4示出了根据本发明另一个实施例的软件自动测试装置的功能结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的软件自动测试方法的流程示意图,如图1所示,该方法包括如下步骤:
步骤S100,接收用于测试软件的描述性语言。
为了便于测试软件,需要按照该软件自动测试方法的语言规则,预先编写用于测试软件的描述性语言,根据该描述性语言,完成对软件的测试。
步骤S101,从描述性语言中提取至少一个测试对象和至少一个测试动作。
具体地,测试对象可包括以下对象中的一个或多个:文件、进程、窗口、注册表以及服务。其中,窗口可包括以下窗口中的一个或多个:按钮、图标、超级链接以及输入框。而测试动作可包括以下动作中的一个或多个:新建、删除、写、移动、修改、关闭、传递、拖动、双击、单击、右键双击、右键单击、右键拖动、输入、增加、启动以及暂停等。
例如,描述性语言为“第一步,单击第一按钮;第二步,删除第一文件”,可从该描述性语言中提取出测试对象和测试动作,其中提取出的测试对象分别为第一按钮和第一文件,提取出的测试动作分别为单击和删除。
步骤S102,根据至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码。
其中,对象库和动作库已经预先创建完成,且对象库内存储有测试对象关键字与对象代码的映射关系,动作库内存储有测试动作关键字与动作代码的映射关系。具体地,测试对象关键字可包括:文件、进程、按钮、图标、输入框以及注册表等,测试动作关键字可包括:新建、删除、移动、关闭、双击、单击以及输入等。
例如,步骤S101提取了两个测试对象和两个测试动作,其中,两个测试对象分别为第一按钮和第一文件,两个测试动作分别为单击和删除。步骤S102则在对象库内查找分别与第一按钮和第一文件相匹配的对象代码,并在动作库内查找分别与单击和删除相匹配的动作代码。
步骤S103,按照描述性语言中描述的执行顺序,将对象代码和动作代码组合为可执行代码。
假设描述性语言为“第一步,单击第一按钮;第二步,删除第一文件”,步骤S103可按照描述性语言中描述的执行顺序,即“第一步”与“第二步”,先将与第一按钮相匹配的对象代码和与单击相匹配的动作代码进行组合,再将与第一文件相匹配的对象代码和与删除相匹配的动作代码进行组合,得到可执行代码。
步骤S104,执行可执行代码,得到执行结果。
执行上一步骤组合得到的可执行代码,获得对应的执行结果。
步骤S105,将执行结果与期望结果进行对比分析,得到测试结果。
将执行结果与期望结果进行对比,分析两者之间的差异,得到软件的测试结果。用户可根据测试结果判断出该软件是否已达到了期望结果,如果经判断得到该软件还没有达到期望结果,则还需对软件进行改进与优化,其中,期望结果为用户所期望得到的结果。
根据本实施例提供的软件自动测试方法,从用于测试软件的描述性语言中提取至少一个测试对象和至少一个测试动作,并分别在对象库和动作库中查找每个测试对象所匹配的对象代码和每个测试动作所匹配的动作代码,然后根据描述性语言将对象代码和动作代码进行组合得到可执行代码,执行可执行代码,并将其执行结果与期望结果进行对比分析获取测试结果。本发明提供的技术方案使用户无需编写可执行代码,直接根据描述性语言就可自动获取与该描述性语言相对应的可执行代码,进而快捷方便地完成了软件的自动测试,减少了人力成本和时间成本,降低了可执行代码的编写错误率。
图2示出了根据本发明另一个实施例的软件自动测试方法的流程示意图,如图2所示,该方法包括如下步骤:
步骤S200,接收用于测试软件的描述性语言。
其中,与可执行代码相比,该描述性语言更接近人们日常生活中所使用的语言。对于用户来说,编写用于测试软件的描述性语言比编写可执行代码更加简单、更加容易。
步骤S201,判断对象库和动作库是否存在;若对象库和动作库均存在,则执行步骤S202;若对象库和/或动作库不存在,则执行步骤S203。
当不确定对象库和动作库是否存在时,需要对对象库和动作库是否存在进行判断。如果经判断得到对象库和动作库均存在,则执行步骤S202;如果经判断得到对象库和/或动作库不存在,则执行步骤S203。
步骤S202,从描述性语言中提取至少一个测试对象和至少一个测试动作。
在对象库和动作库均存在的情况下,从描述性语言中提取至少一个测试对象和至少一个测试动作。
例如,描述性语言为“第一步,单击第一按钮;第二步,删除第一文件”,可从该描述性语言中提取出测试对象和测试动作,其中提取出的测试对象分别为第一按钮和第一文件,提取出的测试动作分别为单击和删除。
步骤S203,创建对象库和/或动作库。
经步骤S201判断出对象库和/或动作库不存在,则步骤S203需要创建对象库和/或动作库。具体地说,如果步骤S201判断得到对象库不存在,则步骤S203为创建对象库;如果步骤S201判断得到动作库不存在,则步骤S203为创建动作库;如果步骤S201判断得到对象库和动作库都不存在,则步骤S203为创建对象库和动作库。其中,对象库内存储有测试对象关键字与对象代码的映射关系,动作库内存储有测试动作关键字与动作代码的映射关系。在步骤S203执行完成后,执行步骤S202。
步骤S204,判断在对象库内是否能查找到任一测试对象匹配的对象代码;若是,则执行步骤S206;若否,则执行步骤S205。
步骤S205,为该测试对象配置对象代码并加入到对象库中。
如果在对象库内查找到与第一按钮相匹配的对象代码,但没有查找到与第一文件相匹配的对象代码,则需要为第一文件配置对象代码并加入到对象库中,以便扩充对象库所包括的内容。
步骤S206,判断在动作库内是否能查找到任一测试动作匹配的动作代码:若是,则执行步骤S208;若否,则执行步骤S207。
步骤S207,为该测试动作配置动作代码并加入到动作库中。
如果在动作库内都未查找到与单击和删除相匹配的动作代码,则需要为单击和删除都配置动作代码并加入到动作库中,以便扩充动作库所包括的内容,方便日后的继续使用。
步骤S208,按照描述性语言中描述的执行顺序,将对象代码和动作代码组合为可执行代码。
假设描述性语言为“第一步,单击第一按钮;第二步,删除第一文件”,步骤S208可按照描述性语言中描述的执行顺序,即“第一步”与“第二步”,先将与第一按钮相匹配的对象代码和与单击相匹配的动作代码进行组合,再将与第一文件相匹配的对象代码和与删除相匹配的动作代码进行组合,得到可执行代码。
步骤S209,执行可执行代码,得到执行结果。
执行上一步骤组合得到的可执行代码,获得对应的执行结果。
步骤S210,按照资源类型,将执行结果进行分解。
为了能够更好地与期望结果进行对比,可将执行结果按照资源类型进行分解,其中资源类型可包含以下类型的一种或多种:图像资源、进程资源以及文件资源。
步骤S211,将分解的不同资源类型的执行结果分别与对应的资源类型的期望结果进行对比分析,得到测试结果。
例如执行结果是按照图像资源与文件资源进行分解的,步骤S211将图像资源部分的执行结果与图像资源部分的期望结果进行对比,将文件资源部分的执行结果与文件资源部分的期望结果进行对比,分析它们之间的差异,得到软件的测试结果,从而使用户可直接清晰地得到不同资源类型的测试结果,以便对软件进行改进及优化。
另外,本发明提供的软件自动测试方法还可以设置执行可执行代码的次数,使可执行代码自动重复执行。因为有时执行一次可执行代码并不能够完全测试出软件所存在的漏洞与缺陷,有些漏洞是在多次执行之中偶然出现的,或者有些具体的环境也要求重复执行可执行代码,因此为了应对上述情况,本发明提供的技术方案能够根据用户的需求自动重复执行可执行代码。
根据本实施例提供的软件自动测试方法,从描述性语言中提取至少一个测试对象和至少一个测试动作,并分别在对象库和动作库中查找每个测试对象所匹配的对象代码和每个测试动作所匹配的动作代码,然后根据描述性语言将对象代码和动作代码进行组合得到可执行代码,执行可执行代码后并按照资源类型对比分析执行结果与期望结果,从而得到测试结果。本发明提供的技术方案不仅使用户可直接根据描述性语言自动获取与该描述性语言相对应的可执行代码,快捷方便地完成了软件的自动测试,减少了人力成本和时间成本,降低了可执行代码的编写错误率,而且还可使用户直接清晰地得到不同资源类型的测试结果,以便对软件进行改进及优化。
图3示出了根据本发明一个实施例的软件自动测试装置的功能结构示意图,如图3所示,该装置包括:接收模块301、提取模块302、查找模块303、组合模块304、执行模块305和对比分析模块306。
接收模块301,适于接收用于测试软件的描述性语言。
接收模块301接收用户预先编写的用于测试软件的描述性语言,本发明提供的软件自动测试装置可根据该描述性语言自动完成对软件的测试。
提取模块302,适于从描述性语言中提取至少一个测试对象和至少一个测试动作。
例如,接收模块301接收的描述性语言为“第一步,单击第一按钮;第二步,删除第一文件”,提取模块302可从该描述性语言中提取出测试对象和测试动作,其中提取出的测试对象分别为第一按钮和第一文件,提取出的测试动作分别为单击和删除。
查找模块303,适于根据至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码。
例如,提取模块302提取出了两个测试对象和两个测试动作,其中,两个测试对象分别为第一按钮和第一文件,两个测试动作分别为单击和删除。然后查找模块303需要在对象库内查找分别与第一按钮和第一文件相匹配的对象代码,并在动作库内查找分别与单击和删除相匹配的动作代码。
组合模块304,适于按照描述性语言中描述的执行顺序,将对象代码和动作代码组合为可执行代码。
假设接收模块301接收的描述性语言为“第一步,单击第一按钮;第二步,删除第一文件”,组合模块304可按照描述性语言中描述的执行顺序,即“第一步”与“第二步”,先将与第一按钮相匹配的对象代码和与单击相匹配的动作代码进行组合,再将与第一文件相匹配的对象代码和与删除相匹配的动作代码进行组合,得到可执行代码。
执行模块305,适于执行可执行代码,得到执行结果。
执行模块305执行经组合模块304组合得到的可执行代码,获得对应的执行结果。
对比分析模块306,适于将执行结果与期望结果进行对比分析,得到测试结果。
对比分析模块306将执行结果与期望结果进行对比,分析两者之间的差异,得到软件的测试结果。用户可根据对比分析模块306得到的测试结果判断出该软件是否已达到了期望结果,如果经判断得到该软件还没有达到期望结果,则还需对软件进行改进与优化。
根据本实施例提供的软件自动测试装置,通过提取模块从用于测试软件的描述性语言中提取至少一个测试对象和至少一个测试动作,并通过查找模块分别在对象库和动作库中查找每个测试对象所匹配的对象代码和每个测试动作所匹配的动作代码,然后通过组合模块组合得到可执行代码,对比分析模块将执行模块的执行结果与期望结果进行对比分析获取测试结果。本发明提供的技术方案使用户无需编写可执行代码,直接根据描述性语言就可自动获取与该描述性语言相对应的可执行代码,进而快捷方便地完成了软件的自动测试,减少了人力成本和时间成本,降低了可执行代码的编写错误率。
图4示出了根据本发明另一个实施例的软件自动测试装置的功能结构示意图,如图4所示,该装置包括:接收模块401、判断模块402、提取模块403、创建模块404、查找模块405、第一配置模块406、第二配置模块407、组合模块408、执行模块409、分解模块410和对比分析模块411。
接收模块401,适于接收用于测试软件的描述性语言。
判断模块402,适于判断对象库和动作库是否存在。
当不确定对象库和动作库是否存在时,需要对对象库和动作库是否存在进行判断。若判断模块402判断得到对象库和动作库均存在,则触发提取模块403;若判断模块402判断得到对象库和/或动作库不存在,则触发创建模块404。
提取模块403,适于从描述性语言中提取至少一个测试对象和至少一个测试动作。
在对象库和动作库均存在的情况下,提取模块403从描述性语言中提取至少一个测试对象和至少一个测试动作。
例如,接收模块401接收的描述性语言为“第一步,单击第一按钮;第二步,删除第一文件”,提取模块403可从该描述性语言中提取出测试对象和测试动作,其中提取出的测试对象分别为第一按钮和第一文件,提取出的测试动作分别为单击和删除。
创建模块404,适于创建对象库和/或动作库。
在创建模块404完成对象库和/或动作库的创建之后,触发提取模块403。
查找模块405,适于根据至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码。
若查找模块405在对象库内未查找到任一测试对象匹配的对象代码,则触发第一配置模块406;若查找模块405在动作库内未查找到任一测试动作匹配的动作代码,则触发第二配置模块407。
例如,提取模块403提取得到了两个测试对象和两个测试动作,其中,两个测试对象分别为第一按钮和第一文件,两个测试动作分别为单击和删除。然后查找模块405需要在对象库内查找分别与第一按钮和第一文件相匹配的对象代码,并在动作库内查找分别与单击和删除相匹配的动作代码。
第一配置模块406,适于为测试对象配置对象代码并加入到对象库中。
如果查找模块405在对象库内查找到与第一按钮相匹配的对象代码,但没有查找到与第一文件相匹配的对象代码,则需要第一配置模块406为第一文件配置对象代码并加入到对象库中。
第二配置模块407,适于为测试动作配置动作代码并加入到动作库中。
如果查找模块405在动作库内都未查找到与单击和删除相匹配的动作代码,则需要第二配置模块407为单击和删除分别配置动作代码并加入到动作库中。
组合模块408,适于按照描述性语言中描述的执行顺序,将对象代码和动作代码组合为可执行代码。
假设描述性语言为“第一步,单击第一按钮;第二步,删除第一文件”,组合模块408可按照描述性语言中描述的执行顺序,即“第一步”与“第二步”,先将与第一按钮相匹配的对象代码和与单击相匹配的动作代码进行组合,再将与第一文件相匹配的对象代码和与删除相匹配的动作代码进行组合,得到可执行代码。
执行模块409,适于执行组合模块组合得到的可执行代码,得到执行结果。
执行模块409执行组合模块408组合得到的可执行代码,获得对应的执行结果。
分解模块410,适于按照资源类型,将执行模块409得到的执行结果进行分解。
为了能够更好地与期望结果进行对比,分解模块410可将执行结果按照资源类型进行分解,其中资源类型可包含以下类型的一种或多种:图像资源、进程资源以及文件资源。
对比分析模块411进一步适于:将分解的不同资源类型的执行结果分别与对应的资源类型的期望结果进行对比分析,得到测试结果。
例如执行结果是按照图像资源与文件资源进行分解的,对比分析模块411将图像资源部分的执行结果与图像资源部分的期望结果进行对比,将文件资源部分的执行结果与文件资源部分的期望结果进行对比,分析它们之间的差异,得到软件的测试结果,从而使用户可直接清晰地得到不同资源类型的测试结果,以便对软件进行改进及优化。
另外,本发明提供的软件自动测试装置还可以设置执行可执行代码的次数,使可执行代码自动重复执行。因为有时执行一次可执行代码并不能够完全测试出软件所存在的漏洞与缺陷,有些漏洞是在多次执行之中偶然出现的,或者有些具体的环境也要求重复执行可执行代码,因此为了应对上述情况,本发明提供的技术方案能够根据用户的需求自动重复执行可执行代码。
根据本实施例提供的软件自动测试装置,通过提取模块从描述性语言中提取至少一个测试对象和至少一个测试动作,并通过查找模块分别在对象库和动作库中查找每个测试对象所匹配的对象代码和每个测试动作所匹配的动作代码,然后通过组合模块组合得到可执行代码,对比分析模块按照资源类型对比分析执行结果与期望结果,从而得到测试结果。本发明提供的技术方案不仅使用户可直接根据描述性语言自动获取与该描述性语言相对应的可执行代码,快捷方便地完成了软件的自动测试,减少了人力成本和时间成本,降低了可执行代码的编写错误率,而且还可使用户直接清晰地得到不同资源类型的测试结果,以便对软件进行改进及优化。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了:
A1、一种软件自动测试方法,包括:
接收用于测试软件的描述性语言;
从所述描述性语言中提取至少一个测试对象和至少一个测试动作;
根据所述至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码;
按照所述描述性语言中描述的执行顺序,将所述对象代码和动作代码组合为可执行代码;
执行所述可执行代码,得到执行结果;
将所述执行结果与期望结果进行对比分析,得到测试结果。
A2、根据A1所述的方法,其中,在所述接收用于测试软件的描述性语言之后,所述方法还包括:判断所述对象库和所述动作库是否存在;
若所述对象库和所述动作库均存在,则从所述描述性语言中提取至少一个测试对象和至少一个测试动作;
若所述对象库和/或所述动作库不存在,则创建所述对象库和/或所述动作库。
A3、根据A2所述的方法,其中,所述方法还包括:
若在所述对象库内未查找到任一测试对象匹配的对象代码,为该测试对象配置对象代码并加入到所述对象库中;
若在所述动作库内未查找到任一测试动作匹配的动作代码,为该测试动作配置动作代码并加入到所述动作库中。
A4、根据A1-A3任一项所述的方法,其中,在所述得到执行结果之后,所述方法还包括:按照资源类型,将所述执行结果进行分解;
所述将执行结果与期望结果进行对比分析,得到测试结果进一步为:将分解的不同资源类型的执行结果分别与对应的资源类型的期望结果进行对比分析,得到测试结果。
A5、根据A4所述的方法,其中,所述资源类型包含以下类型的一种或多种:图像资源、进程资源以及文件资源。
A6、根据A1-A5任一项所述的方法,其中,所述测试对象包括以下对象中的一个或多个:文件、进程、窗口、注册表以及服务。
A7、根据A6所述的方法,其中,所述窗口包括以下窗口中的一个或多个:按钮、图标、超级链接以及输入框。
A8、根据A1-A7任一项所述的方法,其中,所述测试动作包括以下动作中的一个或多个:新建、删除、写、移动、修改、关闭、传递、拖动、双击、单击、右键双击、右键单击、右键拖动、输入、增加、启动以及暂停。
A9、根据A1-A8任一项所述的方法,其中,所述对象库内存储有测试对象关键字与对象代码的映射关系,所述动作库内存储有测试动作关键字与动作代码的映射关系。
B10、一种软件自动测试装置,包括:
接收模块,适于接收用于测试软件的描述性语言;
提取模块,适于从所述描述性语言中提取至少一个测试对象和至少一个测试动作;
查找模块,适于根据所述至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码;
组合模块,适于按照所述描述性语言中描述的执行顺序,将所述对象代码和动作代码组合为可执行代码;
执行模块,适于执行所述组合模块组合得到的所述可执行代码,得到执行结果;
对比分析模块,适于将所述执行结果与期望结果进行对比分析,得到测试结果。
B11、根据B10所述的装置,所述装置还包括:判断模块和创建模块;
所述判断模块,适于判断所述对象库和所述动作库是否存在;若所述判断模块判断得到所述对象库和所述动作库均存在,则触发所述提取模块;若所述判断模块判断得到所述对象库和/或所述动作库不存在,则触发所述创建模块,其中,所述创建模块适于创建所述对象库和/或所述动作库。
B12、根据B11所述的装置,所述装置还包括:第一配置模块和第二配置模块;
若所述查找模块在所述对象库内未查找到任一测试对象匹配的对象代码,则触发第一配置模块;若所述查找模块在所述动作库内未查找到任一测试动作匹配的动作代码,则触发第二配置模块;
其中,所述第一配置模块,适于为测试对象配置对象代码并加入到所述对象库中;所述第二配置模块,适于为测试动作配置动作代码并加入到所述动作库中。
B13、根据B10-B12任一项所述的装置,所述装置还包括:分解模块,适于按照资源类型,将所述执行模块得到的所述执行结果进行分解;
所述对比分析模块进一步适于:将分解的不同资源类型的执行结果分别与对应的资源类型的期望结果进行对比分析,得到测试结果。
B14、根据B13所述的装置,其中,所述资源类型包含以下类型的一种或多种:图像资源、进程资源以及文件资源。
B15、根据B10-B14任一项所述的装置,其中,所述测试对象包括以下对象中的一个或多个:文件、进程、窗口、注册表以及服务。
B16、根据B15所述的装置,其中,所述窗口包括以下窗口中的一个或多个:按钮、图标、超级链接以及输入框。
B17、根据B10-B16任一项所述的装置,其中,所述测试动作包括以下动作中的一个或多个:新建、删除、写、移动、修改、关闭、传递、拖动、双击、单击、右键双击、右键单击、右键拖动、输入、增加、启动以及暂停。
B18、根据B10-B17任一项所述的装置,其中,所述对象库内存储有测试对象关键字与对象代码的映射关系,所述动作库内存储有测试动作关键字与动作代码的映射关系。

Claims (16)

1.一种软件自动测试方法,包括:
接收用于测试软件的描述性语言;
从所述描述性语言中提取至少一个测试对象和至少一个测试动作;
根据所述至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码;其中,所述对象库内存储有测试对象关键字与对象代码的映射关系,所述动作库内存储有测试动作关键字与动作代码的映射关系;
按照所述描述性语言中描述的执行顺序,将所述对象代码和动作代码组合为可执行代码;
执行所述可执行代码,得到执行结果;
将所述执行结果与期望结果进行对比分析,得到测试结果。
2.根据权利要求1所述的方法,其中,在所述接收用于测试软件的描述性语言之后,所述方法还包括:判断所述对象库和所述动作库是否存在;
若所述对象库和所述动作库均存在,则从所述描述性语言中提取至少一个测试对象和至少一个测试动作;
若所述对象库和/或所述动作库不存在,则创建所述对象库和/或所述动作库。
3.根据权利要求2所述的方法,其中,所述方法还包括:
若在所述对象库内未查找到任一测试对象匹配的对象代码,为该测试对象配置对象代码并加入到所述对象库中;
若在所述动作库内未查找到任一测试动作匹配的动作代码,为该测试动作配置动作代码并加入到所述动作库中。
4.根据权利要求1所述的方法,其中,在所述得到执行结果之后,所述方法还包括:按照资源类型,将所述执行结果进行分解;
所述将执行结果与期望结果进行对比分析,得到测试结果进一步为:将分解的不同资源类型的执行结果分别与对应的资源类型的期望结果进行对比分析,得到测试结果。
5.根据权利要求4所述的方法,其中,所述资源类型包含以下类型的一种或多种:图像资源、进程资源以及文件资源。
6.根据权利要求1-5任一项所述的方法,其中,所述测试对象包括以下对象中的一个或多个:文件、进程、窗口、注册表以及服务。
7.根据权利要求6所述的方法,其中,所述窗口包括以下窗口中的一个或多个:按钮、图标、超级链接以及输入框。
8.根据权利要求1-5任一项所述的方法,其中,所述测试动作包括以下动作中的一个或多个:新建、删除、写、移动、修改、关闭、传递、拖动、双击、单击、右键双击、右键单击、右键拖动、输入、增加、启动以及暂停。
9.一种软件自动测试装置,包括:
接收模块,适于接收用于测试软件的描述性语言;
提取模块,适于从所述描述性语言中提取至少一个测试对象和至少一个测试动作;
查找模块,适于根据所述至少一个测试对象和至少一个测试动作,在对象库内查找与每个测试对象匹配的对象代码,在动作库内查找与每个测试动作匹配的动作代码;其中,所述对象库内存储有测试对象关键字与对象代码的映射关系,所述动作库内存储有测试动作关键字与动作代码的映射关系;
组合模块,适于按照所述描述性语言中描述的执行顺序,将所述对象代码和动作代码组合为可执行代码;
执行模块,适于执行所述组合模块组合得到的所述可执行代码,得到执行结果;
对比分析模块,适于将所述执行结果与期望结果进行对比分析,得到测试结果。
10.根据权利要求9所述的装置,所述装置还包括:判断模块和创建模块;
所述判断模块,适于判断所述对象库和所述动作库是否存在;若所述判断模块判断得到所述对象库和所述动作库均存在,则触发所述提取模块;若所述判断模块判断得到所述对象库和/或所述动作库不存在,则触发所述创建模块,其中,所述创建模块适于创建所述对象库和/或所述动作库。
11.根据权利要求10所述的装置,所述装置还包括:第一配置模块和第二配置模块;
若所述查找模块在所述对象库内未查找到任一测试对象匹配的对象代码,则触发第一配置模块;若所述查找模块在所述动作库内未查找到任一测试动作匹配的动作代码,则触发第二配置模块;
其中,所述第一配置模块,适于为测试对象配置对象代码并加入到所述对象库中;所述第二配置模块,适于为测试动作配置动作代码并加入到所述动作库中。
12.根据权利要求9所述的装置,所述装置还包括:分解模块,适于按照资源类型,将所述执行模块得到的所述执行结果进行分解;
所述对比分析模块进一步适于:将分解的不同资源类型的执行结果分别与对应的资源类型的期望结果进行对比分析,得到测试结果。
13.根据权利要求12所述的装置,其中,所述资源类型包含以下类型的一种或多种:图像资源、进程资源以及文件资源。
14.根据权利要求9-13任一项所述的装置,其中,所述测试对象包括以下对象中的一个或多个:文件、进程、窗口、注册表以及服务。
15.根据权利要求14所述的装置,其中,所述窗口包括以下窗口中的一个或多个:按钮、图标、超级链接以及输入框。
16.根据权利要求9-13任一项所述的装置,其中,所述测试动作包括以下动作中的一个或多个:新建、删除、写、移动、修改、关闭、传递、拖动、双击、单击、右键双击、右键单击、右键拖动、输入、增加、启动以及暂停。
CN201510375347.9A 2015-06-30 2015-06-30 软件自动测试方法及装置 Active CN104932980B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510375347.9A CN104932980B (zh) 2015-06-30 2015-06-30 软件自动测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510375347.9A CN104932980B (zh) 2015-06-30 2015-06-30 软件自动测试方法及装置

Publications (2)

Publication Number Publication Date
CN104932980A CN104932980A (zh) 2015-09-23
CN104932980B true CN104932980B (zh) 2018-10-23

Family

ID=54120152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510375347.9A Active CN104932980B (zh) 2015-06-30 2015-06-30 软件自动测试方法及装置

Country Status (1)

Country Link
CN (1) CN104932980B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107608874A (zh) * 2016-07-12 2018-01-19 博彦科技股份有限公司 测试方法和装置
CN106649110B (zh) * 2016-12-15 2023-09-15 中标软件有限公司 软件测试方法及系统
CN108268368A (zh) * 2016-12-30 2018-07-10 中兴通讯股份有限公司 一种生成测试用例脚本的方法和装置
CN106598874A (zh) * 2017-02-08 2017-04-26 郑州云海信息技术有限公司 一种软件自动化测试方法及装置
CN108255702A (zh) * 2017-09-21 2018-07-06 平安科技(深圳)有限公司 一种测试用例创建方法、装置、设备及存储介质
CN107861879A (zh) * 2017-11-28 2018-03-30 成都视达科信息技术有限公司 一种实现软件自动化测试的方法和系统
CN109460360B (zh) * 2018-10-29 2021-10-15 北京云测信息技术有限公司 一种增强ios自动化测试输入稳定性和兼容性的方法
CN109766260A (zh) * 2018-12-11 2019-05-17 平安科技(深圳)有限公司 配置测试动作的方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102135938A (zh) * 2011-03-21 2011-07-27 中国工商银行股份有限公司 一种软件产品测试方法及系统
CN103631719A (zh) * 2013-12-12 2014-03-12 用友软件股份有限公司 一种Web自动化测试方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101939966B1 (ko) * 2010-12-14 2019-01-18 에이비비 슈바이쯔 아게 배터리 오브젝트의 자동 점검, 확인 및 후처리

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102135938A (zh) * 2011-03-21 2011-07-27 中国工商银行股份有限公司 一种软件产品测试方法及系统
CN103631719A (zh) * 2013-12-12 2014-03-12 用友软件股份有限公司 一种Web自动化测试方法和装置

Also Published As

Publication number Publication date
CN104932980A (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
CN104932980B (zh) 软件自动测试方法及装置
US10540350B2 (en) Source code search engine
Nguyen et al. Graph-based mining of in-the-wild, fine-grained, semantic code change patterns
Yang et al. A grey-box approach for automated GUI-model generation of mobile applications
US10235275B2 (en) Extraction of problem diagnostic knowledge from test cases
Qin et al. Testmig: Migrating gui test cases from ios to android
US9645799B2 (en) Method and system for model driven development
CN105431825B (zh) 用于计算过程间支配者的系统和/或方法
US9921946B2 (en) Method and system to display and browse program trace using source code decoration
CN105389262B (zh) 一种针对界面测试生成测试建议的方法和装置
US9798650B1 (en) Application testing system and method
WO2019032180A1 (en) ANALYSIS OF DEPENDENCE BETWEEN APPLICATIONS TO IMPROVE THE DETECTION OF THREATS IN A COMPUTER SYSTEM
Stolee et al. Identification, impact, and refactoring of smells in pipe-like web mashups
Nguyen et al. Mining interprocedural, data-oriented usage patterns in JavaScript web applications
D’Souza et al. Collective intelligence for smarter API recommendations in python
WO2015039793A1 (en) Derivation of generalized test cases
CN109063483A (zh) 一种基于路径追踪的漏洞检测方法及系统
Shomrat et al. Detecting refactored clones
KR101767481B1 (ko) 프로그램 분석 장치 및 프로그램 분석 제공 방법
Zhang et al. Reinforced ui instruction grounding: Towards a generic ui task automation api
Srikant Vulcan: Classifying vulnerabilities in solidity smart contracts using dependency-based deep program representations
US10846198B2 (en) Automatic navigation from log statement to code
Hammad et al. Identifying designers and their design knowledge
Kasegn et al. Spatial locality based identifier name recommendation
Ashraf et al. Mining cross-task artifact dependencies from developer interactions

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220726

Address after: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, Binhai New Area, Tianjin

Patentee after: 3600 Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230713

Address after: 1765, floor 17, floor 15, building 3, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: Beijing Hongxiang Technical Service Co.,Ltd.

Address before: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, Binhai New Area, Tianjin

Patentee before: 3600 Technology Group Co.,Ltd.