具体实施方式
下面结合附图和具体实施例对本发明做进一步详细的说明。
如图1所示为本发明一种自动化测试方法的工作流程图,包括:
步骤S101,初始化至少一个统计参数并保存在总结页面;
步骤S102,响应于包括测试场景标识和测试用例标识的传入请求,将由所述测试场景标识所表示的测试场景作为当前测试场景,将由所述测试用例标识所表示的测试用例作为当前测试用例;
步骤S103,将所述场景标识保存在场景页面,将所述用例标识保存在用例页面,将所述当前测试用例所包括的步骤的步骤信息保存在步骤页面,根据所述当前测试用例的传入通过状态,更新所述统计参数;
步骤S104,响应于显示请求,分别显示所述总结页面、所述场景页面、所述用例页面、和/或所述步骤页面。
当执行自动化测试时,会执行多个测试用例,而每个测试用例包括至少一个步骤。而每个测试用例也会属于一个测试场景。在测试执行后,每个测试用例会得到一个测试是否通过的通过状态。在步骤S103中,传入通过状态指的就是测试用例在执行完毕后得到的通过状态。
在执行自动化测试时,当完成执行测试用例后,发出传入请求,则自动触发步骤S102。而当需要显示测试报告时,则发出显示请求,触发步骤S104,显示总结页面、所述场景页面、所述用例页面、和/或所述步骤页面。
本发明将测试场景、测试用例和测试步骤采用具有层次关系的方式进行保存,使得能够通过层次方式显示测试报告。
同时,多次执行的内容可以自动追加。这样多次执行的报告合并起来比较方便。
在其中一个实施例中,还包括:
告警步骤,当所述统计参数达到预设的告警规则,则告警。
告警规则例如当某个统计参数大于预设阈值则表示达到告警规则,告警规则可以根据需要预设。告警可以在屏幕上通过颜色或者弹出对话框等方式进行告警,也可用通过声光告警装置实现告警。
在其中一个实施例中:
所述统计参数具体包括:测试场景总数目、测试用例总数目、测试步骤总数目、通过用例数目、失败用例数目、通过步骤数目、以及失败步骤数目;
所述步骤S103,具体包括:
场景初始化子步骤,如果所述场景标识已保存在场景页面,则执行测试用例判断子步骤,否则将所述测试场景总数目加一,将所述测试用例总数目加一,将所述测试步骤总数目加一,将所述场景标识保存在场景页面中,将所述当前场景的保存通过状态设置为通过,执行测试用例判断子步骤;
测试用例判断子步骤,包括:
如果所述测试用例标识已保存在用例页面,且所述当前测试用例的传入通过状态为通过,则将所述通过步骤数目加一,执行步骤保存子步骤;
如果所述测试用例标识已保存在用例页面,且所述当前测试用例的传入通过状态为失败,所述当前测试用例的保存通过状态为通过,则将所述当前场景的状态设置为失败,将所述失败用例数目加一,将所述通过用例数目减一,将所述失败步骤数目加一,将所述当前用例的保存通过状态设置为失败,执行步骤保存子步骤;
如果所述测试用例标识已保存在用例页面,且所述当前测试用例的传入通过状态为失败,所述当前测试用例的保存通过状态为失败,则将所述失败用例数目加一,将所述失败步骤数目加一,执行步骤保存子步骤;
如果所述测试用例标识未保存在用例页面,且所述当前测试用例的传入通过状态为通过,则将通过用例数目加一,将所述通过步骤数目加一,将所述当前测试用例保存在用例页面,并设置所述当前测试用例的保存通过状态为通过,执行步骤保存子步骤;
如果所述测试用例标识未保存在用例页面,且所述当前测试用例的传入通过状态为失败,则将所述当前场景的状态设置为失败,将所述失败用例数目加一,将所述失败步骤数目加一,将所述当前测试用例保存在用例页面,并设置所述当前测试用例的保存通过状态为失败,执行步骤保存子步骤;
步骤保存子步骤,将所述当前测试用例所包括的步骤的步骤信息保存在步骤页面。
其中,保存通过状态指的是保存在场景页面或用例页面的通过状态,用于与传入状态进行比较。
场景、用例、步骤之间的关系为,当步骤失败,则用例失败。而只要所包括的用例有一个是失败的,则整个场景都为失败。
本实施例通过对测试用例的传入通过状态进行判断,进行更新相应的统计参数,并将场景标识、用例标识和步骤信息分别保存。
在其中一个实施例中:
所述场景初始化子步骤,还包括:如果所述场景标识未保存在场景页面,则保存所述当前场景的场景开始时间;
所述测试用例判断子步骤,还包括:如果所述测试用例标识未保存在用例页面,则保存所述当前用例的用例开始时间;
所述步骤保存子步骤,还包括:获取所述当前场景的场景结束时间,计算所述场景结束时间与所保存的场景开始时间的间隔时间并保存,获取所述当前测试用例的用例结束时间,计算所述用例结束时间与所保存的用例开始时间的间隔时间并保存。
本实施例计算场景的间隔时间,通过运行的间隔时间,更好地体现场景或用例的运行状态。
在其中一个实施例中,所述测试用例判断子步骤,还包括:
如果所述测试用例标识未保存在用例页面,则当将所述当前测试用例保存在用例页面时,在场景页面所保存的场景标识下,增加跳转到用例页面保存用例标识的超链接,且在用例页面所保存的用例标识下,增加跳转到步骤页面保存步骤信息的超链接。
增加超链接,则只要点击超链接即可链接到相应的用例或者步骤,能很快的定位当时步骤运行的情况,快速跳转。
如图2所示为本发明最佳实施例的工作流程图,包括:
本实施例是通过JAVA代码操作Excel生成一份报告的,实际上还可以通过其他代码方式实现生成报告,报告的方式也可以是例如网页页面的方式显示。本实施例中Excel共分4个模块,其中:
Test_Summay:用来存放用例的汇总信息
Senario:场景信息
TestCase_Name:测试用例信息
TestStep:测试步骤信息
工作流程图如下:
步骤S201,执行自动化测试的测试用例,调用本发明提供方法,传入指定参数;
步骤S202,根据传入的场景名称判断是不是新场景,如果是执行S203,否则执行S204;
步骤S203,往TestSummay场景数工作簿写入一条场景数,往Senario工作簿写入场景名称及场景开始时间;
步骤S204,判断是否新TestCase(测试用例),如果是执行步骤S205,否则执行步骤S208;
步骤S205,判断测试用例状态是否Pass(通过),如果是执行步骤S206,否则执行步骤S211;
步骤S206,在TestSummary工作簿Pass的Case数+1,在Senario工作簿当前的Senario上增加跳转到TestCase工作簿的当前TestCase的超链接,根据TestSummay的Case总数a,往TestCase工作簿的第a行写入TestCase名称、Pass以及开始时间;
步骤S207,TestSummary工作簿Pass的Step数+1,执行步骤S208;
步骤S208,在TestCase工作簿当前的TestCase上增加跳转到TestStep工作簿的当前TestCase的超链接,执行步骤S213;
步骤S209,判断Case状态是否Pass,如果是执行步骤S207,否则执行步骤S210;
步骤S210,判断在TestCase工作簿状态为Fail,如果否执行步骤S211,否则执行步骤S212;
步骤S211,在TestSummary工作簿Pass的Case数-1,在Senario工作簿状态单元格更新状态为Fail,并将字体颜色变成红色,执行步骤S212;
步骤S212,在TestSummary工作簿Fail的Case数+1,Fail的Step数+1,在TestCase工作簿写入状态为Fail,并将字体颜色变成红色,在TestStep工作簿,将颜色标记为红色,执行步骤S212;
步骤S213,在TestStep工作簿,写入TestStep信息;
步骤S214,写入Step结束时间计算跟上一个Step的间隔时间,写入TestCase结束时间,计算跟Case开始时间中间的间隔时间,写入Senario的结束时间,计算跟Senario开始的间隔时间。
本发明通过Test_Summay sheet中的用例数目,步骤数目和场景数目作为基础数据,计算下一个用例和步骤写入到的位置,和场景,测试用例,测试步骤各层级的超链接跳转关系的。具体方案如下:
此处分为以下几种情况:
核心参数:场景名称(Senario),用例名称(Casename),用例状态(Status),步骤描述(detail)
场景1:第一次调用该方法,如传入场景名称A,用例名称B,用例状态为Pass,:1.Test_Summay场景个数+1,用例Pass数目+1,用例PassStep数+1。
2.写入场景数据到senario,包含场景名称,场景的执行状态Pass,和当前时间,场景名称下增加超链接到Test_Name即将写入Casename的单元格.
3.写入Case数据到Test_Name包含Case状态,Case执行结果Pass。当前时间。Case名称下增加超链接到Test_Step即将写入detail的单元格.
4.写入Test_Step数据。包含:Step描述,Step执行结果Pass,追加图片链接
场景2:第二次调用该方法,会出现几种组合情况,
a)传入场景名称A,用例名称B,状态为Pass,则仅在Test_SummarySheet Pass的Step数加1,在Test_Step sheet写入步骤。
b)传入场景名称A,用例名称B,状态为Fail,则需将TestSummarySheet Pass的Case数减去1,Fail的Case数目加1,将当前Senario的场景状态置位Fail,Test_Name单元格当前用例的状态置位Fail。
c)传入场景名称A,用例名称B1,状态为Pass,根据用例名称跟Test_Name sheet最近的Case名称比较,判断此次的用例名称跟上次的不一致,为新的用例。则TestSummary Pass Case数+1
d)传入场景名称B,用例名称B1,状态为Pass,根据场景名称跟Senario sheet最近的Senario名称比较,判断此次的用例名称跟上次的不一致,为新的场景,则TestSummary场景数目+1,Case Pass的数目加一。
其中,一个Step Fail了,代表这个Step所在的用例和场景都是Fail的,第一次写入一个新场景的时候,无论状态是Pass还是Fail,都是直接写入的,然后把相应的Pass Case数或者Fail Case数急加1,当第二次写入该场景的时候,若状态为Fail,则需判断上一个场景的和用例的状态势不是已经为Fail的了,如果已经是,则直接增加Fail数目即可,若不是,则需将场景和用例之前的Pass状态变更为Fail,并且通过的用例数减去1,失败的用例+1。
如图3所示为本发明一种自动化测试系统的结构模块图,包括:
初始化模块301,用于:初始化至少一个统计参数并保存在总结页面;
测试参数获取模块302,用于:响应于包括测试场景标识和测试用例标识的传入请求,将由所述测试场景标识所表示的测试场景作为当前测试场景,将由所述测试用例标识所表示的测试用例作为当前测试用例;
参数更新模块303,用于:将所述场景标识保存在场景页面,将所述用例标识保存在用例页面,将所述当前测试用例所包括的步骤的步骤信息保存在步骤页面,根据所述当前测试用例的传入通过状态,更新所述统计参数;
显示模块304,用于:响应于显示请求,分别显示所述总结页面、所述场景页面、所述用例页面、和/或所述模块页面。
在其中一个实施例中,还包括:
告警模块,用于:当所述统计参数达到预设的告警规则,则告警。
在其中一个实施例中:
所述统计参数具体包括:测试场景总数目、测试用例总数目、测试模块总数目、通过用例数目、失败用例数目、通过步骤数目、以及失败步骤数目;
所述参数更新模块,具体包括:
场景初始化子模块,用于:如果所述场景标识已保存在场景页面,则执行测试用例判断子模块,否则将所述测试场景总数目加一,将所述测试用例总数目加一,将所述测试模块总数目加一,将所述场景标识保存在场景页面中,将所述当前场景的保存通过状态设置为通过,执行测试用例判断子模块;
测试用例判断子模块,用于:
如果所述测试用例标识已保存在用例页面,且所述当前测试用例的传入通过状态为通过,则将所述通过步骤数目加一,执行模块保存子模块;
如果所述测试用例标识已保存在用例页面,且所述当前测试用例的传入通过状态为失败,所述当前测试用例的保存通过状态为通过,则将所述当前场景的状态设置为失败,将所述失败用例数目加一,将所述通过用例数目减一,将所述失败步骤数目加一,将所述当前用例的保存通过状态设置为失败,执行步骤保存子步骤;
如果所述测试用例标识已保存在用例页面,且所述当前测试用例的传入通过状态为失败,所述当前测试用例的保存通过状态为失败,则将所述失败用例数目加一,将所述失败步骤数目加一,执行步骤保存子步骤;
如果所述测试用例标识未保存在用例页面,且所述当前测试用例的传入通过状态为通过,则将通过用例数目加一,将所述通过步骤数目加一,将所述当前测试用例保存在用例页面,并设置所述当前测试用例的传入通过状态为通过,执行模块保存子模块;
如果所述测试用例标识未保存在用例页面,且所述当前测试用例的传入通过状态为失败,则将所述当前场景的状态设置为失败,将所述失败用例数目加一,将所述失败步骤数目加一,将所述当前测试用例保存在用例页面,并设置所述当前测试用例的传入通过状态为失败,执行模块保存子模块;
步骤保存子模块,将所述当前测试用例所包括的步骤的步骤信息保存在步骤页面。
在其中一个实施例中:
所述场景初始化子模块,还用于:如果所述场景标识未保存在场景页面,则保存所述当前场景的场景开始时间;
所述测试用例判断子模块,还用于:如果所述测试用例标识未保存在用例页面,则保存所述当前用例的用例开始时间;
所述步骤保存子模块,还用于:获取所述当前场景的场景结束时间,计算所述场景结束时间与所保存的场景开始时间的间隔时间并保存,获取所述当前测试用例的用例结束时间,计算所述用例结束时间与所保存的用例开始时间的间隔时间并保存。
在其中一个实施例中,所述测试用例判断子模块,还用于:
如果所述测试用例标识未保存在用例页面,则当将所述当前测试用例保存在用例页面时,在场景页面所保存的场景标识下,增加跳转到用例页面保存用例标识的超链接,且在用例页面所保存的用例标识下,增加跳转到步骤页面保存步骤信息的超链接。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。