[发明专利]一种适用于指针的单元测试用例生成方法及装置在审
申请号: | 202110043899.5 | 申请日: | 2021-01-13 |
公开(公告)号: | CN112783765A | 公开(公告)日: | 2021-05-11 |
发明(设计)人: | 陈睿;杨帆;江云松;于婷婷;刘亚威;王浩;高栋栋;李超;贾春鹏;吴瑾 | 申请(专利权)人: | 北京轩宇信息技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 李明泽 |
地址: | 100190 北京市海淀区科学院*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 适用于 指针 单元测试 生成 方法 装置 | ||
本申请公开了一种适用于指针的单元测试用例生成方法及装置,该方法包括:对预设被测程序进行静态分析确定输入元素中的成员类型,根据成员类型判断输入元素是否为void*或含void*成员的结构体;若是void*或含void*成员的结构体,则确定void*或void*成员指向的实际类型以及根据实际类型生成输入驱动文件;判断实际类型是否为结构体类型且结构体类型中的结构体是否包含指向动态堆数据结构的成员;若是结构体类型且结构体类型中的结构体包含指向动态堆数据结构的成员,则设置指针或结构体展开层次,并根据展开层次生成配置文件,根据驱动文件以及配置文件自动生成测试用例。本申请解决了现有技术中生成的测试用例覆盖率较低、执行崩溃或内存开销过大的技术问题。
技术领域
本申请涉及自动测试用例生成技术领域,尤其涉及一种适用于指针的单元测试用例生成方法及装置。
背景技术
单元测试是保证软件质量的一种有效措施,然而随着软件代码规模膨胀,仅靠人工做单元测试的效率无法满足需求,因此自动化生成测试用例的方法应运而生,如随机生成、符号执行等技术。而C/C++程序软件中存在大量指针类型的输入,对这类输入的用例自动生成不但要生成指针所指向的内存区域,还要生成对应内存区域中的值,才能实现预期的覆盖。C/C++程序软件中存在指针类型的输入包括void*类型的指针、以及指向链表、树、图等动态堆数据结构的指针。
目前,对于输入为void*类型的指针,由于指向目标内存的类型不确定,在生成单元测试用例时,一般方法使用固定类型作为变量类型进行生成(如char[]);对于输入为指向链表、树、图等动态堆数据结构的指针,由于事先不知道所指向内存的形态,一般方法采用预设的固定层次递归展开。但是,对于void*类型的指针,实际指向类型为其他时(如结构体),无法按照给定类型生成相应的值,导致用例生成的覆盖率不高。而对于指向链表、树、图等动态堆数据结构的指针,当展开层次过少时会导致没有生成足够的目标内存空间,也无法生成达到相应覆盖的值,甚至有时可能因空指针解引用造成用例执行崩溃,而递归展开层次过多时,又会导致所需生成输入的内存空间很多,内存开销过大。
发明内容
本申请解决的技术问题是:针对现有技术中生成的测试用例覆盖率较低、执行崩溃或内存开销过大,本申请提供了一种适用于指针的单元测试用例生成方法及装置,本申请实施例所提供的方案中,通过对预设被测程序进行静态分析,一方面,若输入元素是void*或含void*成员的结构体时,确定void*或结构体的void*成员指向的实际类型以及根据所述实际类型生成输入驱动文件,避免当void*或void*成员的结构体作为输入时,因指向变量类型不确定导致覆盖率较低的问题;另一方面,若void*或结构体的void*成员指向动态堆数据结构时,设置指针或结构体展开层次,并根据展开层次生成配置文件,避免当指针指向动态堆数据结构时,由于展开层次不确定导致覆盖率较低、执行崩溃或内存开销过大问题。
第一方面,本申请实施例提供一种适用于指针的单元测试用例生成方法,该方法包括:
对预设被测程序进行静态分析确定输入元素中的成员类型,根据所述成员类型判断所述输入元素是否为void*或含void*成员的结构体;
若所述输入元素是void*或含void*成员的结构体,则确定所述void*或所述void*成员指向的实际类型以及根据所述实际类型生成输入驱动文件;
判断所述实际类型是否为结构体类型且所述结构体类型中的结构体是否包含指向动态堆数据结构的成员;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京轩宇信息技术有限公司,未经北京轩宇信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110043899.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种环保家具加工系统
- 下一篇:一种景观树移植装置及利用该装置进行移植的方法