CN103377125A - 一种代码测试方法、装置及*** - Google Patents
一种代码测试方法、装置及*** Download PDFInfo
- Publication number
- CN103377125A CN103377125A CN 201210125658 CN201210125658A CN103377125A CN 103377125 A CN103377125 A CN 103377125A CN 201210125658 CN201210125658 CN 201210125658 CN 201210125658 A CN201210125658 A CN 201210125658A CN 103377125 A CN103377125 A CN 103377125A
- Authority
- CN
- China
- Prior art keywords
- code
- current tested
- central repository
- operation result
- tested 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种代码测试方法,包括获取访问中央仓库的权限令牌;应用所述权限令牌提取中央仓库中的中央仓库代码,合并所述中央仓库代码和当前被测试代码生成可运行***;运行所述可运行***,获取第一运行结果;依据所述第一运行结果判断所述当前被测试代码是否满足预设的代码提交规则,当满足时,将所述当前被测试代码提交至所述中央仓库,并释放所述权限令牌。本发明实施例通过获取访问中央仓库的权限令牌,在进行当前测试代码与中央仓库代码合并测试时,其他被测试代码无法访问中央仓库代码,保证了中央仓库代码版本的稳健性,提高了被测试代码的测试准确率。
Description
技术领域
本申请涉及软件测试领域,特别涉及一种代码测试方法、装置及***。
背景技术
软件代码开发完成后,为了检验代码的可行性,需要对代码进行代码测试,依据测试信息重新对代码进行编写,从而对代码存在的缺陷进行修正。
目前,对代码的测试一般采用脚本测试方法,即在被测试代码开发完成后提交至用于存放可运行代码的中央仓库,由含有被测试代码的中央仓库代码生成最新版本的可运行的***,对该***进行运行测试,依据测试信息重新对被测试代码进行编写。
但在上述代码测试过程中,当出现多个被测试代码提交至中央仓库进行测试时,由于这些被测试代码的不确定性及这些被测试代码提交至中央仓库的提交时间不一致性,会使得含有被测试代码的中央仓库代码具有不确定性即中央仓库代码版本不稳定,导致中央仓库代码生成的***同样具有不确定性,使得被测试代码的当前测试信息与实际测试信息不一致,从而降低被测试代码的测试准确率。
同时,在上述代码测试中,若当前被测试代码未通过测试,必须在中央仓库中删除当前被测试代码,之后再对被测试代码重新编写测试,从而导致代码测试具有延后性,降低了测试效率。
发明内容
本申请所要解决的技术问题是提供一种代码测试方法、装置及***,用以解决现有技术中由于多个被测试代码的不确定性导致中央仓库代码具有不确定性,从而降低测试的准确率,同时,当前被测试代码未通过测试时,必须在中央仓库中删除当前被测试代码,之后再对被测试代码重新编写测试,,从而导致代码测试具有延后性,降低了测试效率的技术问题。
本申请提供了一种代码测试方法,包括:
获取访问中央仓库的权限令牌;
应用所述权限令牌提取中央仓库中的中央仓库代码,合并所述中央仓库代码和当前被测试代码生成可运行***;
运行所述可运行***,获取第一运行结果;
依据所述第一运行结果判断所述当前被测试代码是否满足预设的代码提交规则,当满足时,将所述当前被测试代码提交至所述中央仓库,并释放所述权限令牌。
上述方法,优选地,当依据所述第一运行结果判断所述当前被测试代码不满足所述代码提交规则时,所述方法还包括:
释放所述权限令牌,依据所述第一运行结果重新编写所述当前被测试代码,并重新获取所述权限令牌。
上述方法,优选地,在所述将当前被测试代码提交至所述中央仓库之后,在所述释放所述权限令牌之前,所述方法还包括:
运行含有所述当前被测试代码的中央仓库代码,获取第二运行结果;
依据所述第二运行结果判断所述当前被测试代码是否满足预设的代码存储规则,当不满足时,删除所述中央仓库中的当前被测试代码,释放所述权限令牌。
上述方法,优选地,在所述删除所述中央仓库中的当前被测试代码,释放所述权限令牌之后,所述方法还包括:
依据所述第二运行结果重新编写所述当前被测试代码,并重新获取所述权限令牌。
上述方法,优选地,在所述获取所述权限令牌之前,所述方法还包括:
运行当前被测试代码,获取第三运行结果;
依据所述第三运行结果判断所述当前被测试代码是否满足预设的令牌获取规则,当不满足时,依据所述第三运行结果重新编写所述当前被测试代码,并重新获取所述权限令牌。
本申请还提供了一种代码测试装置,用于实现上述方法,所述装置包括代码提取单元、第一运行结果获取单元和第一逻辑执行单元,其中:
所述代码提取单元,用于获取可问中央仓库的权限令牌,应用所述权限令牌提取中央仓库中的中央仓库代码,合并所述中央仓库代码和当前被测试代码生成可运行***;
所述第一结果获取单元,用于运行所述代码提取单元生成的可运行***,获取第一运行结果;
所述第一逻辑执行单元,用于依据所述第一运行结果判断所述当前被测试代码是否满足预设的代码提交规则,当满足时,将所述当前被测试代码提交至所述中央仓库,并释放所述权限令牌。
上述装置,优选地:
所述第一逻辑执行单元,还用于当依据所述第一运行结果判断所述当前被测试代码不满足所述代码提交规则时,释放所述权限令牌,依据所述第一运行结果重新编写所述当前被测试代码,并触发所述代码提取单元。
上述装置,优选地,还包括第二结果获取单元和第二逻辑执行单元,其中:
所述第二结果获取单元,用于在所述第一逻辑执行单元将所述当前被测试代码提交至所述中央仓库后,运行含有所述当前被测试代码的中央仓库代码,获取第二运行结果;
所述第二逻辑执行单元,用于依据所述第二运行结果判断所述当前被测试代码是否满足预设的代码存储规则,如果是,触发所述第一逻辑执行单元释放所述权限令牌,否则,删除所述中央仓库中的当前被测试代码,触发所述第一逻辑执行单元释放所述权限令牌。
上述装置,优选地:
所述第二逻辑执行单元,还用于在释放所述权限令牌后,依据所述第二运行结果重新编写所述当前被测试代码,并触发所述代码提取单元。
上述装置,优选地,所述装置还包括第三结果获取单元和第三逻辑执行单元,其中:
所述第三结果获取单元,用于在所述代码提取单元获取所述权限令牌之前,运行所述当前被测试代码,获取第三运行结果;
所述第三逻辑执行单元,用于依据所述第三运行结果判断所述当前被测试代码是否满足预设的权限令牌获取规则,如果是,触发所述代码提取单元,否则,依据所述第三运行结果重新编写所述当前被测试代码,并触发所述第三结果获取单元或所述代码提取单元。
本申请还提供了一种代码测试***,包括如上述任意一项所述的代码测试装置。
由上述方案可知,本申请提供的一种代码测试方法、装置及***通过获取访问中央仓库的权限令牌,在进行当前测试代码与中央仓库代码合并测试时,其他被测试代码无法访问中央仓库代码,保证了中央仓库代码版本的稳健性,提高了被测试代码的测试准确率。
同时,本申请提供的一种代码测试方法、装置及***通过获取访问中央仓库的权限令牌将中央仓库代码提取后,与当前被测试代码合并进行测试,当测试通过后方可将当前被测试代码提交至中央仓库,从而避免了现有技术中由于当前被测试代码未通过测试时,必须删除中央仓库中当前被测试代码,之后再对被测试代码重新编写测试导致的延后性,提高了测试效率。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种代码测试方法实施例一的流程图;
图2为本申请提供的一种代码测试方法实施例一的另一流程图;
图3为本申请提供的一种代码测试方法实施例二的流程图;
图4为本申请提供的一种代码测试方法实施例二的另一流程图;
图5为本申请提供的一种代码测试方法实施例三的流程图;
图6为本申请提供的一种代码测试装置实施例一的结构示意图;
图7为本申请提供的一种代码测试装置实施例二的结构示意图;
图8为本申请提供的一种代码测试装置实施例三的结构示意图;
图9为本申请提供的一种代码测试***实施例的总体架构图;
图10为本申请提供的一种代码测试***实施例的运行时序图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1,其示出了本申请提供的一种代码测试方法实施例一的流程图,所述方法可以包括以下步骤:
步骤101:获取访问中央仓库的权限令牌。
其中,所述权限令牌为单令牌,即在本实施例进行代码测试时,中央仓库只有一个权限令牌,某一时段只有一个测试项目运行。
其中,所述权限令牌还可以为多令牌,此时需要对该权限令牌进行编号,在多个测试项目进行测试时,可以通过获取不同编号的权限令牌,排队进行被测试代码的测试工作,其测试方法与本申请提供的测试方法可以相同。
其中,所述中央仓库具体为Git中央仓库。
步骤102:应用所述权限令牌提取中央仓库代码,合并所述中央仓库代码和当前被测试代码生成可运行***。
其中,在开始测试当前被测试代码时,首先获取所述访问中央仓库的单权限令牌,此时,其他被测试代码需要进行测试时,必须等待所述当前被测试代码将获取的权限令牌释放之后,再对该权限令牌进行获取,从而进行代码测试。
其中,在实际应用中,启动当前被测试代码的测试之后,触发获取权限令牌的指令,依据该指令进行权限令牌的获取,并返回获取结果,若获取失败,则结束本次测试,否则,执行后续方法步骤。
具体地,获取所述权限令牌,依据该令牌提取出中央仓库中存储的代码,并在本地将其与当前被测试代码进行合并,生成一个可运行***。若合并失败,则结束本次测试,并释放所述权限令牌。
步骤103:运行所述可运行***,获取第一运行结果。
其中,当所述步骤102中生成所述可运行***之后,运行所述可运行***,并获取所述可运行***的运行结果,称为第一运行结果,即当前被测试代码的第一测试信息。具体地,所述步骤103也可以理解为,在所述步骤102生成所述可运行***之后,对所述可运行***进行测试,可以通过生成脚本框架等方式对其进行测试,获取第一测试信息即第一运行结果。
步骤104:依据所述第一运行结果判断所述当前被测试代码是否满足预设的代码提交规则,当满足时,将所述当前被测试代码提交至所述中央仓库,并释放所述权限令牌。
其中,依据所述第一运行结果即第一测试信息,判断所述当前被测试代码是否满足所述代码提交规则,当满足时,说明所述当前被测试代码满足提交规则,此时,将所述当前被测试代码提交至所述中央仓库,完成所述当前被测试代码的测试工作,释放所述权限令牌。
由上述可知,本申请提供的一种代码测试方法实施例一通过获取访问中央仓库的单权限令牌,在进行当前测试代码与中央仓库代码合并测试时,其他被测试代码无法访问中央仓库代码,同时,在当前被测试代码与中央仓库代码进行合并测试通过后方可将被测试代码提交至中央仓库,从而保证了中央仓库代码版本的稳健性,提高了被测试代码的测试准确率,避免了现有技术中由于当前被测试代码未通过测试时,必须删除中央仓库中当前被测试代码,之后再对被测试代码重新编写测试导致的延后性,提高了测试效率。
参考图2,其示出了本申请提供的一种代码测试方法实施例一的另一流程图,基于上述方法实施例,所述方法包括以下步骤:
步骤201:获取访问中央仓库的权限令牌。
步骤202:依据所述权限令牌提取中央仓库代码,合并所述中央仓库代码和当前被测试代码生成可运行***。
步骤203:运行所述可运行***,获取第一运行结果。
步骤204:依据所述第一运行结果判断所述当前被测试代码是否满足预设的代码提交规则,如果是,执行步骤205,否则,执行步骤206;
步骤205:将所述当前被测试代码提交至所述中央仓库,并释放所述权限令牌;
步骤206:释放所述权限令牌,依据所述第一运行结果重新编写所述当前被测试代码,并重新获取所述权限令牌。
其中,所述步骤201至所述步骤203分别与上述实施例中所述步骤101至所述步骤103中所述一致,所述步骤205与上述实施例中所述步骤104中所述一致,在此不再阐述。
其中,在所述步骤204中,依据所述第一运行结果判断所述当前被测试代码是否满足所述代码提交规则,如果是,执行所述205,将所述当前被测试代码提交至所述中央仓库,并释放所述权限令牌,否则,执行所述步骤206,即释放所述权限令牌,依据所述第一运行结果重新编写所述当前被测试代码,即修改所述当前被测试代码中存在的缺陷,并重新获取所述权限令牌,对所述重新编写的当前被测试代码进行测试。
由上述方案可知,本申请方法实施例一通过依据所述第一运行结果重新编写所述当前被测试代码,并对所述重新编写的当前被测试代码进行测试,从而使得当前被测试代码能够被循环测试,直至其满足中央仓库的代码提交规则,实现了代码测试的循环自动化,提高了代码测试的效率。
参考图3,其示出了本申请提供的一种代码测试方法实施例二的流程图,基于上述方法实施例一,所述方法可以包括以下步骤:
步骤301:获取访问中央仓库的权限令牌。
步骤302:依据所述权限令牌提取中央仓库代码,合并所述中央仓库代码和当前被测试代码生成可运行***。
步骤303:运行所述可运行***,获取第一运行结果。
其中,所述步骤301至所述步骤303的详细说明请分别参考本申请方法实施例一中所述步骤101至所述步骤103,在此不再赘述。
步骤304:依据所述第一运行结果判断所述当前被测试代码满足预设的代码提交规则时,将所述当前被测试代码提交至所述中央仓库。
其中,依据所述第一运行结果即第一测试信息,判断所述当前被测试代码是否满足所述代码提交规则,当满足时,说明所述当前被测试代码满足提交规则,此时,将所述当前被测试代码提交至所述中央仓库。
步骤305:运行含有所述当前被测试代码的中央仓库代码,获取第二运行结果。
其中,在所述步骤304将所述当前被测试代码提交至所述中央仓库之后,对含有所述当前被测试代码的中央仓库代码整体进行测试,即运行含有所述当前被测试代码的中央仓库代码,具体地,由所述含有当前被测试代码的中央仓库代码生成可运行***,并运行该可运行***,获取其运行结果,称为第二运行结果,即所述当前被测试代码的第二测试信息。
步骤306:依据所述第二运行结果判断所述当前被测试代码是否满足预设的代码存储规则,如果是,执行步骤307,否则,执行步骤308。
步骤307:释放所述权限令牌。
步骤308:删除所述中央仓库中的当前被测试代码,释放所述权限令牌。
其中,在所述步骤305获取到所述第二运行结果之后,依据所述第二运行结果即第二测试信息判断所述当前被测试代码是否满足所述代码存储规则,即判断所述当前被测试代码是否能够在所述中央仓库中存储,如果是,则说明所述当前被测试代码满足所述中央仓库的代码存储规则,完成当前被测试代码的测试工作,即可执行所述步骤307,释放所述权限令牌,否则,说明所述当前被测试代码虽然能够在本地测试时通过测试,但无法在中央仓库中存储,即所述当前被测试代码未通过测试,此时需要执行所述步骤308,删除所述中央仓库中的当前被测试代码,释放所述权限令牌。
由上述方案可知,本申请提供的一种代码测试方法实施例二通过获取访问中央仓库的单权限令牌,在进行当前测试代码与中央仓库代码合并测试时,其他被测试代码无法访问中央仓库代码,同时,在当前被测试代码与中央仓库代码进行合并测试通过后方可将被测试代码提交至中央仓库,并对含有当前被测试代码的中央仓库代码进行测试,从而保证了中央仓库代码版本的稳健性,更进一步地提高了被测试代码的测试准确率,避免了现有技术中由于当前被测试代码未通过测试时,必须删除中央仓库中当前被测试代码,之后再对被测试代码重新编写测试导致的延后性,提高了测试效率。
参考图4,其示出了本申请实施例二的另一流程图,基于上述本申请实施例二,所述方法还包括以下步骤:
步骤409:依据所述第二运行结果重新编写所述当前被测试代码,并重新获取所述权限令牌。
其中,所述步骤401至所述步骤408分别与上述本申请实施例二中所述步骤301至所述步骤308中所述一致,在此不再阐述。
其中,在所述步骤406中判断出所述当前被测试代码不满足所述中央仓库的代码存储规则时,执行所述步骤408之后,可以依据所述第二运行结果即所述当前被测试代码的第二测试信息对其自身进行编写,即修改所述当前被测试代码存在的缺陷,并重新获取所述权限令牌,对重新编写的当前被测试代码进行测试。
由上述可知,本申请实施例二通过对未通过测试的当前被测试代码进行修改编写并对其重新测试,使得当前被测试代码能够被循环测试,直至其满足中央仓库的代码存储规则,实现了代码测试的循环自动化,提高了代码测试的效率。
参考图5,其示出了本申请提供的一种代码测试方法实施例三的部分流程图,基于本申请方法实施例一,在所述步骤102之前,所述方法还可以包括以下步骤:
步骤501:运行当前被测试代码,获取第三运行结果。
其中,在获取所述权限令牌之前,首先对当前被测试代码自身进行测试,即运行当前被测试代码,具体地,依据所述当前被测试代码生成脚本框架,运行该框架,获取其运行结果,称为第三运行结果,即所述当前被测试代码的第三测试信息。
步骤502:依据所述第三运行结果判断所述当前被测试代码不满足预设的令牌获取规则时,依据所述第三运行结果重新编写所述当前被测试代码,并重新获取所述权限令牌。
其中,依据所述第三运行结果即得到当前被测试代码的第三测试信息,判断所述当前被测试代码是否满足所述令牌获取规则,如果是,即可执行所述步骤102,获取所述权限令牌,否则,说明所述当前被测试代码存在自身基本缺陷,即可依据所述第三运行结果重新编写所述当前被测试代码,即修改所述当前被测试代码存在的缺陷,并重新获取所述权限令牌,对所述重新编写的当前被测试代码进行测试。
其中,所述步骤501与所述步骤502的执行顺序可以在所述步骤101之前,还可以在所述步骤101之后。
由上述可知,本申请提供的一种代码测试方法实施例三在通过获取访问中央仓库的单权限令牌之前,首先对被测试代码进行自身测试,当所述当前被测试代码通过自身测试之后,再获取所述权限令牌,进行当前测试代码与中央仓库代码合并测试,此时其他被测试代码无法访问中央仓库代码,同时,在当前被测试代码与中央仓库代码进行合并测试通过后方可将被测试代码提交至中央仓库,从而保证了中央仓库代码版本的稳健性,更进一步地提高了被测试代码的测试准确率,避免了现有技术中由于当前被测试代码未通过测试时,必须删除中央仓库中当前被测试代码,之后再对被测试代码重新编写测试导致的延后性,提高了测试效率。
参考图6,其示出了本申请提供的一种代码测试装置实施例一的结构示意图,用于实现上述本申请方法实施例一,所述装置包括代码提取单元601、第一运行结果获取单元602和第一逻辑执行单元603,其中:
所述代码提取单元601,用于获取访问中央仓库的权限令牌,应用所述权限令牌提取中央仓库中的中央仓库代码,合并所述中央仓库代码和当前被测试代码生成可运行***。
其中,所述权限令牌为单令牌,即在本实施例进行代码测试时,中央仓库只有一个权限令牌,某一时段只有一个测试项目运行。所述权限令牌还可以为多令牌,此时需要对该权限令牌进行编号,在多个测试项目进行测试时,可以通过获取不同编号的权限令牌,排队进行被测试代码的测试工作,其测试方法与本申请提供的测试方法可以相同。
其中,在本申请实施例一开始测试当前被测试代码时,首先通过所述代码提取单元601获取所述访问中央仓库的单权限令牌,此时,其他被测试代码需要进行测试时,必须等待所述当前被测试代码将获取的权限令牌释放之后,再对该权限令牌进行获取,从而进行代码测试。
其中,具体的,当前被测试代码的测试被启动之后,触发获取权限令牌的指令,依据该指令进行权限令牌的获取,并返回获取结果,若获取失败,则结束本次测试,否则,执行后续方法步骤。
具体地,所述代码提取单元601获取所述权限令牌,依据该令牌提取出中央仓库中存储的代码,并在本地将其与当前被测试代码进行合并,生成一个可运行***。若合并失败,则本申请实施例结束本次测试,并释放所述权限令牌。其中,所述本地相对于所述中央仓库而言。
所述第一结果获取单元602,用于运行所述代码提取单元601生成的可运行***,获取第一运行结果。
其中,当所述代码提取单元601中生成所述可运行***之后,由所述第一结果获取单元602运行所述可运行***,并获取所述可运行***的运行结果,称为第一运行结果,即当前被测试代码的第一测试信息。具体地,在所述代码提取单元601生成所述可运行***之后,所述第一结果获取单元602对所述可运行***进行测试,可以通过生成脚本框架等方式对其进行测试,获取第一测试信息即第一运行结果。
所述第一逻辑执行单元603,用于依据所述第一运行结果判断所述当前被测试代码是否满足预设的代码提交规则,当满足时,将所述当前被测试代码提交至所述中央仓库,并释放所述权限令牌。
其中,所述第一逻辑执行单元603依据所述第一运行结果即第一测试信息,判断所述当前被测试代码是否满足所述代码提交规则,当满足时,说明所述当前被测试代码满足提交规则,此时,将所述当前被测试代码提交至所述中央仓库,完成所述当前被测试代码的测试工作,释放所述权限令牌。
由上述可知,本申请提供的一种代码测试装置实施例一通过获取访问中央仓库的单权限令牌,在进行当前测试代码与中央仓库代码合并测试时,其他被测试代码无法访问中央仓库代码,同时,在当前被测试代码与中央仓库代码进行合并测试通过后方可将被测试代码提交至中央仓库,从而保证了中央仓库代码版本的稳健性,提高了被测试代码的测试准确率,避免了现有技术中由于当前被测试代码未通过测试时,必须删除中央仓库中当前被测试代码,之后再对被测试代码重新编写测试导致的延后性,提高了测试效率。
基于上述装置实施例一,所述第一逻辑执行单元603还用于当依据所述第一运行结果判断所述当前被测试代码不满足所述代码提交规则时,释放所述权限令牌,依据所述第一运行结果重新编写所述当前被测试代码,并触发所述代码提取单元。
其中,当所述第一逻辑执行单元603判断出所述当前被测试代码不满足所述代码提交规则时,可以依据所述第一运行结果即所述当前被测试代码的第一测试信息重新编写所述当前被测试代码,即修改所述当前被测试代码中存在的缺陷,并对触发所述代码提取单元601。
由上述方案可知,本申请装置实施例一通过依据所述第一运行结果重新编写所述当前被测试代码,并对所述重新编写的当前被测试代码进行测试,从而使得当前被测试代码能够被循环测试,直至其满足中央仓库的代码提交规则,实现了代码测试的循环自动化,提高了代码测试的效率。
参考图7,其示出了本申请提供的一种代码测试装置实施例二的结构示意图,基于上述装置实施例一,所述装置还包括第二结果获取单元604和第二逻辑执行单元605,其中:
所述第二结果获取单元604,用于在所述第一逻辑执行单元603将所述当前被测试代码提交至所述中央仓库后,运行含有所述当前被测试代码的中央仓库代码,获取第二运行结果。
其中,在所述第一逻辑执行单元603将所述当前被测试代码提交至所述中央仓库之后,所述第二结果获取单元604对含有所述当前被测试代码的中央仓库代码整体进行测试,即运行含有所述当前被测试代码的中央仓库代码,具体地,由所述含有当前被测试代码的中央仓库代码生成可运行***,并运行该可运行***,获取其运行结果,称为第二运行结果,即所述当前被测试代码的第二测试信息。
所述第二逻辑执行单元605,用于依据所述第二运行结果判断所述当前被测试代码是否满足预设的代码存储规则,如果是,触发所述第一逻辑执行单元603释放所述权限令牌,否则,删除所述中央仓库中的当前被测试代码,并触发所述第一逻辑执行单元603释放所述权限令牌。
其中,在所述第二结果获取单元604获取到所述第二运行结果之后,所述第二逻辑执行单元605依据所述第二运行结果即第二测试信息判断所述当前被测试代码是否满足所述代码存储规则,即判断所述当前被测试代码是否能够在所述中央仓库中存储,如果是,则说明所述当前被测试代码满足所述中央仓库的代码存储规则,完成当前被测试代码的测试工作,即可触发所述第一逻辑执行单元603释放所述权限令牌,具体地,可以发送释放指令至所述第一逻辑执行单元603,由所述第一逻辑执行单元603释放所述权限令牌,否则,说明所述当前被测试代码虽然能够在本地测试时通过测试,但无法在中央仓库中存储,即所述当前被测试代码未通过测试,此时需要删除所述中央仓库中的当前被测试代码,并触发所述第一逻辑执行单元603释放所述权限令牌。其中,所述本地测试是指非中央仓库内测试。
由上述方案可知,本申请提供的一种代码测试装置实施例二通过获取访问中央仓库的单权限令牌,在进行当前测试代码与中央仓库代码合并测试时,其他被测试代码无法访问中央仓库代码,同时,在当前被测试代码与中央仓库代码进行合并测试通过后方可将被测试代码提交至中央仓库,并对含有当前被测试代码的中央仓库代码进行测试,从而保证了中央仓库代码版本的稳健性,更进一步地提高了被测试代码的测试准确率,避免了现有技术中由于当前被测试代码未通过测试时,必须删除中央仓库中当前被测试代码,之后再对被测试代码重新编写测试导致的延后性,提高了测试效率。
基于上述装置实施例二,所述第二逻辑执行单元605还用于在释放所述权限令牌后,依据所述第二运行结果重新编写所述当前被测试代码,并触发所述代码提取单元601。
其中,当所述第二逻辑执行单元605判断出所述当前被测试代码不满足所述中央仓库的代码存储规则时,可以依据所述第二运行结果即所述当前被测试代码的第二测试信息重新编写所述当前被测试代码,即修改所述当前被测试代码中存在的缺陷,并对触发所述代码提取单元601。
由上述方案可知,本申请装置实施例二通过依据所述第二运行结果重新编写所述当前被测试代码,并对所述重新编写的当前被测试代码进行测试,从而使得当前被测试代码能够被循环测试,直至其满足中央仓库的代码提交规则,实现了代码测试的循环自动化,提高了代码测试的效率。
参考图8,其示出了本申请提供的一种代码测试装置实施例三的结构示意图,基于上述装置实施例一,所述装置还包括第三结果获取单元606和第三逻辑执行单元607,其中:
所述第三结果获取单元606,用于在所述代码提取单元601获取所述权限令牌之前,运行所述当前被测试代码,获取第三运行结果;
其中,在所述代码提取单元601获取所述权限令牌之前,首先由所述第三结果获取单元606对当前被测试代码自身进行测试,即运行当前被测试代码,具体地,所述第三结果获取单元606可以依据所述当前被测试代码生成脚本框架,运行该框架,获取其运行结果,称为第三运行结果,即所述当前被测试代码的第三测试信息。
所述第三逻辑执行单元607,用于依据所述第三运行结果判断所述当前被测试代码是否满足预设的权限令牌获取规则,如果是,触发所述代码提取单元601,否则,依据所述第三运行结果重新编写所述当前被测试代码,并触发所述第三结果获取单元606或所述代码提取单元601。
其中,所述第三逻辑执行单元607依据所述第三运行结果即得到当前被测试代码的第三测试信息,判断所述当前被测试代码是否满足所述令牌获取规则,如果是,即可触发所述代码提取单元601获取所述权限令牌,否则,说明所述当前被测试代码存在自身基本缺陷,即可依据所述第三运行结果重新编写所述当前被测试代码,即修改所述当前被测试代码存在的缺陷,并触发所述第三结果获取单元606重新进行所述当前被测试代码的运行测试,或触发所述代码提取单元601获取所述权限令牌进行所述当前被测试代码的测试。
由上述可知,本申请提供的一种代码测试装置实施例三在通过获取访问中央仓库的单权限令牌之前,首先对被测试代码进行自身测试,当所述当前被测试代码通过自身测试之后,再获取所述权限令牌,进行当前测试代码与中央仓库代码合并测试,此时其他被测试代码无法访问中央仓库代码,同时,在当前被测试代码与中央仓库代码进行合并测试通过后方可将被测试代码提交至中央仓库,从而保证了中央仓库代码版本的稳健性,更进一步地提高了被测试代码的测试准确率,避免了现有技术中由于当前被测试代码未通过测试时,必须删除中央仓库中当前被测试代码,之后再对被测试代码重新编写测试导致的延后性,提高了测试效率。
本申请还提供了一种代码测试***实施例,所述***包括代码测试装置。所述代码测试装置的功能请参阅本申请装置实施例的具体说明,对此不再加以阐述。
其中,所述***基于中央仓库实现被测试代码的测试功能,中央仓库设置有令牌存储装置,用于存储预先设置的访问中央仓库的权限令牌。
参考图9,其示出了本申请***实施例在实际应用时的总体架构图,其中:
所述代码测试***与所述Git中央仓库集成于同一持续集成服务器或文件服务器中;
所述数据库,用于存储所述权限令牌。
其中,当开发者完成被测试代码的开发后,可以通过发送启动指令触发所述代码测试***,所述代码测试***被触发后,启动并获取所述数据库中存储的中央仓库的权限令牌,通过所述权限令牌提取出中央仓库代码与当前被测试代码进行合并,再进行测试,测试成功后,将所述当前被测试代码提交至所述中央仓库。具体地,当通过所述权限令牌提取出所述中央仓库代码与所述当前被测试代码进行合并后,生成可运行***,并运行该可运行***,获取其运行结果即所述当前被测试代码的第一测试信息,并依据该运行结果判断所述当前被测试代码为满足代码提交规则时,即测试成功,将所述当前被测试代码提交至所述中央仓库。
其中,为了降低因中央仓库代码版本的不稳定引起的错误,可以通过在所述当前被测试代码提交至中央仓库之前进行测试,对测试不通过的被测试代码回滚,即结束测试并对测试不通过的被测试代码进行重新编写。测试通过的被测试代码方可提交至中央仓库,保证中央仓库的稳健性。
其中,所述代码测试***具体可以通过编写自动测试脚本实现其功能。即当开发者完成代码编写任务后,点击实现所述代码测试***的自动测试脚本,开始对当前被测试代码进行测试。参考图10,其示出了本申请***实施例进行代码测试的时序图,所述权限令牌可以通过自动化测试服务管理,避免多个项目同时做出获取所述权限令牌的操作时引起的冲突,该自动化测试服务可以设置于所述持续集成服务或文件服务器中,还可以设置于所述数据库中,hudson工具为每个开发者构建一个项目,使得开发者之间互不影响,其中:
1001:开发者发送触发所述代码测试***进行启动的指令;
1002:所述启动指令发送至所述代码测试***;
1003:所述代码测试***接收所述启动指令,并启动,生成获取Git中央仓库权限令牌的指令;
1004:管理所述权限令牌的自动测试服务接收获取权限令牌的指令,并对该指令进行处理;
1005:所述自动测试服务对所述获取权限令牌的指令的处理结果返回至所述代码测试***;
1006:所述代码测试***依据所述获取权限令牌指令的处理结果判断出获取令牌失败,结束当前测试;
1007:所述代码测试***依据所述获取权限令牌指令的处理结果判断出获取令牌成功,获取所述权限令牌;
1008:所述代码测试***通过所述权限令牌生成Git中央仓库代码提取并与当前被测试代码进行合并的指令;
1009:所述代码测试***将代码提取及合并的指令发送至所述Git中央仓库;
1010:所述Git中央仓库接收到所述代码提取并合并的指令;
1011:所述Git中央仓库依据所述代码提取并合并的指令将所述Git中央仓库代码发送至所述代码测试***;
1012:所述代码测试***将提取的Git中央仓库代码与所述当前被测试代码进行合并;其中,所述当前被测试代码可以通过映射统一放在文件服务器上,提高代码提取速度;
1013:当所述合并失败时,结束当前测试,释放所述权限令牌;
1014:当所述合并成功时,生成合并成功的结果指令;
1015:所述代码测试***依据所述合并成功的结果指令生成本地测试的指令;
1016:所述代码测试***依据所述本地测试的指令,将合并成功的所述Git中央仓库代码和所述当前被测试代码进行测试,即将其生成可运行***,并运行该可运行***,具体地,通过hudson工具进行本地测试;
1017:所述hudson工具将所述可运行***的运行结果发送至所述代码测试***;
1018:所述代码测试***依据所述可运行***的运行结果判断出所述当前被测试代码的测试失败时,结束当前测试,释放所述权限令牌;
1019:所述代码测试***依据所述可运行***的运行结果判断出所述当前被测试代码的测试成功时,生成测试成功的指令;
1020:所述代码测试***依据所述测试成功的指令,生成提交代码指令;
1021:所述代码测试***依据所述提交代码指令,将所述当前被测试代码提交至所述Git中央仓库;其中,每次运行测试提交代码可以通过脚本执行,避免因手工操作错误引起中央仓库的代码版本不稳定的问题;
1022:所述Git中央仓库将所述当前被测试代码的提交结果返回至所述代码测试***;
1023:当所述代码测试***依据所述提交结果判断出所述当前被测试代码的提交失败时,生成提交失败指令;
1024:所述代码测试***依据所述提交失败指令生成回滚指令;
1025:将所述Git中央仓库依据所述代码测试***发送的所述回滚指令,将其自身代码返回至测试之前的正确版本,进行所述当前被测试代码的提交;
1026:回滚后的提交结果返回所述代码测试***;
1027:所述代码测试***依判断出所述回滚后的提交结果为失败时,结束当前测试,释放所述权限令牌;
1028:所述代码测试***判断出所述回滚后的提交结果为成功时,生成回滚提交成功的指令;
1029:所述代码测试***依据所述回滚提交成功的指令生成总体测试的指令:其中,所述总体测试是指在所述中央仓库内对含有所述当前被测试代码的中央仓库代码进行测试。
1030:所述代码测试***依据所述总体测试指令,通过所述hudson工具将含有所述当前被测试代码的Git中央仓库代码进行总体测试;
1031:所述hudson工具返回总体测试结果至所述代码测试***:
1032:所述代码测试***依据所述总体测试结果判断出所述总体测试失败时,生成总体测试失败的指令;
1033:所述代码测试***依据所述总体测试失败的指令生成代码回滚的指令,将所述Git中央仓库代码返回至测试之前的正确版本,进行总体测试;
1034:所述代码测试***判断出回滚后的总体测试失败时,结束当前测试,释放所述权限令牌;
1035:所述代码测试***判断出回滚后的总体测试成功时,生成总体测试成功指令;
1036:依据所述总体测试成功指令,显示当前测试成功信息,释放所述权限令牌。
由上述可知,本申请提供的一种代码测试***实施例通过获取访问中央仓库的单权限令牌,在进行当前测试代码与中央仓库代码合并测试时,其他被测试代码无法访问中央仓库代码,同时,在当前被测试代码与中央仓库代码进行合并测试通过后方可将被测试代码提交至中央仓库,并对含有当前被测试代码的中央仓库代码进行测试,从而保证了中央仓库代码版本的稳健性,更进一步地提高了被测试代码的测试准确率,避免了现有技术中由于当前被测试代码未通过测试时,必须删除中央仓库中当前被测试代码,之后再对被测试代码重新编写测试导致的延后性,提高了测试效率。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法,还存在另外的相同要素。
以上对本申请所提供的一种代码测试方法、装置及***进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (11)
1.一种代码测试方法,其特征在于,包括:
获取访问中央仓库的权限令牌;
应用所述权限令牌提取中央仓库中的中央仓库代码,合并所述中央仓库代码和当前被测试代码生成可运行***;
运行所述可运行***,获取第一运行结果;
依据所述第一运行结果判断所述当前被测试代码是否满足预设的代码提交规则,当满足时,将所述当前被测试代码提交至所述中央仓库,并释放所述权限令牌。
2.根据权利要求1所述的方法,其特征在于,当依据所述第一运行结果判断所述当前被测试代码不满足所述代码提交规则时,所述方法还包括:
释放所述权限令牌,依据所述第一运行结果重新编写所述当前被测试代码,并重新获取所述权限令牌。
3.根据权利要求1所述的方法,其特征在于,在所述将当前被测试代码提交至所述中央仓库之后,在所述释放所述权限令牌之前,所述方法还包括:
运行含有所述当前被测试代码的中央仓库代码,获取第二运行结果;
依据所述第二运行结果判断所述当前被测试代码是否满足预设的代码存储规则,当不满足时,删除所述中央仓库中的当前被测试代码,释放所述权限令牌。
4.根据权利要求3所述的方法,其特征在于,在所述删除所述中央仓库中的当前被测试代码,释放所述权限令牌之后,所述方法还包括:
依据所述第二运行结果重新编写所述当前被测试代码,并重新获取所述权限令牌。
5.根据权利要求1所述的方法,其特征在于,在所述获取所述权限令牌之前,所述方法还包括:
运行当前被测试代码,获取第三运行结果;
依据所述第三运行结果判断所述当前被测试代码是否满足预设的令牌获取规则,当不满足时,依据所述第三运行结果重新编写所述当前被测试代码,并对重新获取所述权限令牌。
6.一种代码测试装置,其特征在于,包括代码提取单元、第一运行结果获取单元和第一逻辑执行单元,其中:
所述代码提取单元,用于获取访问中央仓库的权限令牌,应用所述权限令牌提取中央仓库中的中央仓库代码,合并所述中央仓库代码和当前被测试代码生成可运行***;
所述第一结果获取单元,用于运行所述代码提取单元生成的可运行***,获取第一运行结果;
所述第一逻辑执行单元,用于依据所述第一运行结果判断所述当前被测试代码是否满足预设的代码提交规则,当满足时,将所述当前被测试代码提交至所述中央仓库,并释放所述权限令牌。
7.根据权利要求6所述的装置,其特征在于:
所述第一逻辑执行单元,还用于当依据所述第一运行结果判断所述当前被测试代码不满足所述代码提交规则时,释放所述权限令牌,依据所述第一运行结果重新编写所述当前被测试代码,并触发所述代码提取单元。
8.根据权利要求6所述的装置,其特征在于,还包括第二结果获取单元和第二逻辑执行单元,其中:
所述第二结果获取单元,用于在所述第一逻辑执行单元将所述当前被测试代码提交至所述中央仓库后,运行含有所述当前被测试代码的中央仓库代码,获取第二运行结果;
所述第二逻辑执行单元,用于依据所述第二运行结果判断所述当前被测试代码是否满足预设的代码存储规则,如果是,触发所述第一逻辑执行单元释放所述权限令牌,否则,删除所述中央仓库中的当前被测试代码,并触发所述第一逻辑执行单元释放所述权限令牌。
9.根据权利要求8所述的装置,其特征在于:
所述第二逻辑执行单元,还用于在释放所述权限令牌后,依据所述第二运行结果重新编写所述当前被测试代码,并触发所述代码提取单元。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括第三结果获取单元和第三逻辑执行单元,其中:
所述第三结果获取单元,用于在所述代码提取单元获取所述权限令牌之前,运行所述当前被测试代码,获取第三运行结果;
所述第三逻辑执行单元,用于依据所述第三运行结果判断所述当前被测试代码是否满足预设的权限令牌获取规则,如果是,触发所述代码提取单元,否则,依据所述第三运行结果重新编写所述当前被测试代码,并触发所述第三结果获取单元或所述代码提取单元。
11.一种代码测试***,其特征在于,包括如上述权利要求6至10任意一项所述的代码测试装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210125658 CN103377125A (zh) | 2012-04-25 | 2012-04-25 | 一种代码测试方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210125658 CN103377125A (zh) | 2012-04-25 | 2012-04-25 | 一种代码测试方法、装置及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103377125A true CN103377125A (zh) | 2013-10-30 |
Family
ID=49462275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201210125658 Pending CN103377125A (zh) | 2012-04-25 | 2012-04-25 | 一种代码测试方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103377125A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677996A (zh) * | 2016-01-13 | 2016-06-15 | 浪潮集团有限公司 | 一种芯片验证中确定回归测试版本异常源头的方法 |
CN106302667A (zh) * | 2016-08-04 | 2017-01-04 | 上海携程商务有限公司 | 代码管理***及方法 |
CN107145438A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 代码测试方法、代码测试装置及代码测试*** |
CN107203706A (zh) * | 2016-03-16 | 2017-09-26 | 阿里巴巴集团控股有限公司 | App内部权限的检测方法及装置 |
CN109814849A (zh) * | 2017-11-20 | 2019-05-28 | 迈普通信技术股份有限公司 | 信息同步方法及装置 |
CN111382049A (zh) * | 2018-12-28 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 代码提交方法、装置及电子设备 |
CN112799967A (zh) * | 2021-03-29 | 2021-05-14 | 广州嘉为科技有限公司 | 基于git的测试脚本回写测试用例方法、***、设备及介质 |
-
2012
- 2012-04-25 CN CN 201210125658 patent/CN103377125A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677996A (zh) * | 2016-01-13 | 2016-06-15 | 浪潮集团有限公司 | 一种芯片验证中确定回归测试版本异常源头的方法 |
CN105677996B (zh) * | 2016-01-13 | 2018-10-23 | 浪潮集团有限公司 | 一种芯片验证中确定回归测试版本异常源头的方法 |
CN107145438A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 代码测试方法、代码测试装置及代码测试*** |
CN107203706A (zh) * | 2016-03-16 | 2017-09-26 | 阿里巴巴集团控股有限公司 | App内部权限的检测方法及装置 |
CN107203706B (zh) * | 2016-03-16 | 2020-04-14 | 阿里巴巴集团控股有限公司 | App内部权限的检测方法及装置 |
CN106302667A (zh) * | 2016-08-04 | 2017-01-04 | 上海携程商务有限公司 | 代码管理***及方法 |
CN109814849A (zh) * | 2017-11-20 | 2019-05-28 | 迈普通信技术股份有限公司 | 信息同步方法及装置 |
CN111382049A (zh) * | 2018-12-28 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 代码提交方法、装置及电子设备 |
CN111382049B (zh) * | 2018-12-28 | 2023-05-02 | 阿里云计算有限公司 | 代码提交方法、装置及电子设备 |
CN112799967A (zh) * | 2021-03-29 | 2021-05-14 | 广州嘉为科技有限公司 | 基于git的测试脚本回写测试用例方法、***、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103377125A (zh) | 一种代码测试方法、装置及*** | |
JP6968903B2 (ja) | 分散コンピューティングシステムのための、バックアップおよび復元フレームワーク | |
US11861375B2 (en) | Configuration for application using microservices | |
CN106030533B (zh) | 通过拆分过程执行自动重试事务 | |
CN102934114B (zh) | 用于文件***的检查点 | |
CN104252481B (zh) | 主从数据库一致性的动态校验方法和装置 | |
US8201148B2 (en) | Guided development and testing for computer code | |
CN106201613A (zh) | 预热软件安装 | |
KR101597780B1 (ko) | 소프트웨어 코드의 시각적 구현 방법 및 장치 | |
CN103745016A (zh) | 利用恢复日志检测数据库事件 | |
US20140026120A1 (en) | Unit testing an enterprise javabeans (ejb) bean class | |
US9384020B2 (en) | Domain scripting language framework for service and system integration | |
CN105988798B (zh) | 补丁处理方法及装置 | |
CN106855871B (zh) | 一种数据迁移的方法和装置 | |
US20110078499A1 (en) | Business process error handling through process instance backup and recovery | |
CN103809871A (zh) | 应用程序图标的处理方法和移动终端 | |
CN101379504B (zh) | 用于复合应用的基于角色的访问控制管理的方法及*** | |
US20140208169A1 (en) | Domain scripting language framework for service and system integration | |
CN105074656B (zh) | 管理并发谓词表达式的方法和装置 | |
CN111078274A (zh) | 一种代码开发方法、装置、电子设备和计算机存储介质 | |
CN107229414A (zh) | 存储空间回收方法及装置 | |
CN111309624B (zh) | 测试方法、装置、设备及存储介质 | |
CN107391539B (zh) | 事务处理方法、服务器和存储介质 | |
CN110750435A (zh) | 一种测试用例的管理方法和装置 | |
CN102682038A (zh) | 一种数据库变更方法以及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20131030 |