CN106354638A - 基于词法分析的自动测试方法及装置 - Google Patents
基于词法分析的自动测试方法及装置 Download PDFInfo
- Publication number
- CN106354638A CN106354638A CN201610755786.7A CN201610755786A CN106354638A CN 106354638 A CN106354638 A CN 106354638A CN 201610755786 A CN201610755786 A CN 201610755786A CN 106354638 A CN106354638 A CN 106354638A
- Authority
- CN
- China
- Prior art keywords
- test
- tested
- case
- code
- project
- 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
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于词法分析的自动测试方法,其中所述基于词法分析的自动化测试方法包括以下步骤:获取待测试项目的源代码;对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表;根据所述测试用例列表筛选待运行的目标测试用例;根据所述目标测试用例修改预设的测试代码,以使所述测试代码只能让目标测试用例可以被执行。本发明还公开了一种基于词法分析的自动测试装置。本发明可以在程序测试时筛选测试用例列表,节约测试时间。
Description
技术领域
本发明涉及软件测试领域,尤其涉及基于词法分析的自动测试方法及装置。
背景技术
目前,软件测试一般使用自动化测试框架帮助测试人员进行测试,但是使用这些测试框架时,每次必须执行被测项目中的所有的测试用例,而测试人员不能筛选所述测试用例列表,以进行单独执行其所需要的测试用例,导致花费大量时间在执行不必要的测试用例上。
发明内容
本发明的主要目的在于提供一种基于词法分析的自动测试方法及装置,旨在使测试人员可以筛选测试用例列表,节约时间。
为实现上述目的,本发明提出一种基于词法分析的自动测试方法,所述基于词法分析的自动测试方法包括以下步骤:
获取待测试项目的源代码;
对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表;
根据所述测试用例列表筛选待运行的目标测试用例;
根据所述目标测试用例修改预设的测试代码,以使所述测试代码只能让目标测试用例可以被执行;
运行修改后的测试代码,并生成测试报告。
优选地,所述对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表包括:
对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例以及测试用例之间的依赖关系;
根据所述依赖关系建立测试用例列表,以供用户进行选择待运行的目标测试用例。
优选地,所述获取待测试项目的源代码包括:
调用jenkins分配所述待测试项目的测试任务至slave,并通过所述slave基于所述测试任务下载所述待测试项目的源代码。
优选地,所述调用jenkins分配所述被测试项目的测试任务至slave包括:
调用jenkins统计参与本次测试的slave的数量,并根据所述slave的数量通过一致性的hash算法分配测试任务至多个所述slave;
调用slave根据所分配到的测试任务下载所述待测试项目的源代码。
优选地,所述预设的测试代码为所述源代码。
本发明还提出一种基于词法分析的自动测试装置,所述基于词法分析的自动测试装置包括:
获取模块,用于获取待测试项目的源代码;
分析代码模块,用于对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表;
筛选模块,用于根据所述测试用例列表筛选待运行的目标测试用例;
修改模块,用于根据所述目标测试用例修改预设的测试代码,以使所述测试代码只能让目标测试用例可以被执行;
运行模块,用于运行修改后的测试代码,并生成测试报告。
优选地,所述分析代码模块包括:
分析单元,用于对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例以及测试用例之间的依赖关系;
整理列表单元,用于根据所述依赖关系建立测试用例列表,以供用户进行选择待运行的目标测试用例。
优选地,其特征在于,所述获取模块具体用于调用jenkins分配所述待测试项目的测试任务至slave,并通过所述slave基于所述测试任务下载所述待测试项目的源代码。
优选地,所述获取模块包括:
分配单元,用于调用jenkins统计参与本次测试的slave的数量,并根据所述slave的数量通过一致性的hash算法分配测试任务至多个所述slave;
下载单元,用于调用slave根据所分配到的测试任务下载所述待测试项目的源代码。
优选地,所述预设的测试代码为所述源代码。
本发明技术方案中所述基于词法分析的自动化测试方法包括:获取待测试项目的源代码;对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表;根据所述测试用例列表筛选待运行的目标测试用例;根据所述目标测试用例修改预设的测试代码,以使所述测试代码只能让目标测试用例可以被执行;运行修改后的测试代码,并生成测试报告。使得在每次测试开始时,测试人员可以根据当次测试的需要,筛选所述测试用例列表,确保只执行需要的测试用例,节约测试时间。
附图说明
图1为本发明基于词法分析的自动测试方法第一实施例的流程示意图;
图2为本发明基于词法分析的自动测试方法第二实施例中对所述源代码的内容进行词法分析并形成测试用例列表的细化流程示意图;
图3为本发明基于词法分析的自动测试方法第四实施例中调用jenkins分配所述被测试项目的测试任务至slave的细化流程示意图;
图4为本发明基于词法分析的自动测试装置第一实施例的功能模块示意图;
图5为本发明基于词法分析的自动测试装置第二实施例中分析代码模块的细化功能模块示意图;
图6为本发明基于词法分析的自动测试装置第四实施例中分配下载模块的细化功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参照图1,本发明基于词法分析的自动测试方法的第一实施例中:
由于在编译之前对所述被测试项目源代码进行了词法分析,避免了由于编译所导致的长时间等待,加快了测试过程,提高了测试效率;由词法分析的结果,把所述被测试项目里所有的测试用例都查找出来,并整理成测试用例列表,方便测试人员进行查看和筛选,进一步提高了测试效率;执行筛选后的测试用例列表,使得测试人员可以在很方便的控制被测试项目的测试用例精细度,提高了测试效率;同时使得在每次测试开始时,测试人员可以根据本次测试的需要,筛选所述测试用例列表,确保只执行需要的测试用例,节约了测试时间。具体地包括:
步骤S10,获取待测试项目的源代码;
步骤S20,对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表;
在Java项目中测试一般使用自动化测试框架帮助测试,例如JUnit和TestNG测试框架,但是不管哪种测试框架都会由特定的代码或注解来标明测试用例,有的测试框架还有专门的配置文件来登记所述测试用例,所以可以通过加载源代码中的文本,通过词法分析找到上述测试框架关键词,通过Java语法分析找到所述被测试项目中的测试用例,由于是词法分析不需要编译所述源代码,省去了海量源代码编译的时间,具体地,不经过类加载器加载class文件中的内容至内存,解析速度快至少30-60倍,加快测试过程。
所解析出来的信息可以得到:测试用例的类,测试用例类的成员变量,测试用例类的方法等,可以获取到一切和测试用例有关的信息,可以根据实际需求来调整词法分析的代码,以获取想要的信息。接着使用得到的信息整理出测试用例列表,所述测试用例列表含有的信息,根据实际测试的需要进行定制,编制好所述测试用例列表,并发送给测试人员,自动化处理,不用人工操作,加快测试过程。
步骤S30,根据所述测试用例列表筛选待运行的目标测试用例;
测试人员根据所述测试用例列表还有实际测试需要,挑选出本次所要测试的所有用到的测试用例。测试人员不用查看海量的源代码,只需查看表格就能方便的查看所有的测试用例,节约测试时间,提高测试效率。
步骤S40,根据所述目标测试用例修改预设的测试代码,以使所述测试代码只能让目标测试用例可以被执行;
步骤S50,运行修改后的测试代码,并生成测试报告。
根据修改预设的测试代码执行测试后,收集所述自动化测试框架返回的测试结果,按照需要,选取合适的信息,组成动态网页页面返回给测试人员,提高了人际交互性,方便测试人员查看结果,避免错误,提高测试质量。
本实施例中,根据测试需要从可信任的地方收集被测试项目的源代码,提高测试的准确度。对所述被测试项目的源代码进行加载,获取其中的文本,找到所使用测试框架的关键字,通过关键字找到所述测试用例,所述关键字包括:测试框架原有的关键字、事先约好的命名规则,具体地可用在包,类,方法和成员变量等命名上,名称后加“_4testCaseList”,凡是在读取源代码文本时,通过检测到文件名以“_4testCaseList”后缀结尾的文件,即为测试用文件,通过分析所述文件中的文本,先通过关键字找到类名,具体的,找到“public class XXXXX_4testCaseList”后,发现关键字“public class”,确认这是一个类,后边的“XXXXX_4testCaseList”一定是类名,接着再判断类名“XXXXX_4testCaseList”的后缀“_4testCaseList”是预先定好的关键字段,结合所在包的名称及所在包的路径,则判断出“XXXXX_4testCaseList”是一个测试用例涉及到的类,再用类似的方法可以找到其中测试用例用到的成员变量,和测试用例方法,如此再配合测试框架的关键字,即可找出所有的测试用例;使用同样的方法找到类的作者,编写时间,还有注释中关于类的说明,测试方法的说明。
按照类名,类的说明,测试方法名称,测试方法说明,这些为表头,然后以每个测试用例类里的具体信息,制作成测试用例列表,以动态网页的形式发送给测试人员,自动化运行方便测试人员查看,使得测试人员不用再查看大量代码即可获得全部的实施列表。
测试人员根据本次测试任务的目标,通过查看所述测试用例列表的动态网页上的测试用例的信息,具体的通过测试用例类的说明信息来筛选,筛选完成后,测试人员通过动态网页的形式提交一份目标测试用例列表,然后根据所述目标测试用例列表修改预设的测试代码,整个操作自动化完成,提高测试效率。然后执行所述被测试项目的测试,因为已经对源代码进行了处理,所以执行的时候只会执行目标测试用例列表里的测试用例,减少了测试用例的数量,节约了测试时间,提高了测试效率。测试结束之后,根据所述测试结果,编制成测试报告,以网页的形成发送给测试人员,方便查看结果。然后把修改的被测项目的源代码恢复到初始状态,方便下一次测试。
请参照图2,基于本发明基于词法分析的自动测试方法第一实施例,在本发明基于词法分析的自动测试方法第二实施例中,所述对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表包括:
步骤S21,对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例以及测试用例之间的依赖关系;
步骤S22,根据所述依赖关系建立测试用例列表,以供用户进行选择待运行的目标测试用例。
在本实施例中分析出所有测试用例源代码中的成员变量,方法等,如果成员变量或者测试用例方法中的传入参数为另一个实施用例的对象,则可以从“import”关键字找出该所依赖测试用例类的源文件的位置,从而找到所述依赖测试用例的类的源代码文件,进一步分析其依赖,从而找出整个依赖链中的所有测试用例,并把这种依赖关系以结构树的形式,使用网页页面可视化整理给用户,并在所在展示页面代码中按照依赖关系,使得用户要筛选一个测试用例时,使得测试人员默认必须选取其所有的测试用的依赖测试用例用例。
需要说明的是,在另一些实施例中,所述测试用例在编写的时候,约定好写入了一些关键代码给每个依赖测试用例,创造一个测试依赖用例的代理对象,所述代理对象可以最大限度的模拟真实测试,此信息会在测试用例列表中显示,让用户测试的时候可以选择使用代理对象进行测试,或是测试时使用真实的依赖测试用例。
基于本发明词法分析的自动测试方法第二实施例,在本发明基于词法分析的自动测试方法第三实施例中,所述获取待测试项目的源代码包括:
调用jenkins分配所述待测试项目的测试任务至slave上,并通过所述slave基于所述测试任务下载所述待测试项目的源代码;
对于大型项目,在一台主机上进行测试,编译,运行会变得异常的慢。本实施例中的,引入jenkins平台。使用jenkins的master-slave框架可以使用平台中的其他主机的硬件资源,分布式运行测试任务,加快测试进度。
同时大型项目中程序设计人员众多,由于进度或者业务问题的变化,同一个主题的程序代码有不同的版本。在测试时不但要找对程序代码,还要保证所找到的代码的版本是正确的,使用版本不对的代码进行测试,会使测试成为一个黑洞,使测试人员浪费大量时间和精力寻找测试中的问题。为了提高效率,本实施例中的所有测试项目的源代码来自代码版本控制***,代码的的版本正确与否,由上传代码的人员全权负责,减少测试人员的负担,可以让测试人员专注于测试本身。
本实施例中,通过jenkins分配所述被测试项目的测试任务至slave上,利用slave上的硬件资源,协同处理测试任务,加快测试流程。所述slave中设有配置文件,确保了所述slave在分配测试任务后,所述slave使用特定的账号和密码,从git代码版本控制***的代码仓库加载所述被测项目的源代码文件到本地。需要说明的是有些实施例使用的代码版本控制***是svn软件,而在另一些实施例中所述代码版本控制***是人为严格执行的规则,所述代码放在一个固定的位置,由人员按照严格的规则去替换所述位置中的文件为最新版本。
请参照图3,基于本发明词法分析的自动测试方法第三实施例,在本发明基于词法分析的自动测试方法第四实施例中,所述调用jenkins分配所述被测试项目的测试任务至slave上包括:
步骤S11,调用jenkins统计参与本次测试的slave的数量,并根据所述slave的数量通过一致性的hash算法分配测试任务至多个所述slave;
步骤S12,调用slave根据所分配到的测试任务下载所述待测试项目的源代码。
本实施例中,先通过步骤S11,统计有出slave的数量,然后根据slave的数量通过一致性的hash算法分配测试任务至多个所述slave,所述一致性的hash算法分配,确保了所有slave分配任务的均衡性,不会造成一个slave被分配过多任务,导致其他slave运行结束后,还要等待任务多的slave运行,保证了测试效率,分配结束后,所述slave根据配置文件触发执行下载任务,从git代码仓库下载所述待测试项目的源代码。
基于本发明词法分析的自动测试装置第一实施例,在本发明基于词法分析的自动测试装置第五实施例中,上述预设的测试代码为所述源代码。
在本实施例中,把不运行的被测试用例代的源码用约定好的注释无效掉,例如使用“/**自动化平台所添加的临时注释......*/”,自动化完成提高测试速度和准确度,同时因为使用约定好的的注释,方便测试完成后再修改所述被测项目的源代码回到测试的初始阶段;在有些实施例中使用的是TestNG框架,通过找到所述测试用例配置文件“testng.xml”,并找到了所述没有被选中的测试用例,把所要剔除的测试用例从配置文件中注释掉,所述注释使用的有预设的字段,方便测试完成后再修改所述被测项目的源代码回到测试的初始阶段,整个操作自动化完成操作,提高测试效率。而在另一些实施例中,可以在编写测试用例的代码的时候约定好使用特定的代码,注释和注解,可以根据筛选后的测试用例列表使用面向切面编程的技术,修改预设的测试代码来选取执行需要执行的测试用例。
请参照图4,本发明基于词法分析的自动测试装置的第一实施例中:
由于在编译之前对所述被测试项目源代码进行了词法分析,避免了由于编译所导致的长时间等待,加快了测试过程,提高了测试效率;由词法分析的结果,把所述被测试项目里所有的测试用例都查找出来,并整理成测试用例列表,方便测试人员进行查看和筛选,进一步提高了测试效率;执行筛选后的测试用例列表,使得测试人员可以在很方便的控制被测试项目的测试用例精细度,提高了测试效率;同时使得在每次测试开始时,测试人员可以根据本次测试的需要,筛选所述测试用例列表,确保只执行需要的测试用例,节约了测试时间。具体地,包括:
获取模块10,用于获取待测试项目的源代码;
大型项目中,程序设计人员众多,由于进度或者业务问题的变化,同一个程序代码,在测试时,不但要找对程序代码,还要保证所找到的代码的版本是正确的,使用版本不对的代码,测试无法通过,且设计人员过多的时候,根本不知道测试为什么不能通过,使测试成为一个黑洞,浪费大量时间和精力,为了提高效率,本实施例中的所有测试项目的源代码来自代码版本控制***,代码的的版本正确与否,由上传代码的人员全权负责,减少测试人员的负担,可以专注于测试本身。
分析代码模块20,用于对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表;
在Java项目中测试一般使用自动化测试框架帮助测试,例如JUnit和TestNG测试框架,但是不管哪种测试框架都会由特定的代码或注解来标明测试用例,有的测试框架还有专门的配置文件来登记所述测试用例,所以可以通过加载源代码中的文本,通过词法分析找到上述测试框架关键词,通过Java语法分析找到所述被测试项目中的测试用例,由于是词法分析不需要编译所述源代码,省去了海量源代码编译的时间,具体地,不经过类加载器加载class文件中的内容至内存,解析速度快至少30-60倍,加快测试过程。
所解析出来的信息可以得到:测试用例的类,测试用例类的成员变量,测试用例类的方法等,可以获取到一切和测试用例有关的信息,可以根据实际需求来调整词法分析的代码,以获取想要的信息。接着使用得到的信息整理出测试用例列表,所述测试用例列表含有的信息,根据实际测试的需要进行定制,编制好所述测试用例列表,并发送给测试人员,自动化处理,不用人工操作,加快测试过程。
筛选模块30,用于根据所述测试用例列表筛选待运行的目标测试用例;
测试人员根据所述测试用例列表还有实际测试需要,挑选出本次所要测试的所有用到的测试用例。测试人员不用查看海量的源代码,只需要点击鼠标就能方便的查看所有的测试用例,节约测试时间,提高测试效率。
修改模块40,用于根据所述目标测试用例修改预设的测试代码,以使所述测试代码只能让目标测试用例可以被执行;
运行模块50,用于运行修改后的测试代码,并生成测试报告。
根据修改后的预设的测试代码执行测试后,收集所述自动化测试框架返回的测试结果,按照需要,选取合适的信息,组成动态网页页面返回给测试人员,提高了人际交互性,确保人工操作方便,避免错误,提高测试质量。
本实施例中,所述获取模块10根据测试需要从可信任的地方收集被测试项目的源代码,提高测试的准确度。
分析代码模块20通过对所述被测试项目的源代码进行加载,获取其中的文本,找到所使用测试框架的关键字,通过关键字找到所述测试用例,所述关键字包括:测试框架原有的关键字、事先约好的命名规则,具体地可用在包,类,方法和成员变量等命名上,名称后加“_4testCaseList”,凡是在读取源代码文本时,通过检测到文件名以“_4testCaseList”后缀结尾的文件,即为测试用文件,通过分析所述文件中的文本,先通过关键字找到类名,具体的,找到“public class XXXXX_4testCaseList”后,发现关键字“public class”,确认这是一个类,后边的“XXXXX_4testCaseList”一定是类名,接着再判断类名“XXXXX_4testCaseList”的后缀“_4testCaseList”是预先定好的关键字段,则判断出“XXXXX_4testCaseList”是一个测试用例涉及到的类,再用类似的方法可以找到其中测试用例用到的成员变量,和测试用例方法,如此再配合测试框架的关键字,即可找出所有的测试用例;使用同样的方法找到类的作者,编写时间,还有注释中关于类的说明,测试方法的说明。
按照类名,类的说明,测试方法名称,测试方法说明,这些为表头,然后以每个测试用例类里的具体信息,制作成测试用例列表,以动态网页的形式发送给测试人员,测试人员根据本次测试的具体内容,和返回测试用例列表的信息,决定测试那些测试用例,然后提交筛选完的列表,自动化运行方便测试人员查看,使得测试人员不用再查看大量代码即可获得全部的实施列表。
测试人员根据本次测试任务的目标,通过筛选模块30查看所述测试用例列表的动态网页上的测试用例的信息,具体的通过测试用例类的说明信息来筛选,筛选完成后,测试人员通过动态网页的形式提交一份目标测试用例列表,然后根据所述目标测试用例列表通过所述修改模块40修改预设的测试代码,整个操作自动化完成操作,提高测试效率。然后启动运行模块50运行所述被测试项目的测试,因为已经对源代码进行了处理,所以执行的时候只会执行目标测试用例列表里的测试用例,减少了测试测试用例的数量,节约了测试时间,提高了测试效率。测试结束之后,根据所述测试结果,编制成测试报告,以网页的形成发送给测试人员,方便查看结果。然后把被测项目的源代码恢复到初始状态,方便下一次测试。
请参照图5,基于本发明基于词法分析的自动测试装置第一实施例,在本发明基于词法分析的自动测试装置第二实施例中,所述分析代码模块20包括:
分析单元21,用于对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例以及测试用例之间的依赖关系;
整理列表单元22,用于根据所述依赖关系建立测试用例列表,以供用户进行选择待运行的目标测试用例。
在本实施例中分析单元21分析出了所有测试用例源代码中的成员变量,方法等,如果成员变量或者测试用例方法中的传入参数为另一个实施用例的对象,则可以从“import”关键字找出该所依赖测试用例类的源文件的位置,从而找到所述依赖测试用例的类的源代码文件,进一步分析其依赖,从而找出整个依赖链中的所有测试用例,整理列表单元22把这种依赖关系以结构树的形式,使用网页页面可视化整理给用户,并在所在展示页面代码中按照依赖关系,使得用户要筛选一个测试用例时,使得测试人员默认必须选取其所有的测试用的依赖测试用例用例。
需要说明的是,在另一些实施例中,所述测试用例的在编写的时候,约定好了,写入了一些关键代码给每个依赖测试用例,创造一个测试依赖用例的代理对象,所述代理对象可以最大限度的模拟真实测试,整理列表单元22会把此信息会在测试用例列表中显示,让用户测试的时候可以选择使用代理对象进行测试,或是测试时使用真实的依赖测试用例。
基于本发明词法分析的自动测试装置第三实施例,在本发明基于词法分析的自动测试装置第二实施例中,所述获取模块10具体用于调用jenkins分配所述待测试项目的测试任务至slave,并通过所述slave基于所述测试任务下载所述待测试项目的源代码。
对于大型项目,在一台主机上进行测试,编译,运行会变得异常的慢。本实施例中的,引入jenkins平台。使用jenkins的master-slave框架可以使用平台中的其他主机的硬件资源,分布式运行测试任务,加快测试进度。
本实施例中,获取模块10通过jenkins分配所述被测试项目的测试任务至slave上,利用slave上的硬件资源,协同处理测试任务,加快测试流程。所述slave中设有配置文件,确保了所述slave在分配测试任务后,所述slave使用特定的账号和密码,从git代码版本控制***的代码仓库加载所述被测项目的源代码文件到本地。需要说明的是有些实施例使用的代码版本控制***是svn软件,获取模块10从代码仓库下载代码,而在另一些实施例中所述代码版本控制***是人为严格执行的规则,所述代码放在一个固定的位置,由人员按照严格的规则去替换所述位置中的文件为最新版本,获取模块10则从指定路径下载代码。
请参照图6,基于本发明词法分析的自动测试装置第三实施例,在本发明基于词法分析的自动测试装置第四实施例中,所述获取模块10包括:
分配单元11,用于调用jenkins统计参与本次测试的slave的数量,并根据所述slave的数量通过一致性的hash算法分配测试任务至多个所述slave。
下载单元12,调用slave根据所分配到的测试任务下载所述待测试项目的源代码。
本实施例中,启动分配单元11,统计有出slave的数量,然后根据slave的数量通过一致性的hash算法分配测试任务至多个所述slave,所述一致性的hash算法分配,确保了所有slave分配任务的均衡性,不会造成一个slave被分配过多任务,导致其他slave运行结束后,还要等待任务多的slave运行,保证了测试效率还要等待任务多的slave运行,保证了测试效率。分配结束后,所述slave根据配置文件触发启动所述下载单元12,所述下载单元12从git代码仓库下载所述待测试项目的源代码。
基于本发明词法分析的自动测试装置第一实施例,在本发明基于词法分析的自动测试装置第五实施例中,上述预设的测试代码为所述源代码。
在本实施例中,修改模块把不运行的被测试用例的源代码用约定好的注释无效掉,例如使用“/**自动化平台所添加的临时注释......*/”,自动化完成提高测试速度和准确度,同时因为使用约定好的的注释,方便测试完成后再修改所述被测项目的源代码回到测试的初始阶段;在有些实施例中使用的是TestNG框架,修改单元40通过找到所述测试用例配置文件“testng.xml”,并找到了所述没有被选中的测试用例,把所要剔除的测试用例从配置文件中注释掉,所述注释使用的有预设的字段,方便测试完成后再修改所述被测项目的源代码回到测试的初始阶段,整个操作自动化完成操作,提高测试效率。而在另一些实施例中,可以在编写测试用例的代码的时候约定好使用特定的代码,注释和注解,修改单元40可以根据筛选后的测试用例列表使用面向切面编程的技术,修改预设的测试代码来选取执行需要执行的测试用例。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于词法分析的自动测试方法,其特征在于,包括以下步骤:
获取待测试项目的源代码;
对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表;
根据所述测试用例列表筛选待运行的目标测试用例;
根据所述目标测试用例修改预设的测试代码,以使所述测试代码只能让目标测试用例可以被执行;
运行修改后的测试代码,并生成测试报告。
2.如权利要求1所述的基于词法分析的自动测试方法,其特征在于,所述对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表包括:
对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例以及测试用例之间的依赖关系;
根据所述依赖关系建立测试用例列表,以供用户进行选择待运行的目标测试用例。
3.如权利要求1至2任一项所述的基于词法分析的自动测试方法,其特征在于,所述获取待测试项目的源代码包括:
调用jenkins分配所述待测试项目的测试任务至slave,并通过所述slave基于所述测试任务下载所述待测试项目的源代码。
4.如权利要求3所述的基于词法分析的自动测试方法,其特征在于,所述调用jenkins分配所述被测试项目的测试任务至slave包括:
调用jenkins统计参与本次测试的slave的数量,并根据所述slave的数量通过一致性的hash算法分配测试任务至多个所述slave;
调用slave根据所分配到的测试任务下载所述待测试项目的源代码。
5.如权利要求1所述的基于词法分析的自动测试方法,其特征在于,所述预设的测试代码为所述源代码。
6.一种基于词法分析的自动测试装置,其特征在,所述基于词法分析的自动测试装置包括:
获取模块,用于获取待测试项目的源代码;
分析代码模块,用于对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例,并形成测试用例列表;
筛选模块,用于根据所述测试用例列表筛选待运行的目标测试用例;
修改模块,用于根据所述目标测试用例修改预设的测试代码,以使所述测试代码只能让目标测试用例可以被执行;
运行模块,用于运行修改后的测试代码,并生成测试报告。
7.如权利要求6所述的基于词法分析的自动测试装置,其特征在于,所述分析代码模块包括:
分析单元,用于对所述源代码的内容进行词法分析,获得所述待测试项目的测试用例以及测试用例之间的依赖关系;
整理列表单元,用于根据所述依赖关系建立测试用例列表,以供用户进行选择待运行的目标测试用例。
8.如权利要求6至7任一项所述的基于词法分析的自动测试装置,其特征在于,所述获取模块具体用于调用jenkins分配所述待测试项目的测试任务至slave,并通过所述slave基于所述测试任务下载所述待测试项目的源代码。
9.如权利要求8所述的基于词法分析的自动测试装置,其特征在于,所述获取模块包括:
分配单元,用于调用jenkins统计参与本次测试的slave的数量,并根据所述slave的数量通过一致性的hash算法分配测试任务至多个所述slave;
下载单元,用于调用slave根据所分配到的测试任务下载所述待测试项目的源代码。
10.如权利要求6所述的基于词法分析的自动测试装置,其特征在于,所述预设的测试代码为所述源代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610755786.7A CN106354638A (zh) | 2016-08-29 | 2016-08-29 | 基于词法分析的自动测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610755786.7A CN106354638A (zh) | 2016-08-29 | 2016-08-29 | 基于词法分析的自动测试方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106354638A true CN106354638A (zh) | 2017-01-25 |
Family
ID=57857088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610755786.7A Pending CN106354638A (zh) | 2016-08-29 | 2016-08-29 | 基于词法分析的自动测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106354638A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032941A (zh) * | 2018-07-20 | 2018-12-18 | 郑州云海信息技术有限公司 | 测试用例驱动的可持续集成接口自动化测试方法及*** |
CN109857665A (zh) * | 2019-01-30 | 2019-06-07 | 北京云测信息技术有限公司 | 一种测试用例的测试执行方法及装置 |
CN110188044A (zh) * | 2019-05-30 | 2019-08-30 | 腾讯科技(深圳)有限公司 | 软件错误的处理方法、装置、存储介质以及设备 |
CN110727594A (zh) * | 2019-10-14 | 2020-01-24 | 北京智游网安科技有限公司 | 一种应用完整性保护的测试方法、智能终端及存储介质 |
CN111190824A (zh) * | 2019-12-28 | 2020-05-22 | 中国平安人寿保险股份有限公司 | 监测方法、装置、终端设备及存储介质 |
CN111488287A (zh) * | 2020-04-16 | 2020-08-04 | 南开大学 | 注入漏洞测试用例的生成方法、装置、介质及电子设备 |
CN112286784A (zh) * | 2019-07-23 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种测试用例生成方法、装置、服务器及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130019126A1 (en) * | 2011-07-15 | 2013-01-17 | Joachim Frohlich | Method and System for Test Suite Control |
CN104820640A (zh) * | 2015-05-19 | 2015-08-05 | 广州华多网络科技有限公司 | 一种网页测试方法和装置 |
CN105528297A (zh) * | 2016-01-29 | 2016-04-27 | 广州酷狗计算机科技有限公司 | 对web页面进行测试的方法及装置 |
-
2016
- 2016-08-29 CN CN201610755786.7A patent/CN106354638A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130019126A1 (en) * | 2011-07-15 | 2013-01-17 | Joachim Frohlich | Method and System for Test Suite Control |
CN104820640A (zh) * | 2015-05-19 | 2015-08-05 | 广州华多网络科技有限公司 | 一种网页测试方法和装置 |
CN105528297A (zh) * | 2016-01-29 | 2016-04-27 | 广州酷狗计算机科技有限公司 | 对web页面进行测试的方法及装置 |
Non-Patent Citations (2)
Title |
---|
MAY_蚂蚁: ""selenium-webdriver用例批量运行和测试套件使用 ------之我见"", 《HTTPS://WWW.CNBLOGS.COM/AUTOMAY/P/3568707.HTML》 * |
MICHAEL JUNTAO YUAN 等: "《Seam Framework Web开发宝典(第2版)》", 30 June 2010, 清华大学出版社 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032941A (zh) * | 2018-07-20 | 2018-12-18 | 郑州云海信息技术有限公司 | 测试用例驱动的可持续集成接口自动化测试方法及*** |
CN109857665A (zh) * | 2019-01-30 | 2019-06-07 | 北京云测信息技术有限公司 | 一种测试用例的测试执行方法及装置 |
CN109857665B (zh) * | 2019-01-30 | 2022-03-15 | 北京云测信息技术有限公司 | 一种测试用例的测试执行方法及装置 |
CN110188044A (zh) * | 2019-05-30 | 2019-08-30 | 腾讯科技(深圳)有限公司 | 软件错误的处理方法、装置、存储介质以及设备 |
CN112286784A (zh) * | 2019-07-23 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种测试用例生成方法、装置、服务器及存储介质 |
CN112286784B (zh) * | 2019-07-23 | 2024-05-10 | 腾讯科技(深圳)有限公司 | 一种测试用例生成方法、装置、服务器及存储介质 |
CN110727594A (zh) * | 2019-10-14 | 2020-01-24 | 北京智游网安科技有限公司 | 一种应用完整性保护的测试方法、智能终端及存储介质 |
CN111190824A (zh) * | 2019-12-28 | 2020-05-22 | 中国平安人寿保险股份有限公司 | 监测方法、装置、终端设备及存储介质 |
CN111190824B (zh) * | 2019-12-28 | 2024-04-26 | 中国平安人寿保险股份有限公司 | 监测方法、装置、终端设备及存储介质 |
CN111488287A (zh) * | 2020-04-16 | 2020-08-04 | 南开大学 | 注入漏洞测试用例的生成方法、装置、介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106354638A (zh) | 基于词法分析的自动测试方法及装置 | |
US9535823B2 (en) | Method and apparatus for detecting software bugs | |
CN103631720B (zh) | 测试用例的生成方法和装置 | |
US8464208B2 (en) | Capturing and utilizing specific module dependency information | |
Bowring et al. | Monitoring deployed software using software tomography | |
US7933759B2 (en) | Predicate checking for distributed systems | |
Mariani et al. | Compatibility and regression testing of COTS-component-based software | |
CN103970659B (zh) | 基于插桩技术的安卓应用软件自动化测试方法 | |
CN109426516A (zh) | 软件版本管理方法及装置 | |
US20030046029A1 (en) | Method for merging white box and black box testing | |
CA2773981C (en) | System and method of substituting parameter sets in self-contained mini-applications | |
Ferrari et al. | Automating the mutation testing of aspect-oriented Java programs | |
US20080276221A1 (en) | Method and apparatus for relations planning and validation | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
Madeiral et al. | Towards an automated approach for bug fix pattern detection | |
German et al. | A model to understand the building and running inter-dependencies of software | |
Torunski et al. | Code style analytics for the automatic setting of formatting rules in ides: A solution to the tabs vs. spaces debate | |
Ahrendt et al. | Real-time Java API specifications for high coverage test generation | |
Singh et al. | A study and review on the development of mutation testing tools for java and aspect-j programs | |
US10579761B1 (en) | Method and system for reconstructing a graph presentation of a previously executed verification test | |
KR20090099977A (ko) | 예약된 컴포넌트 컨테이너 기반 소프트웨어 개발 방법 및장치 | |
Pinheiro et al. | Mutation operators for code annotations | |
De Jonge et al. | Automated evaluation of syntax error recovery | |
Parizi et al. | Automated test generation technique for aspectual features in AspectJ | |
CN114281709A (zh) | 一种单元测试方法、***、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20171206 Address after: 510000 Guangzhou City, Guangzhou, Guangdong, Fangcun Avenue, one of the 314 self compiled Applicant after: Guangzhou Pinwei Software Co., Ltd. Address before: Liwan District Fangcun Huahai street Guangzhou city Guangdong province 510000 No. 20 self 1-5 building (only for office use) Applicant before: Guangzhou VIPSHOP Information and Technology Co., Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170125 |