技术领域
[0001] 本公开涉及测试技术领域,具体地,涉及一种测试报告生成装置。
相关背景技术
[0002] 随着科学技术的不断发展,车辆整车控制器的功能越来越多。为了完成对车辆整车控制器的软件测试,软件测试工程师需要设计大量的测试用例对整车控制器进行测试,并通过测试报告对大量的测试结果进行整理和分析。
[0003] 相关技术中,测试报告主要是软件测试工程师手动制作。手动制作测试报告需要软件测试工程师将测试用例和对应的测试结果逐一手动写入设计好的测试报告模板里,在测试用例特别多的情况下,手动制作测试报告的方式会耗费大量的人力和时间,效率不高。
具体实施方式
[0039] 以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
[0040] 图1是根据本公开一示例性实施例示出的一种测试报告生成装置的框图,参照图1,测试报告生成装置100包括测试模块101、模板确定模块102和报告生成模块103。
[0041] 测试模块101,用于通过测试用例对车辆整车控制器进行仿真测试,并输出仿真测试结果。
[0042] 模板确定模块102,与测试模块101相连,用于读取测试用例,并根据测试用例,确定测试报告模板。
[0043] 报告生成模块103,分别与测试模块101和模板确定模块102相连,用于接收测试模块101输出的仿真测试结果、及模板确定模块102确定的测试报告模板,并根据仿真测试结果和测试报告模板,生成测试用例对应的测试报告。
[0044] 其中,测试用例可以是用户手动输入的,也可以是通过测试用例生成程序或系统自动生成的,本公开对此不作限定。比如,当用户需要测试车辆整车控制器的某个功能时,用户可以手动输入这个功能对应的测试用例,当然,也可以通过测试用例生成软件来自动生成这个功能对应的测试用例,然后将生成的测试用例输入到测试模块101。
[0045] 以用户手动输入测试用例为例,当用户输入测试用例后,测试模块101通过该测试用例对车辆整车控制器软件进行仿真测试,然后模板确定模块102读取到该测试用例,并根据该测试用例,确定测试报告模板。
[0046] 需要说明的是,本公开实施例对于根据测试用例,确定测试报告模板的过程不作限定,下面对可能的方式进行说明。
[0047] 可选的,参照图2,本公开实施例提供的测试报告生成装置100还可以包括用于存储测试数据的存储单元104,那么模板确定模块102用于判断存储单元104中是否存在与待生成的测试报告名称相同的测试报告,当存储单元104中存在与待生成的测试报告名称相同的测试报告时,将已有的测试报告的模板确定为测试报告模板,或当存储单元104中没有与待生成的测试报告名称相同的测试报告时,生成新的测试报告模板。
[0048] 其中,存储单元104存储的测试数据至少包括测试用例、生成的测试报告模板、获得的测试结果和生成的测试报告,等等,本公开对此不作限定。
[0049] 待生成的测试报告的名称可以是用户自行定义并输入的,本公开对此不作限定。需要说明的是,同一个测试用例对应同一个待生成的测试报告的名称,如果用户使用同一个测试用例对车辆整车控制器进行多次仿真测试,那么用户需要输入相同的待生成的测试报告的名称,比如,用户使用测试用例1分别对车辆整车控制器进行了两次仿真测试,且用户先后输入了同一个待生成的测试报告的名称为“测试报告1”。在第一次仿真测试后,模板确定模块102确定存储单元104中不存在名称为“测试报告1”的测试报告,生成了新的测试报告模板,并将根据新生成的测试报告模板得到的测试报告命名为“测试报告1”,保存到存储单元104中。因此,在第二次仿真测试后,模板确定模块102确定存储单元104中存在名称为“测试报告1”的测试报告,那么就将测试报告1对应的模板确定为测试报告模板。
[0050] 但如果有多个不同的测试用例,且用户自行定义输入待生成的测试报告的名称,那么用户需要输入多个待生成的测试报告的名称,然后模板确定模块102分别针对每一个测试用例,判断存储单元104中是否存在与待生成的测试报告名称相同的测试报告,并根据判断结果相应地确定测试报告模板。
[0051] 例如,用户输入了两个测试用例,同时,用户还对应地输入了两个待生成的测试报告的名称,分别为“第一测试报告”和“第二测试报告”,那么测试模块101依次通过两个测试用例对整车控制器进行仿真测试后,模板确定模块102首先判断存储单元104中是否存在名为“第一测试报告”的测试报告,如果通过判断确定存储单元104中存储有名为“第一测试报告”的测试报告,那么模板确定模块102将该测试报告对应的测试报告模板确定为本次测试所需的测试报告模板。但是如果通过判断确定存储单元104中没有名为“第一测试报告”的测试报告,那么模板确定模块102就生成新的测试报告模板,并将根据新生成的测试报告模板得到的测试报告命名为“第一测试报告”,保存到存储单元104中。同样的,模板确定模块102再判断存储单元104中是否存在名为“第二测试报告”的测试报告,并根据判断结果确定相应的测试报告模板。
[0052] 通过以上的方式,可以避免重复生成多个相同的测试报告模板,节约了存储空间,提高了确定测试报告模板的效率,从而一定程度上提高了自动生成测试报告的效率。
[0053] 模板确定模块102确定测试报告模板后,将测试报告模板发送到报告生成模块103,同时报告生成模块103还接收到测试模块输出的仿真测试结果,那么报告生成模块103就根据仿真测试结果和测试报告模板,生成测试报告。
[0054] 可选的,当测试报告生成装置包括用于存储测试数据的存储单元104时,报告生成模块103用于当存储单元104中存在与待生成的测试报告名称相同的测试报告时,打开测试报告,将测试用例和仿真测试结果续写到测试报告的最后,或当存储单元104中没有与待生成的测试报告名称相同的测试报告时,将测试用例和仿真测试结果写入新生成的测试报告模板。
[0055] 当存储单元104中存在与待生成的测试报告名称相同的测试报告时,说明该测试报告的内容包括历史测试结果,例如,可能包括历史测试过程中产生的波形图,等等,那么将测试用例和仿真测试结果续写到测试报告的最后,可以是在历史测试产生的波形图之后,另起一行,开始本次测试结果的写入。
[0056] 在一个实施例中,通过测试用例生成程序或系统生成了测试用例,并输入到了测试模块101中,同时,用户输入了该测试用例对应的待生成的测试报告的名称,为“第三测试报告”。首先测试模块101通过测试用例对车辆整车控制器进行仿真测试,并输出仿真测试结果到报告生成模块103,然后模板确定模块102通过判断确定了存储单元104里存在名为“第三测试报告”的测试报告,那么报告生成模块103就打开该测试报告,并在该测试报告的原有内容之后,另起一行,将接收到的仿真测试结果写入该测试报告。
[0057] 通过以上的方式,可以在存储单元104中不存在与待生成的测试报告名称相同的测试报告时,将仿真测试结果写入新生成的测试报告模板,而在存储单元104中存在与待生成的测试报告名称相同的测试报告时,直接将测试用例和仿真测试结果续写到该测试报告的最后,提高了将测试用例和仿真测试结果写入测试报告模板的效率,也方便了测试人员对比查看同一测试用例的历史测试结果。
[0058] 可选的,存储单元104可以为MATLAB软件的运行路径所对应的存储空间。由于Simulink软件是MATLAB软件中的一种可视化仿真工具,所以存储单元104也可以为Simulink软件的运行路径所对应的存储空间。
[0059] 在一个实施例中,当存储单元104为MATLAB软件的运行路径对应的存储空间时,测试模块101可以对应于MATLAB软件中的测试模块,模板确定模块和报告生成模块可以对应于运行在MATLAB软件中的脚本程序。
[0060] 通过以上的方式,软件测试和报告生成的过程都在MATLAB软件或Simulink软件下实现,可以直接读取测试结果来生成测试报告,能够避免测试过程运行在一个软件,而报告生成过程运行另一软件下导致的测试结果的读取错误,保证了测试报告的内容准确性。
[0061] 可选的,测试模块101还用于获取用户输入的测试用例名称集合,根据名称集合,在存储单元104中确定对应的至少一个测试用例,通过至少一个测试用例依次对车辆整车控制器进行仿真测试,并输出至少一个仿真测试结果。相应的,模板确定模块102用于读取至少一个测试用例,并根据至少一个测试用例,确定至少一个测试报告模板,报告生成模块103用于根据至少一个仿真测试结果和至少一个测试报告模板,生成测试报告。
[0062] 用户输入的测试用例名称集合可以包括一个测试用例名或者多个测试用例名,比如,用户输入的测试用例名称集合可以为[测试用例1],也可以为[测试用例1,测试用例2,……,测试用例n],等等,本公开对此不作限定。
[0063] 在一个实施例中,用户输入的测试用例名称集合为[测试用例1,测试用例2,测试用例3],那么测试模块101根据该名称集合,在存储单元104里确定名称分别为测试用例1、测试用例2、测试用例3对应的三个测试用例,通过这三个测试用例依次对车辆整车控制器进行仿真测试,并输出三个仿真测试结果。相应的,模板确定模块102会读取这三个测试用例,并根据这三个测试用例,分别确定测试报告模板。然后报告生成模板103会分别根据仿真测试结果和测试报告模板,生成测试报告。
[0064] 通过以上的方式,可以根据多个仿真测试结果和多个测试报告模板生成测试报告,一定程度上能够提高生成测试报告的效率。
[0065] 对于根据多个仿真测试结果和多个测试报告模板生成测试报告的过程,本公开不作限定,下面对可能的方式进行说明。
[0066] 可选的,至少一个测试用例中的每个测试用例分别对应于一个编号,那么报告生成模块103用于按照每个测试用例的编号,根据至少一个仿真测试结果和至少一个测试报告模板,生成测试报告。
[0067] 测试用例对应的编号可以是用户在手动输入测试用例的过程中自行定义的,也可以是通过测试用例自动生成软件或系统生成测试用例的过程中,根据测试用例生成的先后顺序来确定的,等等,本公开实施例对此不作限定。
[0068] 例如,用户输入的测试用例名称集合为[A,B,C],并在存储单元104里确定了名称分别为A,B,C对应的三个测试用例,那么用户可以定义名为A的测试用例对应的编号为POOC_1,名为B的测试用例对应的编号为POOC_2,名为C的测试用例对应的编号为POOC_3。报告生成模块103就可以按照这三个测试用例的编号POOC_1、POOC_2和POOC_3,根据对应的仿真测试结果和测试报告模板,依次生成测试报告。
[0069] 又或者,通过测试用例生成程序或系统依次生成了三个测试用例E、F、G,即测试用例名称集合为[E,F,G],那么根据这三个测试用例生成的先后顺序,确定测试用例的编号的过程可以是:由于测试用例E最先生成,那么测试用例E对应的编号可以为POOC_01,测试用例F第二生成,那么测试用例F对应的编号可以为POOC_02,而测试用例G最后生成,那么测试用例G对应的编号可以为POOC_03。
[0070] 通过以上的方式,报告生成模块103可以根据多个仿真测试结果和多个测试报告模板,按照测试用例编号,依次生成测试报告,能够极大地提高生成测试报告的效率。
[0071] 可选的,报告生成模块103还用于确定仿真测试结果对应的结果标识码,并根据仿真测试结果、结果标识码和测试报告模板,生成测试报告。
[0072] 其中,结果标识码用于表征仿真测试结果为通过、不通过或未知,可以用数字、字母或数字与字母的任意组合来表示结果标识码。例如,可以用数字0表示测试结果未通过,数字1表示测试结果通过,除数字0和1以外的任一数字表示测试结果未知。需要说明的是,测试结果未知包括测试参数有误的情况,本公开对此不作限定。
[0073] 通过以上的方式,可以在生成的测试报告中通过结果标识码来确定仿真测试的结果是否通过,便于测试人员对测试结果的分析。
[0074] 可选的,测试模块101还用于确定整车控制器软件的版本号,并在通过测试用例对车辆整车控制器进行仿真测试之后,根据整车控制器软件的版本号输出仿真测试结果。
[0075] 整车控制器软件的版本号用于表征整车控制器软件的更新状态,当软件工程师分析仿真测试结果后,对整车控制器软件进行修改,那么相应的,整车控制器软件的版本号也发生改变。例如,整车控制器软件的初始版本号为V1.0,软件工程师分析仿真测试结果后,对软件进行了修改,那么此时,整车控制器软件的版本号可以变为V1.1。
[0076] 通过以上的方式,可以通过整车控制器软件的版本号确定整车控制器软件的更新状态,以便用户能对测试结果进行更加准确的分析。
[0077] 可选的,当软件测试方式为MIL(Model in loop,模型在环)测试,整车控制器的策略模型为MBD(Model based design,基于模型的设计)模型时,测试模块101用于按照模型在环MIL的测试方式,通过测试用例对基于模型的设计MBD模型的整车控制器进行仿真测试。
[0078] 通过以上的方式,可以实现在MIL测试方式下,对MBD模型的整车控制器进行仿真测试,并自动生成相应的测试报告,能够节省MIL测试报告的制作时间,提高MIL测试报告的制作效率。
[0079] 可选的,报告生成模块103还用于将测试报告输出到用户指定的办公软件中。其中,用户可以指定将测试报告输出到文字处理软件、电子表格软件或者其他任何办公软件。例如,用户可以将测试报告输出到word文档中,或者用户可以将测试报告输出到excel表格中。
[0080] 通过以上的方式,可以将测试报告输出到用户指定的办公软件中,以便用户对测试结果进行整理和分析。
[0081] 下面以一个完整的实施例,对本公开的技术方案进行说明。
[0082] 当本公开实施例的测试报告生成装置包括存储单元104时,用户输入了一个测试用例名称集合[R,S],同时定义了名为R的测试用例对应的编号为POOC_001、名为S的测试用例对应的编号为POOC_002,并且用户还输入了测试用例R对应的待生成的测试报告的名称为“测试报告一”、测试用例S对应的待生成的测试报告的名称为“测试报告二”、及整车控制器软件的版本号V1.1。
[0083] 首先通过测试用例名称集合[R,S]在存储单元104里确定了名为R的测试用例和名为S的测试用例,然后测试模块101通过这两个测试用例依次对车辆整车控制器进行仿真测试,并分别输出仿真测试结果到报告生成模块103。
[0084] 模板确定模块102读取测试用例R和测试用例S,依次确定测试用例R和测试用例S对应的测试报告模板:首先通过模板确定模块102,确定存储单元104里不存在名为“测试报告一”的测试报告,那么模板确定模块102就新生成测试用例R对应的测试报告模板。然后通过模板确定模块102,确定存储单元104里存在名为“测试报告二”的测试报告,那么模板确定模块102打开该测试报告,将该测试报告确定为测试用例S对应的测试报告模板。
[0085] 报告生成模块103根据仿真测试结果、结果标识码、整车控制器的版本号,按照这两个测试用例的编号POOC_001和POOC_002,,依次生成测试报告:
[0086] 报告生成模块103首先生成的是测试用例R对应的测试报告,具体内容可以参照图3。由于测试用例R对应的测试报告模板是新生成的,所以在测试报告的第一行是该测试报告的名称“测试报告一”,然后下面是测试用例信息表。该测试用例信息表由三行两列的表格组成,其中,第一行表示测试用例编号,第二行表示结果标识码,第三行表示整车控制器软件的版本号。
[0087] 参照图3,测试用例R的测试用例信息表中,测试用例编号为POOC_001,结果标识码为“no passed”,表征测试用例R对应的测试结果为未通过,整车控制器软件的版本号为V1.1。用户根据这个测试用例信息表可以获知该测试报告是通过测试用例POOC_001,即测试用例R,对车辆整车控制器软件V1.1版本进行仿真测试得到的,并且,最终的测试结果未通过。最后,在测试用例信息表的下面是通过详细的波形图示出了本次测试的结果,便于用户对测试结果进行分析。
[0088] 生成测试用例R对应的测试报告后,报告生成模块103生成了测试用例S的测试报告,具体内容可以参照图4。由于存储单元104里存在测试用例S对应的待生成的测试报告的名称,所以测试用例S对应的测试报告续写在历史测试结果的最后,即在历史测试结果的波形图的后面,另起一行,开始写入测试用例信息表和测试结果。同样的,测试用例S的测试用例信息表由三行两列的表格组成,其中,第一行表示测试用例编号,第二行表示结果标识码,第三行表示整车控制器软件的版本号。
[0089] 参照图4,测试用例S的测试用例信息表中,测试用例编号为POOC_002,结果标识码为“no passed”,表征测试用例R对应的测试结果为未通过,整车控制器软件的版本号为V1.1。用户根据这个测试用例信息表可以获知该测试报告是通过测试用例POOC_002,即测试用例S,对车辆整车控制器软件V1.1版本进行仿真测试得到的,并且,最终的测试结果未通过。最后,在测试用例信息表的下面是通过详细的波形图示出了本次测试的结果,便于用户对测试结果进行分析。
[0090] 以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
[0091] 此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。