基于c代码模型的构件接口单元测试方法

文档序号:9708228阅读:260来源:国知局
基于c代码模型的构件接口单元测试方法
【技术领域】
[0001]本发明涉及计算机软件技术领域,具体涉及一种测试工具软件,尤其涉及一种基于C代码模型的构件接口单元测试方法。
【背景技术】
[0002]随着计算机技术的迅速发展和越来越广泛深入的应用于国民经济和社会生活的各个方面,随着软件系统的规模和负责性与日倶增,软件的生产成本和软件中存在的缺陷和故障造成的各类损失也大大增加,甚至会带来灾难后果。软件质量问题已成为所有使用软件和开发软件的人关注的焦点。由于软件是人脑的高度智力化的体现和产品这一特殊性,不同于其他科技和生产领域,因此软件与生倶来就有可能存在着缺陷。防止和减少这些可能存在的问题就是进行软件测试。测试是最有效的排除和防止软件缺陷与故障的手段,并由此促进了软件测试理论与技术实践的快速发展。新的测试理论,测试方法,测试技术手段在不断涌出,软件测试机构和组织也在迅速产生和发展。
[0003]软件测试方法按是否查看程序内部结构分为黑盒测试和白盒测试,白盒测试是把测试对象看作一个打开的盒子。按阶段划分可分为单元测试,集成测试,系统测试,验收测试。
[0004]由于大部分测试研究集中在应用软件方面,对系统软件的测试研究又多偏于编译程序的测试,致使不可靠的系统软件给用户带来许多麻烦。很多测试工具要求用户提供大量辅助信息,甚至严格要求测试者控制测试进程,这增加了测试者的工作量,测试工具常常输出很多信息,而其中一部分又无关紧要,这也增加了用户的负担。

【发明内容】

[0005]本发明的目的在于克服现有技术存在的以上问题,提供一种基于C代码模型的构件接口单元测试方法。
[0006]为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
一种基于C代码模型的构件接口单元测试方法,包括以下步骤:
步骤一,源代码扫描,扫描所测函数的源代码,判断此函数是否出现调用外部函数,若出现调用函数,则将代码中所调用的外部函数全部做上标记;
步骤二,配置测例,为此测例编写输入,预期输出,粧函数实现代码,使测例运行函数的某一个分支;
步骤三,生成测试工程,根据上一步骤的测例配置生成测例工程,其中包含可编译运行的测试代码,代码中被标记的外部调用函数若被确定为粧函数,则其代码用粧函数代码替换,若函数不被打粧,则其代码还是使用其原函数代码;
步骤四,代码编译,调用visual std1进行代码的编译;
步骤五,代码运行,运行编译后的程序,得到运行输出结果;
步骤六,结果检查,检查预期输出和实际输出是否相等,若两者相等,则此测例通过,若不相等,则此测例测试失败。
[0007]进一步的,所述步骤二的配置测例包括以下步骤:
1)指定输入值,为此测例编写输入参数的初始化值,对于每个测例,函数的输入值都会不同,不同的输入值导致函数运行不同的分支,产生不同的输出;
2)函数调用,指出此测例所测试的函数;
3)确定粧函数,若函数中出现外部调用函数,则确定此测例中所需要的粧函数,并编写粧函数代码;
4)判断输出,指出此测例在指定输入值下预期得到的输出。
[0008]本发明的有益效果是:
本发明所述的基于C代码模型的构件接口单元测试方法,通过识别构件代码中的需要打粧的接口,在生成测试代码时自动替换粧函数,从而在不改变被测代码的情况下实现测试用例代码的自动生成,便于进行手工调试,并提供测例配置界面和准确的测试输出信息,从而降低测试工作的复杂度,减轻测试的工作量,提高效率。
[0009]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的【具体实施方式】由以下实施例及其附图详细给出。
【附图说明】
[0010]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为基于C代码模型的构件接口单元测试方法流程示意图。
【具体实施方式】
[0011 ]下面将参考附图并结合实施例,来详细说明本发明。
[0012]参照图1所示,一种基于C代码模型的构件接口单元测试方法,包括以下步骤:
步骤一,源代码扫描,扫描所测函数的源代码,判断此函数是否出现调用外部函数,若出现调用函数,则将代码中所调用的外部函数全部做上标记;
步骤二,配置测例,包括以下步骤:
1)指定输入值,为此测例编写输入参数的初始化值,对于每个测例,函数的输入值都会不同,不同的输入值导致函数运行不同的分支,产生不同的输出;
2)函数调用,指出此测例所测试的函数;
3)确定粧函数,若函数中出现外部调用函数,则确定此测例中所需要的粧函数,并编写粧函数代码;
4)判断输出,指出此测例在指定输入值下预期得到的输出;
步骤三,生成测试工程,根据上一步骤的测例配置生成测例工程,其中包含可编译运行的测试代码,其中被标记的外部调用函数若被确定为粧函数,则其代码用粧函数代码替换,若函数不被打粧,则其代码还是使用其原函数代码;
步骤四,代码编译,调用visual std1进行代码的编译;
步骤五,代码运行,调用visual std1进行代码的运行,得到运行输出结果; 步骤六,结果检查,检查预期输出和实际输出是否相等,若两者相等,则此测例通过,若不相等,则此测例测试失败。
[0013]假设要测试的构件代码如下所示: struct Node;
typedef struct Node *PtrToNodetypedef PtrToNode Posit1n;typedef PtrToNode List;int Insert(int X, List L)struct Node{
int Element;
Posit1n Next;
}
int Delete(int X, List L)
{
Posit1n P, TmpCell;
P = L;
//查找前一个节点 while(P_>Next ! = NULL && P->Next_>Element != X)
P = P->Next;
if(! IsLast(P, L)) //判断是否是最后一个 {
TmpCell = P->Next;
P->Next = TmpCell->Next;free(TmpCell); //释放空间return 1;
}
else
return 0;
}
当要测试Delete函数时,则首先扫描Delete函数的代码,查找其中是否出现外部函数,此代码中出现了 IsLast和free函数,对其做出标记。
[0014]此函数的输入参数为X,L两个参数,其功能是在链表L中找到值为X的节点,并删除.此时要测试节点不是链表最后一个节点的分支,即进入if分支内运行,因此会运行IsLast和free函数,由于free函数是系统函数,能够保证其正确性,故不用打粧,而IsLast函数是用户自定义函数,因此IsLast函数需要被打粧,粧函数代码为:int IsLast(Posit1n P, List L)
{return P->next == NULL;
}
完整的测试代码为:
/*初始化*/ int result = 0; int X = 1;
L = (Node *)malloc(sizeof (Node)*2); //申请结点空间 if (L == NULL) //判断是否有足够的内存空间printf(〃申请内存空间失败\n〃); L->next =
NULL;
//调用插入节点函数,插入两个节点 Insert(l,L);
Insert(2, L);
/*函数调用*/ result = Delete(X, L);
/*输出*/
ASSERT_UINT8_EQUAL(result,1); //判断result的值是否为 1在函数运行时,不会调用的原IsLast函数,而是调用粧函数IsLast,以保证函数正确运行。
[0015]代码编译运行后会得到一个运行结果result,若result的值为1,则此测例运行通过,若result的值不为1,则此测例运行失败。
[0016]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于C代码模型的构件接口单元测试方法,其特征在于,包括以下步骤: 步骤一,源代码扫描,扫描所测函数的源代码,判断此函数是否出现调用外部函数,若出现调用函数,则将代码中所调用的外部函数全部做上标记; 步骤二,配置测例,为此测例编写输入,预期输出,粧函数实现代码,使测例运行函数的某一个分支; 步骤三,生成测试工程,在扫描到的源代码以及输入的配置参数间自动插入连接代码,从而自动生成可编译的测例工程,其中包含可编译运行的测试代码,代码中被标记的外部调用函数若被确定为粧函数,则其代码用粧函数代码替换,若函数不被打粧,则其代码还是使用其原函数代码; 步骤四,代码编译,调用Visual std1进行代码的编译; 步骤五,代码运行,运行编译后的程序,得到运行输出结果; 步骤六,结果检查,检查预期输出和实际输出是否相等,若两者相等,则此测例通过,若不相等,则此测例测试失败。2.根据权利要求1所述的构件接口单元测试方法,其特征在于:所述步骤二的配置测例包括以下步骤: 1)指定输入值,为此测例编写输入参数的初始化值,对于每个测例,函数的输入值都会不同,不同的输入值导致函数运行不同的分支,产生不同的输出; 2)函数调用,指出此测例所测试的函数; 3)确定粧函数,若函数中出现外部调用函数,贝_定此测例中所需要的粧函数,并编写粧函数代码; 4)判断输出,指出此测例在指定输入值下预期得到的输出。
【专利摘要】本发明公开了一种基于C代码模型的构件接口单元测试方法,包括以下步骤:源代码扫描;配置测例;生成测试工程,其中被标记的外部调用函数若被确定为桩函数,则其代码用桩函数代码替换,若函数不被打桩,则其代码还是使用其原函数代码;代码编译;代码运行,得到运行输出结果;结果检查。本发明所述的基于C代码模型的构件接口单元测试方法,通过识别构件代码中的需要打桩的接口,在生成测试代码时自动替换桩函数,从而在不改变被测代码的情况下实现测试用例代码的自动生成,便于进行手工调试,并提供测例配置界面和准确的测试输出信息,从而降低测试工作的复杂度,减轻测试的工作量,提高效率。
【IPC分类】G06F11/36
【公开号】CN105468525
【申请号】CN201510843755
【发明人】蒋洁, 张和华, 潘加俊, 赵祖乾, 南野野, 董蔷薇
【申请人】苏州同元软控信息技术有限公司
【公开日】2016年4月6日
【申请日】2015年11月27日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1