发明内容
有鉴于此,本发明提供了一种网页代码自动化测试方法及装置,可以实现对个别未通过测试的测试用例自动进行重复测试,从而有效减少测试结果误差,同时提高测试效率。
为达上述目的,本发明的技术方案具体是这样实现的:
一种网页代码自动化测试方法,该方法包括:
记录测试执行次数;
在全部用例集文件执行完毕,执行生成测试报告的步骤之前,若存在未通过测试的失败用例,则将未通过测试的失败用例组成失败用例集文件;
指定所述失败用例集文件再次执行测试,并使所述测试执行次数加1,直到测试执行次数达到预设的阈值后,执行所述生成测试报告的步骤。
较佳地,所述将未通过测试的失败用例组成失败用例集文件,包括:
根据失败用例列表,匹配所有用例集文件,生成失败用例的用例名和失败用例所属的用例集文件的对应关系表;
根据所述对应关系表,从失败用例所属的用例集文件中提取失败用例的内容,并将所有失败用例的内容写入失败用例集文件。
较佳地,所述生成用例名和它所属的用例集文件的对应关系表,包括:
逐一读取失败用例列表中的所有失败用例;
将读取的所述失败用例的用例名与所有用例集文件进行匹配,找出所述失败用例所属的用例集文件;
将所述失败用例的用例名作为键,所述失败用例所属的用例集文件作为值存储到一个全局哈希数组。
较佳地,所述从失败用例所属的用例集文件中提取失败用例的内容,并将所有失败用例的内容写入失败用例集文件,包括:
对所述全局哈希数组的值取唯一后,存储于一个新数组中;
逐一读取所述新数组中的所有元素;
清空预先建立的另一数组,将所述全局哈希数组里,所有以所述新数组中读取的元素为值的元素提取到所述另一数组中;
根据所述另一数组,生成所有对应所述新数组中读取的元素的失败用例集文件。
较佳地,所述生成对应新数组中读取的元素的失败用例集文件,包括:
打开所述新数组中读取的元素对应的用例集文件;
从所述用例集文件中逐一读取所述另一数组中的元素,以用例集文件的格式写失败用例集文件的文件头;
将所述用例集文件中对应所述另一数组中的元素的文本片断写入所述失败用例集文件中;
以用例集文件的格式写所述失败用例集文件的文件尾,得到对应新数组中读取的元素的失败用例集文件。
一种网页代码自动化测试装置,该装置包括:
记录模块,用于记录测试执行次数;
测试执行模块,用于执行用例集文件进行测试,生成测试报告;
失败用例过滤模块,用于在所述测试执行模块全部用例集文件执行完毕,生成测试报告之前,若存在未通过测试的失败用例,则将未通过测试的失败用例组成失败用例集文件;
指令所述测试执行模块再次执行所述失败用例集文件;并使所述记录模块记录的测试执行次数加1,直到所述记录模块记录的测试执行次数达到预设的阈值后,指令所述测试执行模块生成测试报告。
较佳地,所述失败用例过滤模块包括:
对应关系表子模块,用于在所述测试执行模块全部用例集文件执行完毕,生成测试报告之前,若存在未通过测试的失败用例,则根据失败用例列表,匹配所有用例集文件,生成所述失败用例的用例名和失败用例所属的用例集文件的对应关系表;
用例集生成子模块,用于根据所述对应关系表,从失败用例所属的用例集文件中提取失败用例的内容,并将所有失败用例的内容写入失败用例集文件;
指令子模块,用于指令所述测试执行模块再次执行所述失败用例集文件;并使所述记录模块记录的测试执行次数加1,直到所述记录模块记录的测试执行次数达到预设的阈值后,指令所述测试执行模块生成测试报告。
较佳地,所述对应关系表子模块,包括:
读取单元,用于逐一读取失败用例列表中的所有失败用例;
匹配单元,用于将所述读取单元读取的失败用例的用例名与所有用例集文件进行匹配,找出所述失败用例所属的用例集文件;
存储单元,用于将所述失败用例的用例名作为键,所述失败用例所属的用例集文件作为值存储到一个全局哈希数组。
较佳地,所述用例集生成子模块,包括:
转存单元,用于对所述全局哈希数组的值取唯一后,存储于一个新数组中;
提取单元,用于逐一读取所述新数组中的所有元素;清空预先建立的另一数组,将所述全局哈希数组里,所有以所述新数组中读取的元素为值的元素提取到所述另一数组中;
生成单元,用于根据所述另一数组,生成所有对应所述新数组中读取的元素的失败用例集文件。
较佳地,所述生成单元,包括:
元素读取子单元,用于打开所述新数组中读取的元素对应的用例集文件,从所述用例集文件中逐一读取所述另一数组中的元素;
文件头写入子单元,用于以用例集文件的格式写失败用例集文件的文件头;
内容写入子单元,用于将所述用例集文件中对应所述另一数组中的元素的文本片断写入所述失败用例集文件中;
文件尾写入子单元,用于以用例集文件的格式写所述失败用例集文件的文件尾,得到对应新数组中读取的元素的失败用例集文件。
由上述技术方案可见,本发明的这种网页代码自动化测试方法及装置,在现有测试方法生成测试报告之前,会判断是否有测试未通过的测试用例,如果有,则将未通过测试的测试用例组合成失败用例文件集,并对该失败用例文件集进行自动重复测试,直到达到预设的执行次数阈值后再生成测试报告,从而有效减少测试结果误差,同时提高测试效率。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明主要是在现有测试方法生成测试报告之前,判断是否有测试未通过的测试用例,如果有,则将未通过测试的测试用例组合成失败用例文件集,并对该失败用例文件集进行重复测试,直到达到预设的执行次数阈值后再生成测试报告,从而有效减少测试结果误差,同时提高测试效率。
本发明改进后的测试方法如图2所示,包括如下步骤:
步骤201,执行指定用例集文件中的测试用例;
步骤202,判断指定用例集文件是否全部执行完毕,若是,进入步骤203,否则返回步骤201,继续执行下一个用例集文件;
步骤203,判断测试用例是否全部通过了测试,若是,则进入步骤207,否则进入步骤204;
步骤204,判断执行次数是否超过预设阈值,执行次数初始时为1,如果是,则进入步骤207,否则进入步骤205;
步骤205,将未通过测试的测试用例组成失败用例集文件;
步骤206,指定该失败用例集文件执行测试,执行次数+1,返回步骤201;
步骤207,生成测试报告。
其中,步骤201~203,以及步骤207的具体操作与现有技术相同,这里不再赘述,而步骤205的具体操作任意,只要能够将失败的测试用例从原来所属的用例集文件中提取出来并组合成一个新的用例集文件即可,具体方法举例图3所示,包括如下步骤:
步骤301,根据失败用例列表,匹配所有用例集文件,生成失败用例的用例名和它所属的用例集文件的对应关系表;
其中,失败用例列表中包含所有失败用例的名称,以及其所属用例集文件的名称;
步骤302,根据所述对应关系表,从失败用例所属的用例集文件中提取失败用例的内容,并将所有失败用例的内容写入失败用例集文件。
将提取出的失败用例的内容按照用例集文件的格式,写入失败用例集文件;失败用例集文件可以是一个,也可以是多个,可以根据需要确定。
下面举一个具体的例子,如图4所示,包括如下步骤:
步骤401,读取失败用例列表fail_test_list中的下一个失败用例;
步骤402,将读取的失败用例的用例名与所有用例集文件进行匹配;找出包含该用例名的用例集文件;具体可以使用“it‘用例名’do”作为关键字进行匹配。
步骤403,判断匹配是否成功,若是,则进入步骤404,否则进入步骤405;
步骤404,将用例名作为键,用例集文件作为值存储到一个全局hash数组case_map(相当于上述步骤301中提到的用例名和它所属的用例集文件的对应关系表)里并进入步骤405;
步骤405,判断全部用例是否处理完毕,若是,则进入步骤406,否则返回步骤401;
步骤406,对所述全局hash数组case_map的值(用例集文件)取唯一后,存储于一个新数组file_set中;所述对case_map的值取唯一,即将case_map的值中,相同的值作为同一个元素;
步骤407,读取数组file_set中的下一个元素(case_file);
步骤408,清空预先建立的数组cases,将case_map里所有以步骤407中读取的case_file为值的元素提取到数组cases中;
步骤409,打开case_file对应的文件;
步骤410,从case_file中读取数组cases中下一个元素(test_case_id);
步骤411,写用例集文件的文件头,用例集文件的名称为again_case_file;
步骤412,将case_file中以“it‘test_case_id’do”为开头,以下一个it开头的行为结尾的文本片断写入again_case_file中;
步骤413,写用例集文件again_case_file的文件尾;
步骤414,判断数组cases是否读取完毕,若是,则进入步骤415,否则返回步骤410;
步骤415,输出以again_case_file为名称的用例集文件;
步骤416,判断数组file_set中元素是否读取完毕,若是,进入步骤417,否则返回步骤407;
步骤417,输出所有需要重新执行的用例集文件,即上述所有以again_case_file为名称的用例集文件。这些以again_case_file为名称的用例集文件即为失败用例集文件。
对于上述步骤,假设目前有3个用例集文件,每个用例集文件和包含的测试用例如下表所示:
若首次运行自动化测试后,发现有3个测试用例执行失败,分别是:0002.登录验证,0012.修改项目,0013.删除项目,那么fail_test_list的值如下表所示:
index |
element |
1 |
0002.登录验证 |
2 |
0012.修改项目 |
3 |
0013.删除项目 |
执行匹配完成后,得到的哈希数组case_map的值如下表所示:
key |
value |
0002.登录验证 |
home_spec.rb |
0012.修改项目 |
project_spec.rb |
0013.删除项目 |
project_spec.rb |
对case_map的值(value)取唯一之后,得到的数组file_set的值如下表所示:
index |
element |
1 |
home_spec.rb |
2 |
project_spec.rb |
之后会对case_map做循环处理,由于本例中case_map有两个元素,所以会进行两次循环:
第一次循环,case_file的值为home_spec.rb,数组cases的值如下表所示:
index |
element |
1 |
0002.登录验证 |
在home_spec.rb里提取“0002.登录验证”的内容并最终输出用例集文件again_home_spec.rb。
第二次循环:case_file的值为project_spec.rb,数组cases的值如下表所示:
index |
element |
1 |
0012.修改项目 |
2 |
0013.删除项目 |
在project_spec.rb里提取“0012.修改项”和“0013.删除项目”的内容并最终输出用例集文件again_project_spec.rb。
所有处理流程结束后,最终输出结果为两个只包含上一次执行失败的测试用例的用例集文件:again_home_spec.rb和again_project_spec.rb,这两个用例集文件为失败用例集文件。
得到该失败用例集文件后,即可重复执行该失败用例集文件,并在达到预设的重复执行次数后生成最终的测试结果。
本发明还提供了一种网页代码自动化测试装置,如图5所示,该装置包括:
记录模块501,用于记录测试执行次数;
测试执行模块502,用于执行用例集文件进行测试,生成测试报告;
失败用例过滤模块503,用于在所述测试执行模块502全部用例集文件执行完毕,生成测试报告之前,若存在未通过测试的失败用例,则将未通过测试的失败用例组成失败用例集文件;
指令所述测试执行模块502再次执行所述失败用例集文件;并使所述记录模块501记录的测试执行次数加1,直到所述记录模块501记录的测试执行次数达到预设的阈值后,指令所述测试执行模块502生成测试报告。
其中,所述失败用例过滤模块503如图6所示,包括:
对应关系表子模块601,用于在所述测试执行模块全部用例集文件执行完毕,生成测试报告之前,若存在未通过测试的失败用例,则根据失败用例列表,匹配所有用例集文件,生成所述失败用例的用例名和失败用例所属的用例集文件的对应关系表;
用例集生成子模块602,用于根据所述对应关系表,从失败用例所属的用例集文件中提取失败用例的内容,并将所有失败用例的内容写入失败用例集文件;
指令子模块603,用于指令所述测试执行模块502再次执行所述失败用例集文件;并使所述记录模块501记录的测试执行次数加1,直到所述记录模块501记录的测试执行次数达到预设的阈值后,指令所述测试执行模块502生成测试报告。
所述对应关系表子模块601如图7所示,包括:
读取单元701,用于逐一读取失败用例列表中的所有失败用例;
匹配单元702,用于将所述读取单元701读取的失败用例的用例名与所有用例集文件进行匹配,找出所述失败用例所属的用例集文件;
存储单元703,用于将所述失败用例的用例名作为键,所述失败用例所属的用例集文件作为值存储到一个全局哈希数组。
所述用例集生成子模块602如图8所示,包括:
转存单元801,用于对所述全局哈希数组的值取唯一后,存储于一个新数组中;
提取单元802,用于逐一读取所述新数组中的所有元素;清空预先建立的另一数组,将所述全局哈希数组里,所有以所述新数组中读取的元素为值的元素提取到所述另一数组中;
生成单元803,用于根据所述另一数组,生成所有对应所述新数组中读取的元素的失败用例集文件。
所述生成单元803如图9所示,包括:
元素读取子单元901,用于打开所述新数组中读取的元素对应的用例集文件,从所述用例集文件中逐一读取所述另一数组中的元素;
文件头写入子单元902,用于以用例集文件的格式写失败用例集文件的文件头;
内容写入子单元903,用于将所述用例集文件中对应所述另一数组中的元素的文本片断写入所述失败用例集文件中;
文件尾写入子单元904,用于以用例集文件的格式写所述失败用例集文件的文件尾,得到对应新数组中读取的元素的失败用例集文件。
由上述的实施例可见,本发明的这种网页代码自动化测试方法及装置,在现有测试方法生成测试报告之前,会判断是否有测试未通过的测试用例,如果有,则将未通过测试的测试用例组合成失败用例文件集,并对该失败用例文件集进行自动重复测试,直到达到预设的执行次数阈值后再生成测试报告,从而有效减少测试结果误差,同时提高测试效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。