CN114416547A - 基于测试用例的测试方法 - Google Patents
基于测试用例的测试方法 Download PDFInfo
- Publication number
- CN114416547A CN114416547A CN202210016728.8A CN202210016728A CN114416547A CN 114416547 A CN114416547 A CN 114416547A CN 202210016728 A CN202210016728 A CN 202210016728A CN 114416547 A CN114416547 A CN 114416547A
- Authority
- CN
- China
- Prior art keywords
- test
- case
- target
- function
- base class
- 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
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/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/3684—Test management for test design, e.g. generating new test cases
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
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种基于测试用例的测试方法。
背景技术
测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。测试用例是将软件测试的行为活动做一个科学化的组织归纳,目的是能够将软件测试的行为转化成可管理的模式;同时测试用例也是将测试具体量化的方法之一,不同类别的软件,测试用例是不同的。相关技术中,针对不同测试用例需要测试人员编写不同的测试代码,对测试人员的专利性要求较高,从而造成人员成本高,测试用例代码生成效率低的问题。
发明内容
本发明提供了一种基于测试用例的测试方法,能够提高测试用例代码的生成效率,并降低对测试人员的专业性要求。
具体的技术方案如下:
第一方面,本发明实施例提供了一种基于测试用例的测试方法,所述方法包括:
获取预先设置的与业务相关的测试基类;
根据预设用例字段和所述测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板,其中,所述函数信息包括函数名和函数输入参数,所述测试用例模板包括基于每个基类函数的函数名生成的用例名称、基于每个基类函数的函数输入参数生成的业务用例字段和所述预设用例字段,所述预设用例字段包括状态码、执行次数;
获取基于所述测试用例模板编辑得到的用例字段值,生成包括用例字段和用例字段值的测试用例,其中,每个测试用例对应一个测试用例模板;
在目标执行次数满足预设次数要求的情况下,按照测试用例所对应基类函数在所述测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,其中,所述目标执行次数为所有状态码取值为预设状态码值的测试用例的执行次数之和;
生成用于调用预设测试用例执行逻辑的调用代码,并将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码,以基于所述目标测试用例代码进行用例测试。
在一种实施方式中,根据预设用例字段和所述测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板,包括:
针对所述测试基类中待处理基类函数,将所述待处理基类函数的函数名作为所述待处理基类函数对应的用例名称,将所述待处理基类函数的函数输入参数作为所述待处理基类函数对应的业务用例字段,根据所述预设用例字段、所述待处理基类函数对应的用例名称和业务用例字段生成所述待处理基类函数对应的测试用例模板;
或者,根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件,根据所述测试基类中每个基类函数的函数输入参数生成包括函数输入参数与函数输入参数翻译结果之间映射关系的第二配置文件,将所述第一配置文件中的待处理函数名翻译结果作为所述待处理函数名翻译结果对应的用例名称,将所述第二配置文件中与所述待处理基类函数翻译结果对应的函数输入参数翻译结果作为所述待处理函数名翻译结果对应的业务用例字段,根据所述预设用例字段、所述待处理函数名翻译结果对应的用例名称和业务用例字段生成所述待处理函数名翻译结果对应的测试用例模板。
在一种实施方式中,获取基于所述测试用例模板编辑得到的用例字段值,包括:
当所述测试用例模板中待编辑用例字段没有对应的数据生成器时,获取用户输入的所述待编辑用例字段的用例字段值;
当所述测试用例模板中待编辑用例字段具有对应的至少一个数据生成器时,获取用户从所述至少一个数据生成器中选择的目标数据生成器,并基于所述目标数据生成器自动生成所述待编辑用例字段的用例字段值。
在一种实施方式中,在获取用户从所述至少一个数据生成器中选择的目标数据生成器之前,所述方法还包括:
获取用户在生成器创建界面输入的目标字符组合方式、目标字段最小长度和目标字段最大长度,基于所述目标字符自合方式、所述目标字段最小长度和所述目标字段最大长度生成所述待编辑用例字段的数据生成器,其中,所述目标字符组合方式、所述目标字段最小长度和所述目标字段最大长度分别为针对所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度;
或者,获取用户在所述生成器创建界面导入的针对所述待编辑用例字段的数据生成器脚本,并基于所述数据生成器脚本生成所述待编辑用例字段的数据生成器,其中,所述数据生成器脚本包括一个数据生成函数,且所述数据生成函数用于定义所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度。
在一种实施方式中,所述方法还包括:
获取用户在前置条件创建界面输入的前置条件信息,其中,前置条件信息包括前置条件名称、至少一个前置步骤、每个所述前置步骤对应的返回参数和每个所述前置步骤对应的返回参数值,所述前置步骤为用于获取所述返回参数所需的步骤;
基于所述前置条件信息生成前置条件。
在一种实施方式中,在根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件之后,所述方法还包括:
根据所述测试基类中各个函数名及函数名的顺序生成用例目录;
或者,根据所述第一配置文件中各个函数名翻译结果及函数名翻译结果的顺序生成用例目录。
在一种实施方式中,在生成用例目录之后,所述方法还包括:
将所述前置条件名称作为一级目录***所述用例目录中。
在一种实施方式中,按照测试用例所对应基类函数在所述测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,包括:根据所述用例目录的内容先后顺序将所有测试用例存储到json文件中,将所述json文件转换为可执行的测试用例代码;
在将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码之前,所述方法还包括:若所述用例目录中包括前置条件名称,则生成用于调用所述前置条件名称对应前置条件的调用代码,并将所述前置条件的调用代码添加到所述测试用例代码中。
在一种实施方式中,在生成包括用例字段和用例字段值的测试用例之后,所述方法还包括:
在所述测试用例模板的编辑界面中获取用户从至少一个穷举模块中添加的目标穷举模块,以便执行所述测试用例模板对应的测试用例代码时,基于所述目标穷举模块进行穷举测试,其中,所述穷举模块是根据用户输入的穷举范围和预设穷举算法生成的。
在一种实施方式中,所述预设测试用例执行逻辑包括测试用例执行逻辑、测试结果判断逻辑;
所述测试用例执行逻辑包括:按照所述测试基类中基类函数顺序执行对应的测试用例代码,将状态码取值为所述预设状态码值的测试用例执行结果按照预设json数据体格式进行保存,当待执行测试用例需要调用目标测试用例执行结果时,若所述目标测试用例执行结果中第N次执行结果为正确结果,则按照所述预设json数据体格式对应的调用格式调用所述第N次执行结果,若所述目标测试用例执行结果中第N次执行结果为错误结果,则按照所述预设json数据体格式对应的调用格式调用所述目标测试用例执行结果中第N+1次执行结果,其中,所述目标测试用例执行结果为目标测试用例的所有执行结果,所述N为正整数;
所述测试结果判断逻辑包括:当所述测试基类中定义有状态码时,通过判断所述测试基类中定义的目标状态码与所述目标测试用例中设置的状态码是否相同,确定所述目标测试用例模板测试的程序是否正常,其中,所述目标状态码与所述目标测试用例相对应,当所述测试基类中定义有测试内容且所述预设用例字段包括测试结果时,在所述目标测试用例中目标测试结果取值为1的情况下,通过判断按照预设json数据体格式保存的测试用例执行结果与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常,在所述目标测试用例中目标测试结果取值为0的情况下,通过判断目标测试用例中目标测试内容与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常。
第二方面,本发明实施例提供了一种基于测试用例的测试装置,所述装置包括:
第一获取单元,用于获取预先设置的与业务相关的测试基类;
第一生成单元,用于根据预设用例字段和所述测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板,其中,所述函数信息包括函数名和函数输入参数,所述测试用例模板包括基于每个基类函数的函数名生成的用例名称、基于每个基类函数的函数输入参数生成的业务用例字段和所述预设用例字段,所述预设用例字段包括状态码、执行次数;
第二获取单元,用于获取基于所述测试用例模板编辑得到的用例字段值,生成包括用例字段和用例字段值的测试用例,其中,每个测试用例对应一个测试用例模板;
转换单元,用于在目标执行次数满足预设次数要求的情况下,按照测试用例所对应基类函数在所述测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,其中,所述目标执行次数为所有状态码取值为预设状态码值的测试用例的执行次数之和;
第二生成单元,用于生成用于调用预设测试用例执行逻辑的调用代码;
添加单元,用于将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码,以基于所述目标测试用例代码进行用例测试。
在一种实施方式中,第一生成单元,包括:第一生成模块或者第二生成模块。
第一生成模块,用于针对所述测试基类中待处理基类函数,将所述待处理基类函数的函数名作为所述待处理基类函数对应的用例名称,将所述待处理基类函数的函数输入参数作为所述待处理基类函数对应的业务用例字段,根据所述预设用例字段、所述待处理基类函数对应的用例名称和业务用例字段生成所述待处理基类函数对应的测试用例模板;
第二生成模块,用于根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件,根据所述测试基类中每个基类函数的函数输入参数生成包括函数输入参数与函数输入参数翻译结果之间映射关系的第二配置文件,将所述第一配置文件中的待处理函数名翻译结果作为所述待处理函数名翻译结果对应的用例名称,将所述第二配置文件中与所述待处理基类函数翻译结果对应的函数输入参数翻译结果作为所述待处理函数名翻译结果对应的业务用例字段,根据所述预设用例字段、所述待处理函数名翻译结果对应的用例名称和业务用例字段生成所述待处理函数名翻译结果对应的测试用例模板。
在一种实施方式中,第二获取单元,包括:
第一获取模块,用于当所述测试用例模板中待编辑用例字段没有对应的数据生成器时,获取用户输入的所述待编辑用例字段的用例字段值;
第二获取模块,用于当所述测试用例模板中待编辑用例字段具有对应的至少一个数据生成器时,获取用户从所述至少一个数据生成器中选择的目标数据生成器,并基于所述目标数据生成器自动生成所述待编辑用例字段的用例字段值。
在一种实施方式中,所述装置还包括:
第三生成单元,用于在获取用户从所述至少一个数据生成器中选择的目标数据生成器之前,获取用户在生成器创建界面输入的目标字符组合方式、目标字段最小长度和目标字段最大长度,基于所述目标字符自合方式、所述目标字段最小长度和所述目标字段最大长度生成所述待编辑用例字段的数据生成器,其中,所述目标字符组合方式、所述目标字段最小长度和所述目标字段最大长度分别为针对所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度;或者,获取用户在所述生成器创建界面导入的针对所述待编辑用例字段的数据生成器脚本,并基于所述数据生成器脚本生成所述待编辑用例字段的数据生成器,其中,所述数据生成器脚本包括一个数据生成函数,且所述数据生成函数用于定义所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度。
在一种实施方式中,所述装置还包括:
第三获取单元,用于获取用户在前置条件创建界面输入的前置条件信息,其中,前置条件信息包括前置条件名称、至少一个前置步骤、每个所述前置步骤对应的返回参数和每个所述前置步骤对应的返回参数值,所述前置步骤为用于获取所述返回参数所需的步骤;
第四生成单元,用于基于所述前置条件信息生成前置条件。
在一种实施方式中,所述装置还包括:
第五生成单元,用于在根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件之后,根据所述测试基类中各个函数名及函数名的顺序生成用例目录,或者,根据所述第一配置文件中各个函数名翻译结果及函数名翻译结果的顺序生成用例目录。
在一种实施方式中,所述装置还包括:
***单元,用于在生成用例目录之后,将所述前置条件名称作为一级目录***所述用例目录中。
在一种实施方式中,转换单元,用于根据所述用例目录的内容先后顺序将所有测试用例存储到json文件中,将所述json文件转换为可执行的测试用例代码;
第二生成单元,还用于在将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码之前,若所述用例目录中包括前置条件名称,则生成用于调用所述前置条件名称对应前置条件的调用代码;
添加单元,还用于将所述前置条件的调用代码添加到所述测试用例代码中。
在一种实施方式中,所述装置还包括:
第六生成单元,用于在生成包括用例字段和用例字段值的测试用例之后,在所述测试用例模板的编辑界面中获取用户从至少一个穷举模块中添加的目标穷举模块,以便执行所述测试用例模板对应的测试用例代码时,基于所述目标穷举模块进行穷举测试,其中,所述穷举模块是根据用户输入的穷举范围和预设穷举算法生成的。
在一种实施方式中,所述预设测试用例执行逻辑包括测试用例执行逻辑、测试结果判断逻辑;
所述测试用例执行逻辑包括:按照所述测试基类中基类函数顺序执行对应的测试用例代码,将状态码取值为所述预设状态码值的测试用例执行结果按照预设json数据体格式进行保存,当待执行测试用例需要调用目标测试用例执行结果时,若所述目标测试用例执行结果中第N次执行结果为正确结果,则按照所述预设json数据体格式对应的调用格式调用所述第N次执行结果,若所述目标测试用例执行结果中第N次执行结果为错误结果,则按照所述预设json数据体格式对应的调用格式调用所述目标测试用例执行结果中第N+1次执行结果,其中,所述目标测试用例执行结果为目标测试用例的所有执行结果,所述N为正整数;
所述测试结果判断逻辑包括:当所述测试基类中定义有状态码时,通过判断所述测试基类中定义的目标状态码与所述目标测试用例中设置的状态码是否相同,确定所述目标测试用例模板测试的程序是否正常,其中,所述目标状态码与所述目标测试用例相对应,当所述测试基类中定义有测试内容且所述预设用例字段包括测试结果时,在所述目标测试用例中目标测试结果取值为1的情况下,通过判断按照预设json数据体格式保存的测试用例执行结果与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常,在所述目标测试用例中目标测试结果取值为0的情况下,通过判断目标测试用例中目标测试内容与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常。
第三方面,本发明实施例提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现第一方面中任一实施方式所述的方法。
第四方面,本发明实施例提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现第一方面中任一项实施方式所述的方法。
由上述内容可知,本发明实施例提供的基于测试用例的测试方法,能够先获取预先设置的与业务相关的测试基类,然后根据预设用例字段和测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板,获取基于测试用例模板编辑得到的用例字段值,生成包括用例字段和用例字段值的测试用例,在目标执行次数满足预设次数要求的情况下,按照测试用例所对应基类函数在测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,生成用于调用预设测试用例执行逻辑的调用代码,并将调用代码添加到测试用例代码中,获得目标测试用例代码,以基于目标测试用例代码进行用例测试。由此可知,在整个测试用例代码的生成过程中,测试人员只需编写测试基类、输入用例字段值即可,而无需进行其他编程操作,从而简化了测试用例代码的生成难度,进而提高了测试用例代码的生成效率,降低了对测试人员的专业性要求。
本发明实施例还可以实现的技术效果包括:
1、通过根据测试基类生成第一配置文件和第二配置文件,并基于第一配置文件和第二配置文件生成更便于测试人员阅读的测试用例模板,从而提高了用户体验。
2、为了提高测试用例的生成效率,避免测试人员做一些重复性操作,可以为用例字段配置数据生成器,从而使得数据生成器可以自动生成用例字段值。
3、通过配置前置条件可以简单高效地实现更复杂的测试逻辑。
4、通过设置穷举模块可以避免测试人员执行重复性的穷举操作,进而提高了穷举测试的效率。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于测试用例的测试方法的流程示意图;
图2为本发明实施例提供的一种测试用例模板示例图;
图3为本发明实施例提供的另一种测试用例模板示例图;
图4为本发明实施例提供的一种用例目录示例图;
图5为本发明实施例提供的另一种用例目录示例图;
图6为本发明实施例提供的一种测试用例测试平台架构图;
图7为本发明实施例提供的一种编辑前置条件模块的示意图;
图8为本发明实施例提供的另一种测试用例测试平台架构图;
图9为本发明实施例提供的又一种测试用例测试平台架构图;
图10为本发明实施例提供的一种基于测试用例的测试装置的组成框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含的一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
图1为一种基于测试用例的测试方法的流程示意图,该方法可以应用于测试用例测试平台,也可以应用于测试用例测试平台的后端,当该方法应用于测试用例测试平台时,可以通过测试用例测试平台中的前端与用户交互获取用户输入的数据,并将用户输入的数据发送给后端进行处理,当该方法应用于测试用例测试平台的后端时,后端可以接收前端发送的用户输入的数据,并对接收到的数据进行处理。该方法可以包括如下步骤:
S110:获取预先设置的与业务相关的测试基类。
具体实施时,测试人员(即用户)可以在前端创建测试项目,选择测试基类文件传输给后端,后端可以导入测试人员编写测试基类中程序时所需的标准库或扩展库进行封装。测试基类中将业务逻辑变量如用户凭证、业务地址等定义为内部关键字,并封装内部关键字的修改方法用于生成动态参数。测试基类中定义的响应体即返回值包括状态码和测试内容:
接口的返回值(即response)中本来就有状态码和测试内容两个属性,所以在基类函数中直接return response即可。在前端、移动端测试中,需要自己定义一个包含状态码和内容属性的response对象,在基类函数为response的两个属性赋值,然后returnresponse。实际测试中,接口的状态码是开发定义的,因此对状态码的断言是必须的。但在前端和移动端测试中,开发并没有对状态码的定义,只是测试***为了兼容多端测试添加的,所以可以在定义response对象时就将状态码的值赋为None,之后可以只处理测试内容。但可以添加状态码去定义测试元素是否可见,是否可点,是否可定位等状态,方便后续测试结果分析。
S120:根据预设用例字段和所述测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板。
其中,所述函数信息包括函数名和函数输入参数,所述测试用例模板包括基于每个基类函数的函数名生成的用例名称、基于每个基类函数的函数输入参数生成的业务用例字段和所述预设用例字段,所述预设用例字段包括状态码、执行次数,还可以包括用例编号、用例类型、登录用户、测试内容、测试结果。用例编号用于标识用例,用例类型用于表示用例所述种类,例如可以将用例划分为业务登录类和业务使用类,测试内容包括想要测试的具体内容,测试结果包括true或者false。业务用例字段可以包括用户名、密码、角色等。
示例性的,测试基类中关于基类函数的定义内容可以如文本一所述,其中,login和users_add为基类函数的函数名,self、username、password为login函数的函数输入参数,self、username、password、role为users_add函数的函数输入参数。
文本一
生成测试用例模板的方法包括但不限于以下两种:
(A1)根据测试基类直接生成测试用例模板
针对所述测试基类中待处理基类函数,将所述待处理基类函数的函数名作为所述待处理基类函数对应的用例名称,将所述待处理基类函数的函数输入参数作为所述待处理基类函数对应的业务用例字段,根据所述预设用例字段、所述待处理基类函数对应的用例名称和业务用例字段生成所述待处理基类函数对应的测试用例模板。
如文本一所示,第一个基类函数对应的测试用例模板的用例名称可以为login,业务用例字段包括self、username、password。
(A2)先根据测试基类生成配置文件,再根据配置文件生成测试用例模板
根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件,根据所述测试基类中每个基类函数的函数输入参数生成包括函数输入参数与函数输入参数翻译结果之间映射关系的第二配置文件,将所述第一配置文件中的待处理函数名翻译结果作为所述待处理函数名翻译结果对应的用例名称,将所述第二配置文件中与所述待处理基类函数翻译结果对应的函数输入参数翻译结果作为所述待处理函数名翻译结果对应的业务用例字段,根据所述预设用例字段、所述待处理函数名翻译结果对应的用例名称和业务用例字段生成所述待处理函数名翻译结果对应的测试用例模板。第一配置文件和第二配置文件创建完成后,可以与测试基类进行绑定。
函数名翻译结果可以根据测试人员的翻译要求确定,例如当测试人员要求翻译成中文时,函数名翻译结果可以用中文表示。本发明实施例可以根据不同的操作***,创建与之兼容的配置文件,支持ini、json、yaml、csv四种格式。
创建ini格式的第一配置文件时,将业务模块名作为一级键,其下业务的中文简称(即函数名翻译结果)作为二级键,基类函数的函数名作为二级键的值;json格式的第一配置文件与ini格式配置文件结构类似;创建yaml格式的第一配置文件时,将ini格式的二级键值改为三级键;创建csv格式的第一配置文件时,将一级键作为sheet(表格)名,二级键值对按行写入表中。
创建第二配置文件时,ini格式的文件将函数输入参数和函数输入参数翻译结果作为二级键值对,一级键名随意;json格式的文件直接将函数输入参数和函数输入参数翻译结果作为一级键值对;yaml格式的文件,将上述键值对拆一级键和二级键;csv格式的文件,分行写入表中。
当测试基类包括文本一时,ini格式的第一配置文件可以如文本二所示,ini格式的第二配置文件可以如文本三所示。根据第一配置文件和第二配置文件生成的两个基类函数对应的测试用例模板可以分别如图2和图3所示。图2的测试用例模板的用例名称为用户登录,预设用例字段包括用例编号、用例名称、登录用户、测试结果、状态码、测试内容和执行次数,业务用例字段包括用户名、密码;图3的测试用例模板的用例名称为添加用户,预设用例字段包括用例编号、用例名称、登录用户、测试结果、状态码、测试内容和执行次数,业务用例字段包括用户名、密码和角色。
文本二
文本三
在一种实施方式中,在根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件之后,本发明实施例可以根据所述测试基类中各个函数名及函数名的顺序生成用例目录;或者,根据所述第一配置文件中各个函数名翻译结果及函数名翻译结果的顺序生成用例目录。将测试基类按照目录显示,可以方便检索与后期维护,平台支持在线编辑保存。例如,根据文本一的测试基类生成的用例目录可以如图4所示,根据第一配置文件.ini生成的用例目录可以如图5所示。其中,图4和图5的用例目录中***了前置条件名称,前置条件详见下述内容。
需要补充的是,如图6所示,步骤S110和S120可以由测试用例测试平台中的项目构建模块21来完成。
S130:获取基于所述测试用例模板编辑得到的用例字段值,生成包括用例字段和用例字段值的测试用例。
其中,每个测试用例对应一个测试用例模板,即当针对同一个测试用例模板中的用例字段输入不同的用例字段值时,可以生成不同的测试用例,从而实现针对同一个测试用例模板实现多种测试的效果。
在生成测试用例模板后,可以向测试人员展示测试用例模板,从而测试人员可以选择待使用的测试用例模板,并对该测试用例模板进行编辑,输入对应的用例字段值,生成测试用例。在实际应用中,部分用例字段可能需要输入多种用例字段值来实现测试,若人工输入耗时耗力,为了提高用例字段值的获取效率,可以采用数据生成器自动生成。也就是说,当所述测试用例模板中待编辑用例字段没有对应的数据生成器时,获取用户输入的所述待编辑用例字段的用例字段值;当所述测试用例模板中待编辑用例字段具有对应的至少一个数据生成器时,获取用户从所述至少一个数据生成器中选择的目标数据生成器,并基于所述目标数据生成器自动生成所述待编辑用例字段的用例字段值。
数据生成器的生成方法包括但不限以下两种:
(B1)获取用户在生成器创建界面输入的目标字符组合方式、目标字段最小长度和目标字段最大长度,基于所述目标字符自合方式、所述目标字段最小长度和所述目标字段最大长度生成所述待编辑用例字段的数据生成器,其中,所述目标字符组合方式、所述目标字段最小长度和所述目标字段最大长度分别为针对所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度。在数据生成器内部会根据目标字符组合方式、目标字段最小长度和目标字段最大长度生成一个数据生成函数名供执行时调用,数据生成器名称可以根据数据生成函数名自动生成,或者由用户命名,在生成这些信息后,可以写入数据表中供查找使用。在生成数据生成器后,可以向用户展示添加结果,例如以“数据生成函数(目标字段最小长度,目标字段最大长度)”的方式展示。
例如,可选择的字符种类包括英文小写、英文大写、数字和一些特殊符号,用户可以选择英文小写、英文大写、数字三者的组合作为目标字符组合方式,可以设置目标字段最小长度为8,目标字段最大长度为15。
如图6所示,测试人员可以在用于生成数据生成器的数据模块25中进行编辑,输入名称(即数据生成器名称)、选择字符、定义字符长度、定义作用域,从而生成数据生成器,测试用例测试平台会将数据生成器中的载入用于生成测试用例的用例模块22,供用户编辑测试用例模板生成测试用例。
(B2)获取用户在所述生成器创建界面导入的针对所述待编辑用例字段的数据生成器脚本,并基于所述数据生成器脚本生成所述待编辑用例字段的数据生成器,其中,所述数据生成器脚本包括一个数据生成函数,且所述数据生成函数用于定义所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度。
此外,生成数据生成器后,数据生成器的代码会存入数据库中,供执行调用。
在平常的手工测试中,穷举测试是一种极端浪费人力物力的测试方向,因此测试人员会通过判定表法去减少测试用例,同时又能够覆盖大部分的业务逻辑。但是实际上确实会遗落部分业务逻辑,所以为了能够穷举业务逻辑,同时也不增加测试人员的工作量,本发明实施例向测试人员提供了一种添加穷举模块的功能,在生成测试用例之后,在所述测试用例模板的编辑界面中获取用户从至少一个穷举模块中添加的目标穷举模块,以便执行所述测试用例模板对应的测试用例代码时,基于所述目标穷举模块进行穷举测试,其中,所述穷举模块是根据用户输入的穷举范围和预设穷举算法生成的。
穷举模块的预设穷举算法可以由技术人员预先编写完成。以异常编辑为例,指定编辑对象参数1个,可变参数6个,6个可变参数都限制了长度和可用字符。首先编辑对象获取测试用例;然后6个可变参数添加动态数据测试工具,都需要是合法值;执行次数填写算法处理范围(即穷举范围),此处为6。预设穷举算法会根据可变参数添加的测试工具得出错误数据:长度过长无非法字符,长度过短无非法字符,长度合法有非法字符,长度过长有非法字符,长度过短有非法字符,空。根据执行次数计算所有可能的排列组合情况,然后与编辑对象的测试用例中执行次数比较,如果情况数较多则会提示输入的穷举范围不满足条件。若满足条件,算法会构建所有可能的测试用例,编辑对象会从填写的开始依次累加。
某一输入或选择功能的穷举测试可能对应成百上千条测试用例,其中不乏预期失败的测试用例,手动设置每条测试用例的预期是不现实的。因此穷举模块也有测试结果判断逻辑,即可以根据可变参数个数、可变参数是否存在默认值、数据是否合法等条件自动生成断言,以适配不同的测试场景。比如设置的字符长度是8-10(即穷举范围),那么字符长度在8-10范围内的状态码肯定是200,该范围之外的状态码肯定不是200。
在一种实施方式中,测试用例测试平台还可以定义预设测试用例执行逻辑,所述预设测试用例执行逻辑包括测试用例调用逻辑、测试结果判断逻辑。
所述测试用例执行逻辑包括:按照所述测试基类中基类函数顺序执行对应的测试用例代码,将状态码取值为所述预设状态码值(如200)的测试用例执行结果按照预设json数据体格式进行保存,当待执行测试用例需要调用目标测试用例执行结果时,若所述目标测试用例执行结果中第N次执行结果为正确结果,则按照所述预设json数据体格式对应的调用格式调用所述第N次执行结果,若所述目标测试用例执行结果中第N次执行结果为错误结果,则按照所述预设json数据体格式对应的调用格式调用所述目标测试用例执行结果中第N+1次执行结果,其中,所述目标测试用例执行结果为目标测试用例的所有执行结果,所述N为正整数。
当包括第一配置文件时,还可以直接按照第一配置文件内容先后顺序执行对应的测试用例代码。预设json数据体格式可以为{用例编号-第N次:{json数据格式的第N次所有执行结果}},第N次是指第N次执行。在调用目标测试用例执行结果中第N次执行结果的某个测试参数(即用例字段)时,调用方式可以为“用例编号-第N次_测试参数”,还可以记录所读取数据在json数据中的当前位置,以方便后续调用。
在多条测试用例都需要调取同一条测试用例的返回值的情况下,上述测试用例调用逻辑可以避免前面测试用例执行失败导致的连锁反应,提高了测试用例的复用度。
所述测试结果判断逻辑包括:当所述测试基类中定义有状态码时,通过判断所述测试基类中定义的目标状态码与所述目标测试用例中设置的状态码是否相同,确定所述目标测试用例模板测试的程序是否正常,其中,所述目标状态码与所述目标测试用例相对应,当所述测试基类中定义有测试内容且所述预设用例字段包括测试结果时,在所述目标测试用例中目标测试结果取值为1的情况下,通过判断按照预设json数据体格式保存的测试用例执行结果与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常,在所述目标测试用例中目标测试结果取值为0的情况下,通过判断目标测试用例中目标测试内容与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常。
当被判断的目标相同时,确定目标测试用例模板测试的程序正常,当被判断的目标不同时,确定目标测试用例模板测试的程序不正常。被判断的目标包括状态码、测试内容、测试用例执行结果等。
在一种实施方式中,为了为测试人员提供更复杂的测试用例执行逻辑,尤其是具有全局执行需求的逻辑,本发明实施例还可以设置前置条件。具体的,测试用例测试平台获取用户在前置条件创建界面输入的前置条件信息,其中,前置条件信息包括前置条件名称、至少一个前置步骤、每个前置步骤对应的返回参数和每个前置步骤对应的返回参数值,前置步骤为用于获取返回参数所需的步骤;基于所述前置条件信息生成前置条件。在生成前置条件后,可以将前置条件名称作为一级目录***用例目录中,以作为调用前置条件的入口。当然,也可以预先在用例目录中生成名称为前置条件的一级目录,用户可以通过点击该一级目录链接到用于生成前置条件的前置条件模块,并在前置条件模块中进行编辑。需要补充的是,为了提高测试效率,简化测试逻辑,若测试基类中的函数输入参数设置在前置条件中更便于调用与测试,则可以将测试基类的函数输入参数(例如用户名、密码)设置在前置条件中,本发明实施例对前置条件的功能不做限制。
如图6和图7所示,假设测试人员需要完成一个软件升级任务,则测试人员可以在用于生成前置条件的前置条件模块26进行编辑,输入前置条件名称、分别添加3个前置步骤,前置步骤依次为添加软件(即添加原始软件,自动生成的步骤编号为step1)、添加软件(即添加目标软件,自动生成的步骤编号为step2)、添加升级任务(自动生成的步骤编号为step3)。step1的返回参数为id(即原始软件的id),返回参数值为step1-id;step2的返回参数为id(即目标软件的id),返回参数值step2-id;step3的返回参数为id(即目标软件的id),返回参数值step3-id。编辑完成后,点击保存,可生成前置条件,其中前置条件模块26可以自动生成前置条件的创建时间。如图6所示,在生成前置条件后,可以将前置条件名称作为一级目录***用例目录中,以作为调用前置条件的入口,其中,用例目录可以在项目构建模块21中生成后,导入用例模块22,以便用例代码构建模块23在构建测试用例代码时,可以直接从用例模块22中获取所需的用例目录和测试用例。
S140:在目标执行次数满足预设次数要求的情况下,按照测试用例所对应基类函数在所述测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码。
其中,所述目标执行次数为所有状态码取值为预设状态码值的测试用例的执行次数之和。预设状态码值可以为200,预设次数要求可以根据实际情况而定。当目标执行次数大于或者等于预设次数阈值时,确定满足预设次数要求,当目标执行次数小于预设次数阈值时,确定不满足预设次数要求。若所述目标执行次数满足所述预设次数要求,则按照测试用例所对应基类函数在所述测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,若所述目标执行次数不满足所述预设次数要求,则确定测试用例创建失败。
在生成用例目录后,可以直接根据所述用例目录的内容先后顺序将所有测试用例存储到json文件中,将所述json文件转换为可执行的测试用例代码。
S150:生成用于调用预设测试用例执行逻辑的调用代码,并将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码,以基于所述目标测试用例代码进行用例测试。
若所述用例目录中包括前置条件名称,则生成用于调用所述前置条件名称对应前置条件的调用代码,并将所述前置条件的调用代码添加到所述测试用例代码中。由于前置条件一般是全局条件,所以可以将前置条件的调用代码添加到测试用例代码的开头部分。此外,在获得目标测试用例代码后,可以将目标测试用例代码存储到测试用例代码库中。
需要补充的是,如图6所示,一个测试项目测试的所有测试用例模板、测试用例、前置条件、目标测试用例代码等信息都可以存储到一个项目公共库中,即项目公共库中包括前置关键字(即前置条件中的返回参数)代码库、数据生成器代码库、测试用例代码库。步骤S140和S150可以由测试用例测试平台中的用例代码构建模块23来完成。
如图6所示,在生成目标测试用例代码后,测试人员可以在测试任务构建模块24的测试任务添加界面选择用例类型进行任务构建,测试用例测试平台的后端可以将测试任务中包含的测试用例从项目公共库中提取出来,生成临时测试文件。然后执行测试文件,获取测试用例的执行结果。构建完成后可点击查看当次任务的测试报告,包含测试用例的结果统计图和具体的测试用例执行情况,具体执行情况包括用例编号、用例名称、具体的执行结果、执行开始时间和执行结束时间。失败的测试用例可点击校验重新执行,可以下载获取测试用例代码文件。
本发明实施例提供的基于测试用例的测试方法,能够先获取预先设置的与业务相关的测试基类,然后根据预设用例字段和测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板,获取基于测试用例模板编辑得到的用例字段值,生成包括用例字段和用例字段值的测试用例,在目标执行次数满足预设次数要求的情况下,按照测试用例所对应基类函数在测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,生成用于调用预设测试用例执行逻辑的调用代码,并将调用代码添加到测试用例代码中,获得目标测试用例代码,以基于目标测试用例代码进行用例测试。由此可知,在整个测试用例代码的生成过程中,测试人员只需编写测试基类、输入用例字段值即可,而无需进行其他编程操作,从而简化了测试用例代码的生成难度,进而提高了测试用例代码的生成效率,降低了对测试人员的专业性要求。通过根据测试基类生成第一配置文件和第二配置文件,并基于第一配置文件和第二配置文件生成更便于测试人员阅读的测试用例模板,从而提高了用户体验。为了提高测试用例的生成效率,避免测试人员做一些重复性操作,可以为用例字段配置数据生成器,从而使得数据生成器可以自动生成用例字段值。通过配置前置条件可以简单高效地实现更复杂的测试逻辑。通过设置穷举模块可以避免测试人员执行重复性的穷举操作,进而提高了穷举测试的效率。
相应于上述方法实施例,本发明实施例提供了一种测试用例测试平台,覆盖web端测试、移动端测试、压力测试、***性能测试等主流测试功能,如图8所示,测试用例测试平台包括项目构建模块21、用例模块22、用例代码构建模块23、测试任务构建模块24。
项目构建模块21,用于构建与业务相关的测试基类,根据预设用例字段和所述测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板,其中,所述函数信息包括函数名和函数输入参数,所述测试用例模板包括基于每个基类函数的函数名生成的用例名称、基于每个基类函数的函数输入参数生成的业务用例字段和所述预设用例字段,所述预设用例字段包括状态码、执行次数。
用例模块22,用于获取项目构建模块21构建的测试用例模板,获取基于所述测试用例模板编辑得到的用例字段值,生成包括用例字段和用例字段值的测试用例,其中,每个测试用例对应一个测试用例模板。其中,所述用例模块22中还包括预设测试用例执行逻辑。
用例代码构建模块23,用于在目标执行次数满足所述预设次数要求的情况下,按照测试用例所对应基类函数在所述测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,生成用于调用预设测试用例执行逻辑的调用代码,并将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码,其中,所述目标执行次数为所有状态码取值为预设状态码值的测试用例的执行次数之和。
测试任务构建模块24,用于根据用户输入的任务测试需求生成测试任务,并获取测试任务对应的测试用例代码,并根据获取的测试用例代码生成测试文件,执行测试文件获得并输出测试用例执行结果。
在一种实施方式中,项目构建模块21,用于针对所述测试基类中待处理基类函数,将所述待处理基类函数的函数名作为所述待处理基类函数对应的用例名称,将所述待处理基类函数的函数输入参数作为所述待处理基类函数对应的业务用例字段,根据所述预设用例字段、所述待处理基类函数对应的用例名称和业务用例字段生成所述待处理基类函数对应的测试用例模板;或者,根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件,根据所述测试基类中每个基类函数的函数输入参数生成包括函数输入参数与函数输入参数翻译结果之间映射关系的第二配置文件,将所述第一配置文件中的待处理函数名翻译结果作为所述待处理函数名翻译结果对应的用例名称,将所述第二配置文件中与所述待处理基类函数翻译结果对应的函数输入参数翻译结果作为所述待处理函数名翻译结果对应的业务用例字段,根据所述预设用例字段、所述待处理函数名翻译结果对应的用例名称和业务用例字段生成所述待处理函数名翻译结果对应的测试用例模板。
在一种实施方式中,如图9所示,测试用例测试平台还包括数据模块25。
数据模块25,用于获取用户在生成器创建界面输入的目标字符组合方式、目标字段最小长度和目标字段最大长度,基于所述目标字符自合方式、所述目标字段最小长度和所述目标字段最大长度生成所述待编辑用例字段的数据生成器,其中,所述目标字符组合方式、所述目标字段最小长度和所述目标字段最大长度分别为针对所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度;或者,获取用户在所述生成器创建界面导入的针对所述待编辑用例字段的数据生成器脚本,并基于所述数据生成器脚本生成所述待编辑用例字段的数据生成器,其中,所述数据生成器脚本包括一个数据生成函数,且所述数据生成函数用于定义所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度。
在一种实施方式中,用例模块22,用于当所述测试用例模板中待编辑用例字段没有对应的数据生成器时,获取用户输入的所述待编辑用例字段的用例字段值;当所述测试用例模板中待编辑用例字段具有对应的至少一个数据生成器时,获取用户从所述至少一个数据生成器中选择的目标数据生成器,并基于所述目标数据生成器自动生成所述待编辑用例字段的用例字段值。
在一种实施方式中,如图9所示,测试用例测试平台还包括前置条件模块26。
前置条件模块26,用于获取用户在前置条件创建界面输入的前置条件信息,其中,前置条件信息包括前置条件名称、至少一个前置步骤、每个所述前置步骤对应的返回参数和每个所述前置步骤对应的返回参数值,所述前置步骤为用于获取所述返回参数所需的步骤,基于所述前置条件信息生成前置条件。
在一种实施方式中,项目构建模块21,还用于在根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件之后,根据所述测试基类中各个函数名及函数名的顺序生成用例目录;或者,根据所述第一配置文件中各个函数名翻译结果及函数名翻译结果的顺序生成用例目录。
在一种实施方式中,项目构建模块21,还用于在生成用例目录之后,将所述前置条件名称作为一级目录***所述用例目录中。
在一种实施方式中,用例代码构建模块23,用于根据所述用例目录的内容先后顺序将所有测试用例存储到json文件中,将所述json文件转换为可执行的测试用例代码。
在一种实施方式中,用例代码构建模块23,用于在将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码之前,若所述用例目录中包括前置条件名称,则生成用于调用所述前置条件名称对应前置条件的调用代码,并将所述前置条件的调用代码添加到所述测试用例代码中。
在一种实施方式中,如图9所示,测试用例测试平台还包括穷举测试模块27。
穷举测试模块27,用于获取用户输入的穷举范围,并根据用户输入的穷举范围和预设穷举算法生成的穷举模块。
在一种实施方式中,用例模块22,用于在生成包括用例字段和用例字段值的测试用例之后,在所述测试用例模板的编辑界面中获取用户从至少一个穷举模块中添加的目标穷举模块,以便执行所述测试用例模板对应的测试用例代码时,基于所述目标穷举模块进行穷举测试。
在一种实施方式中,所述预设测试用例执行逻辑包括测试用例执行逻辑、测试结果判断逻辑;所述测试用例执行逻辑包括:按照所述测试基类中基类函数顺序执行对应的测试用例代码,将状态码取值为所述预设状态码值的测试用例执行结果按照预设json数据体格式进行保存,当待执行测试用例需要调用目标测试用例执行结果时,若所述目标测试用例执行结果中第N次执行结果为正确结果,则按照所述预设json数据体格式对应的调用格式调用所述第N次执行结果,若所述目标测试用例执行结果中第N次执行结果为错误结果,则按照所述预设json数据体格式对应的调用格式调用所述目标测试用例执行结果中第N+1次执行结果,其中,所述目标测试用例执行结果为目标测试用例的所有执行结果,所述N为正整数;所述测试结果判断逻辑包括:当所述测试基类中定义有状态码时,通过判断所述测试基类中定义的目标状态码与所述目标测试用例中设置的状态码是否相同,确定所述目标测试用例模板测试的程序是否正常,其中,所述目标状态码与所述目标测试用例相对应,当所述测试基类中定义有测试内容且所述预设用例字段包括测试结果时,在所述目标测试用例中目标测试结果取值为1的情况下,通过判断按照预设json数据体格式保存的测试用例执行结果与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常,在所述目标测试用例中目标测试结果取值为0的情况下,通过判断目标测试用例中目标测试内容与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常。
相应于上述方法实施例,本发明实施例提供了一种基于测试用例的测试装置,如图10所示,所述装置包括:
第一获取单元31,用于获取预先设置的与业务相关的测试基类。
第一生成单元32,用于根据预设用例字段和所述测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板,其中,所述函数信息包括函数名和函数输入参数,所述测试用例模板包括基于每个基类函数的函数名生成的用例名称、基于每个基类函数的函数输入参数生成的业务用例字段和所述预设用例字段,所述预设用例字段包括状态码、执行次数。
第二获取单元33,用于获取基于所述测试用例模板编辑得到的用例字段值,生成包括用例字段和用例字段值的测试用例,其中,每个测试用例对应一个测试用例模板。
转换单元34,用于在目标执行次数满足预设次数要求的情况下,按照测试用例所对应基类函数在所述测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,其中,所述目标执行次数为所有状态码取值为预设状态码值的测试用例的执行次数之和。
第二生成单元35,用于生成用于调用预设测试用例执行逻辑的调用代码。
添加单元36,用于将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码,以基于所述目标测试用例代码进行用例测试。
在一种实施方式中,第一生成单元32,包括:第一生成模块或者第二生成模块。
第一生成模块,用于针对所述测试基类中待处理基类函数,将所述待处理基类函数的函数名作为所述待处理基类函数对应的用例名称,将所述待处理基类函数的函数输入参数作为所述待处理基类函数对应的业务用例字段,根据所述预设用例字段、所述待处理基类函数对应的用例名称和业务用例字段生成所述待处理基类函数对应的测试用例模板。
第二生成模块,用于根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件,根据所述测试基类中每个基类函数的函数输入参数生成包括函数输入参数与函数输入参数翻译结果之间映射关系的第二配置文件,将所述第一配置文件中的待处理函数名翻译结果作为所述待处理函数名翻译结果对应的用例名称,将所述第二配置文件中与所述待处理基类函数翻译结果对应的函数输入参数翻译结果作为所述待处理函数名翻译结果对应的业务用例字段,根据所述预设用例字段、所述待处理函数名翻译结果对应的用例名称和业务用例字段生成所述待处理函数名翻译结果对应的测试用例模板。
在一种实施方式中,第二获取单元33,包括:
第一获取模块,用于当所述测试用例模板中待编辑用例字段没有对应的数据生成器时,获取用户输入的所述待编辑用例字段的用例字段值。
第二获取模块,用于当所述测试用例模板中待编辑用例字段具有对应的至少一个数据生成器时,获取用户从所述至少一个数据生成器中选择的目标数据生成器,并基于所述目标数据生成器自动生成所述待编辑用例字段的用例字段值。
在一种实施方式中,所述装置还包括:
第三生成单元,用于在获取用户从所述至少一个数据生成器中选择的目标数据生成器之前,获取用户在生成器创建界面输入的目标字符组合方式、目标字段最小长度和目标字段最大长度,基于所述目标字符自合方式、所述目标字段最小长度和所述目标字段最大长度生成所述待编辑用例字段的数据生成器,其中,所述目标字符组合方式、所述目标字段最小长度和所述目标字段最大长度分别为针对所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度;或者,获取用户在所述生成器创建界面导入的针对所述待编辑用例字段的数据生成器脚本,并基于所述数据生成器脚本生成所述待编辑用例字段的数据生成器,其中,所述数据生成器脚本包括一个数据生成函数,且所述数据生成函数用于定义所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度。
在一种实施方式中,所述装置还包括:
第三获取单元,用于获取用户在前置条件创建界面输入的前置条件信息,其中,前置条件信息包括前置条件名称、前置步骤、返回参数和所述返回参数的路径,所述返回参数包括至少一个用例字段,所述前置步骤为用于生成所述返回参数所需的步骤。
第四生成单元,用于基于所述前置条件信息生成前置条件。
在一种实施方式中,所述装置还包括:
第五生成单元,用于在根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件之后,根据所述测试基类中各个函数名及函数名的顺序生成用例目录,或者,根据所述第一配置文件中各个函数名翻译结果及函数名翻译结果的顺序生成用例目录。
在一种实施方式中,所述装置还包括:
***单元,用于在生成用例目录之后,将所述前置条件名称作为一级目录***所述用例目录中。
在一种实施方式中,转换单元34,用于根据所述用例目录的内容先后顺序将所有测试用例存储到json文件中,将所述json文件转换为可执行的测试用例代码。
第二生成单元35,还用于在将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码之前,若所述用例目录中包括前置条件名称,则生成用于调用所述前置条件名称对应前置条件的调用代码。
添加单元36,还用于将所述前置条件的调用代码添加到所述测试用例代码中。
在一种实施方式中,所述装置还包括:
第六生成单元,用于在生成包括用例字段和用例字段值的测试用例之后,在所述测试用例模板的编辑界面中获取用户从至少一个穷举模块中添加的目标穷举模块,以便执行所述测试用例模板对应的测试用例代码时,基于所述目标穷举模块进行穷举测试,其中,所述穷举模块是根据用户输入的穷举范围和预设穷举算法生成的。
在一种实施方式中,所述预设测试用例执行逻辑包括测试用例执行逻辑、测试结果判断逻辑。
所述测试用例执行逻辑包括:按照所述测试基类中基类函数顺序执行对应的测试用例代码,将状态码取值为所述预设状态码值的测试用例执行结果按照预设json数据体格式进行保存,当待执行测试用例需要调用目标测试用例执行结果时,若所述目标测试用例执行结果中第N次执行结果为正确结果,则按照所述预设json数据体格式对应的调用格式调用所述第N次执行结果,若所述目标测试用例执行结果中第N次执行结果为错误结果,则按照所述预设json数据体格式对应的调用格式调用所述目标测试用例执行结果中第N+1次执行结果,其中,所述目标测试用例执行结果为目标测试用例的所有执行结果,所述N为正整数。
所述测试结果判断逻辑包括:当所述测试基类中定义有状态码时,通过判断所述测试基类中定义的目标状态码与所述目标测试用例中设置的状态码是否相同,确定所述目标测试用例模板测试的程序是否正常,其中,所述目标状态码与所述目标测试用例相对应,当所述测试基类中定义有测试内容且所述预设用例字段包括测试结果时,在所述目标测试用例中目标测试结果取值为1的情况下,通过判断按照预设json数据体格式保存的测试用例执行结果与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常,在所述目标测试用例中目标测试结果取值为0的情况下,通过判断目标测试用例中目标测试内容与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常。
基于上述方法实施例,本发明的另一实施例提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现如上所述的方法。
基于上述方法实施例,本发明的另一实施例提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
上述平台、装置实施例与方法实施例相对应,与该方法实施例具有同样的技术效果,具体说明参见方法实施例。装置实施例是基于方法实施例得到的,具体的说明可以参见方法实施例部分,此处不再赘述。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
Claims (10)
1.一种基于测试用例的测试方法,其特征在于,所述方法包括:
获取预先设置的与业务相关的测试基类;
根据预设用例字段和所述测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板,其中,所述函数信息包括函数名和函数输入参数,所述测试用例模板包括基于每个基类函数的函数名生成的用例名称、基于每个基类函数的函数输入参数生成的业务用例字段和所述预设用例字段,所述预设用例字段包括状态码、执行次数;
获取基于所述测试用例模板编辑得到的用例字段值,生成包括用例字段和用例字段值的测试用例,其中,每个测试用例对应一个测试用例模板;
在目标执行次数满足预设次数要求的情况下,按照测试用例所对应基类函数在所述测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,其中,所述目标执行次数为所有状态码取值为预设状态码值的测试用例的执行次数之和;
生成用于调用预设测试用例执行逻辑的调用代码,并将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码,以基于所述目标测试用例代码进行用例测试。
2.根据权利要求1所述的方法,其特征在于,根据预设用例字段和所述测试基类中每个基类函数的函数信息生成每个基类函数对应的测试用例模板,包括:
针对所述测试基类中待处理基类函数,将所述待处理基类函数的函数名作为所述待处理基类函数对应的用例名称,将所述待处理基类函数的函数输入参数作为所述待处理基类函数对应的业务用例字段,根据所述预设用例字段、所述待处理基类函数对应的用例名称和业务用例字段生成所述待处理基类函数对应的测试用例模板;
或者,根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件,根据所述测试基类中每个基类函数的函数输入参数生成包括函数输入参数与函数输入参数翻译结果之间映射关系的第二配置文件,将所述第一配置文件中的待处理函数名翻译结果作为所述待处理函数名翻译结果对应的用例名称,将所述第二配置文件中与所述待处理基类函数翻译结果对应的函数输入参数翻译结果作为所述待处理函数名翻译结果对应的业务用例字段,根据所述预设用例字段、所述待处理函数名翻译结果对应的用例名称和业务用例字段生成所述待处理函数名翻译结果对应的测试用例模板。
3.根据权利要求2所述的方法,其特征在于,获取基于所述测试用例模板编辑得到的用例字段值,包括:
当所述测试用例模板中待编辑用例字段没有对应的数据生成器时,获取用户输入的所述待编辑用例字段的用例字段值;
当所述测试用例模板中待编辑用例字段具有对应的至少一个数据生成器时,获取用户从所述至少一个数据生成器中选择的目标数据生成器,并基于所述目标数据生成器自动生成所述待编辑用例字段的用例字段值。
4.根据权利要求3所述的方法,其特征在于,在获取用户从所述至少一个数据生成器中选择的目标数据生成器之前,所述方法还包括:
获取用户在生成器创建界面输入的目标字符组合方式、目标字段最小长度和目标字段最大长度,基于所述目标字符自合方式、所述目标字段最小长度和所述目标字段最大长度生成所述待编辑用例字段的数据生成器,其中,所述目标字符组合方式、所述目标字段最小长度和所述目标字段最大长度分别为针对所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度;
或者,获取用户在所述生成器创建界面导入的针对所述待编辑用例字段的数据生成器脚本,并基于所述数据生成器脚本生成所述待编辑用例字段的数据生成器,其中,所述数据生成器脚本包括一个数据生成函数,且所述数据生成函数用于定义所述待编辑用例字段的字符组合方式、字段最小长度和字段最大长度。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取用户在前置条件创建界面输入的前置条件信息,其中,前置条件信息包括前置条件名称、至少一个前置步骤、每个所述前置步骤对应的返回参数和每个所述前置步骤对应的返回参数值,所述前置步骤为用于获取所述返回参数所需的步骤;
基于所述前置条件信息生成前置条件。
6.根据权利要求5所述的方法,其特征在于,在根据所述测试基类中每个基类函数的函数名生成包括函数名与函数名翻译结果之间映射关系的第一配置文件之后,所述方法还包括:
根据所述测试基类中各个函数名及函数名的顺序生成用例目录;
或者,根据所述第一配置文件中各个函数名翻译结果及函数名翻译结果的顺序生成用例目录。
7.根据权利要求6所述的方法,其特征在于,在生成用例目录之后,所述方法还包括:
将所述前置条件名称作为一级目录***所述用例目录中。
8.根据权利要求7所述的方法,其特征在于,按照测试用例所对应基类函数在所述测试基类中的顺序,将所有测试用例转换为可执行的测试用例代码,包括:根据所述用例目录的内容先后顺序将所有测试用例存储到json文件中,将所述json文件转换为可执行的测试用例代码;
在将所述调用代码添加到所述测试用例代码中,获得目标测试用例代码之前,所述方法还包括:若所述用例目录中包括前置条件名称,则生成用于调用所述前置条件名称对应前置条件的调用代码,并将所述前置条件的调用代码添加到所述测试用例代码中。
9.根据权利要求1所述的方法,其特征在于,在生成包括用例字段和用例字段值的测试用例之后,所述方法还包括:
在所述测试用例模板的编辑界面中获取用户从至少一个穷举模块中添加的目标穷举模块,以便执行所述测试用例模板对应的测试用例代码时,基于所述目标穷举模块进行穷举测试,其中,所述穷举模块是根据用户输入的穷举范围和预设穷举算法生成的。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述预设测试用例执行逻辑包括测试用例执行逻辑、测试结果判断逻辑;
所述测试用例执行逻辑包括:按照所述测试基类中基类函数顺序执行对应的测试用例代码,将状态码取值为所述预设状态码值的测试用例执行结果按照预设json数据体格式进行保存,当待执行测试用例需要调用目标测试用例执行结果时,若所述目标测试用例执行结果中第N次执行结果为正确结果,则按照所述预设json数据体格式对应的调用格式调用所述第N次执行结果,若所述目标测试用例执行结果中第N次执行结果为错误结果,则按照所述预设json数据体格式对应的调用格式调用所述目标测试用例执行结果中第N+1次执行结果,其中,所述目标测试用例执行结果为目标测试用例的所有执行结果,所述N为正整数;
所述测试结果判断逻辑包括:当所述测试基类中定义有状态码时,通过判断所述测试基类中定义的目标状态码与所述目标测试用例中设置的状态码是否相同,确定所述目标测试用例模板测试的程序是否正常,其中,所述目标状态码与所述目标测试用例相对应,当所述测试基类中定义有测试内容且所述预设用例字段包括测试结果时,在所述目标测试用例中目标测试结果取值为1的情况下,通过判断按照预设json数据体格式保存的测试用例执行结果与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常,在所述目标测试用例中目标测试结果取值为0的情况下,通过判断目标测试用例中目标测试内容与所述测试基类中定义的测试内容是否相同,确定所述目标测试用例测试的程序是否正常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210016728.8A CN114416547A (zh) | 2022-01-07 | 2022-01-07 | 基于测试用例的测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210016728.8A CN114416547A (zh) | 2022-01-07 | 2022-01-07 | 基于测试用例的测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114416547A true CN114416547A (zh) | 2022-04-29 |
Family
ID=81272061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210016728.8A Pending CN114416547A (zh) | 2022-01-07 | 2022-01-07 | 基于测试用例的测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416547A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116192922A (zh) * | 2023-04-23 | 2023-05-30 | 成都华兴汇明科技有限公司 | 一种测试用例的下发管理方法、装置及*** |
CN117573563A (zh) * | 2024-01-15 | 2024-02-20 | 成方金融科技有限公司 | 一种自动化测试案例调度*** |
-
2022
- 2022-01-07 CN CN202210016728.8A patent/CN114416547A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116192922A (zh) * | 2023-04-23 | 2023-05-30 | 成都华兴汇明科技有限公司 | 一种测试用例的下发管理方法、装置及*** |
CN116192922B (zh) * | 2023-04-23 | 2023-08-11 | 成都华兴汇明科技有限公司 | 一种测试用例的下发管理方法、装置及*** |
CN117573563A (zh) * | 2024-01-15 | 2024-02-20 | 成方金融科技有限公司 | 一种自动化测试案例调度*** |
CN117573563B (zh) * | 2024-01-15 | 2024-05-24 | 成方金融科技有限公司 | 一种自动化测试案例调度*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110427331B (zh) | 基于接口测试工具自动生成性能测试脚本的方法 | |
US8010844B2 (en) | File mutation method and system using file section information and mutation rules | |
US7398514B2 (en) | Test automation stack layering | |
US8839107B2 (en) | Context based script generation | |
US20140075242A1 (en) | Testing rest api applications | |
US20040143819A1 (en) | Generic software testing system and mechanism | |
CN114416547A (zh) | 基于测试用例的测试方法 | |
CN108845940A (zh) | 一种企业级信息***自动化功能测试方法和*** | |
CN102866944A (zh) | 一种压力测试***及方法 | |
CN110532182B (zh) | 一种虚拟化平台的自动化测试方法及装置 | |
CN110716870A (zh) | 服务的自动化测试方法及装置 | |
CN110543427B (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
US20050137844A1 (en) | Method for generating a language-independent regression test script | |
US6763360B2 (en) | Automated language and interface independent software testing tool | |
CN111679979A (zh) | 破坏性测试方法及装置 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
CN113535141A (zh) | 数据库操作代码的生成方法及装置 | |
CN112328231B (zh) | python字典和结构体间的快速转换方法 | |
CN115525534A (zh) | 基于swagger的接口测试的测试用例生成方法、生成平台 | |
US8126931B2 (en) | Method and apparatus for displaying the composition of a data structure during runtime | |
US20060064570A1 (en) | Method and apparatus for automatically generating test data for code testing purposes | |
CN116561003A (zh) | 测试数据生成方法、装置、计算机设备和存储介质 | |
CN110659022A (zh) | 一种基于Java自动调用Python脚本的方法 | |
CN115705297A (zh) | 代码调用检测方法、装置、计算机设备以及存储介质 | |
CN110765020B (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 | ||
CB02 | Change of applicant information |
Address after: Room 601, Building 4, Jingwei Hengrun R&D Center, No. 2, Huixiang Road, Zhangjiawo Town, Xiqing District, Tianjin, 300380 Applicant after: Jingwei Hengrun (Tianjin) research and Development Co.,Ltd. Address before: 300380 Room 308, No. 9, Fengze Road, Xiqing automobile industrial zone (Zhangjiawo Industrial Zone), Xiqing District, Tianjin Applicant before: Jingwei Hengrun (Tianjin) research and Development Co.,Ltd. |