CN108845928A - 测试单元内可测试函数的划分方法及测试方法 - Google Patents
测试单元内可测试函数的划分方法及测试方法 Download PDFInfo
- Publication number
- CN108845928A CN108845928A CN201810422933.8A CN201810422933A CN108845928A CN 108845928 A CN108845928 A CN 108845928A CN 201810422933 A CN201810422933 A CN 201810422933A CN 108845928 A CN108845928 A CN 108845928A
- Authority
- CN
- China
- Prior art keywords
- function
- test
- reentrant
- junior unit
- division methods
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种测试单元内可测试函数的划分方法,包括如下步骤:S10、获取测试对象的函数调用关系;S20、根据待测试函数中根据可重入性划分优先级;S30、根据功能逻辑将所有可重入函数为多个可重入小单元,且每个可存入小单元均有唯一一个关键函数接口;S40、按照优先级顺序将所述可重入小单元以及不可重入函数进行测试列队的构建,完成划分。同时还基于上述划分方法提供了测试方法,本发明所起到的有益效果包括:在保证该关键函数接口的输入条件不变的条件下,可重入小单元具有内部函数的变化时,该可重入小单元测试用例可以不需要修改,大大提高了该可重入小单元测试用例的复用性问题。在具体的单元测试中保证了单元测试的完整性和可靠性。
Description
技术领域
本发明涉及应用函数测试领域,特别涉及一种测试单元内可测试函数的划分方法及测试方法。
背景技术
随着软件的快速发展,软件的复杂度也在不断提高。单元测试作为一种保证软件代码可靠性的重要手段,越来越受到重视和普及。在进行单元测试的工作中,若对软件模块中的每个函数都单独进行单元测试,势必会产生数量庞大的待测单元,并且当任意函数接口发生修改时,都需要重写与其相对应的测试用例,单元测试的工作将非常繁重。因此,现有技术中,对于复杂的程序模块,单元测试有如下弊端:
(1)模块的单元数量庞大、测试单元可测性低,导致测试效率低下;
(2)模块的单元测试用例复用性低,不断修改加重了测试工作量;
需要一种为模块代码划分有序、可测试单元的方法,用以提高单元测试的质量及效率,同时提高测试用例的可复用性。
发明内容
本发明为了解决上述技术问题,提供一种测试单元内可测试函数的划分方法。
一种测试单元内可测试函数的划分方法,包括如下步骤:
S10、获取测试对象的函数调用关系,并构建函数调用关系图;
S20、识别待测试函数中的可重入性,根据可重入性划分优先级;
S30、在同一个优先级内根据功能逻辑将所有可重入函数为多个可重入小单元,且每个可存入小单元均有唯一一个可驱动该小单元执行特定功能的关键函数接口;
S40、按照优先级顺序将所述可重入小单元以及不可重入函数进行测试列队的构建,完成划分。
进一步的,所述步骤30包括如下子步骤:
S31、采集统一优先级内所有可重入函数的函数接口;
S32、筛选出被不可重入函数直接调用的函数接口,并定义为关键函数接口;
S33、将步骤S32中的关键函数接口分成若干个小组,对该小组内的关键函数接口对应的函数,以及关键函数接口对应函数所调用的可重入函数进行归类;
S34、对步骤S33中被归为一类的函数进行定义,构成一个可重入小单元。
进一步的,所述步骤S20中优先级划分依据为,可重入函数的优先级高于不可重入函数的优先级。
进一步的,所述测试队列中的可重入小单元排列先于不可重入函数。
进一步的,所述测试列队的每个单元对应至少一个测试用例。
进一步的,所述列队还包括设置在列队最后的包括所有可测试函数的单元。
另外,本发明还提供一种函数测试方法,包括如下步骤:
A10、利用上述的划分方法对测试单元内可测试函数进行划分;
A20、建立与测试队列内的函数相对应的测试用例队列;
A30、根据测试列队顺序执行测试用例。
进一步的,还包括监控步骤,所述监控步骤包括如下子步骤:
A41、监控测试单元内所有可测试函数是否发生变化,若有则执行步骤A42;
A42、判断变化函数所对应的函数接口是否为关键函数接口,若是,则返回步骤A10,否则忽略。
本发明的测试单元内可测试函数的划分方法及测试方法所起到的有益效果包括:
1、在保证该关键函数接口的输入条件不变的条件下,可重入小单元具有内部函数的变化时,该可重入小单元测试用例可以不需要修改,大大提高了该可重入小单元测试用例的复用性问题。
2、本发明对待测试函数划分后,使测试具有集成性质,在具体的单元测试中保证了单元测试的完整性和可靠性,从而进一步提高测试的可测性。
附图说明
图1为本发明实施例1的测试单元内可测试函数的关系原理图。
图2为本发明实施例1的方法流程图示意图。
图3为本发明实施例2的测试单元内可测试函数的划分原理图。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征更易被本领域技术人员理解,从而对本发明的保护范围作出更为清楚的界定。
实施例1:
本实施例提供的一种测试单元内可测试函数的划分方法,用于对测试单元内的函数进行测试,通常现有技术中,其仅对某些特定的函数进行测试,测试不完全,系统有可能存在潜在bug。当稳定要求较高时,则会采取对测试单元内的都有函数进行测试,而这种测试方式的测试用例数量将大大增加,测试效率低且工作量大。而本实施例所提供的划分方法,是通过特定的逻辑对测试单元内函数进行划分,并对划分后的小单元进行测试,这样既可以保证测试函数的覆盖性,同时也能够大大降低测试用例的数量,从而获得较高的测试效率。
具体的,为了方便描述,本实施例所提及的测试单元指的时被测试的软件代码模块,其中包括了若干的可重入函数和不可重入函数,而这些函数之间可能会存在相互调用的关系,可以入图1所示,其中A为不可重入函数,B为可重入函数,箭头联系代表了其连接关系,而且箭头所指的为被调用函数。
具体的,如图2所示,划分方法包括如下步骤:
S10、首先对软件模块进行整体分析,获取其函数列表以及各个函数之间的调用关系,并构建函数调用关系图。
S20、根据该函数调用关系图,识别出这些函数的可重入性,即确定其函数属性为可重入函数或者不可重入函数。可重入函数即在执行过程中可以被中断的函数,而不可重入函数则不能被中断。最后根据可重入性划分优先级,本实施例中,将可重入函数划分为高优先级函数,而不可重入函数划分为低优先级函数,该优先级分布用于在后续测试过程中作为函数测试的先后依据。
S30、对可重入函数进行归类划分,在同一个优先级内根据功能逻辑将所有可重入函数为多个可重入小单元,且每个可存入小单元均有唯一一个可驱动该小单元执行特定功能的关键函数接口。依据功能特征划分是最常见的做法,因为能验证功能运行结果是不是符合预期,从而判断划分出来的可重入小单元内部有没有错误。具体包括如下子步骤:
S31、首先需要对该优先级内的所有可重入函数的函数接口进行采集。
S32、在这些函数接口中筛选出被不可重入函数直接调用的函数接口,同时确定这个接口是否是唯一的接口,如果是,则将其定义为关键函数接口。
S33、在确定了关键函数接口后,开始对关键函数接口关联的函数进行归类,即,首先创建与关键函数接口数量相同的分组,然后逐一针对每个关键函数接口对应函数的调用关系,将其所调用的函数均归类到该分组中。从而形成一个一个小组。可以理解的,在复杂软件系统中,通常底层函数会被多个关键函数接口对应的函数调用,因此在分组是允许这部分函数被分类到多个小组中。虽然其测试存在重复性,但是由于从整体角度看,其测试的功能并不存在重复。而且能够很好地检验这类被多次调用的函数是否能够稳定运行。
S34、对步骤S33中被归为一类的函数进行定义,构成一个可重入小单元。该可重入小单元在测试时仅需运行一个测试用例,既可以完成对该可重入小单元里面函数的测试,只要其能达到预期的功能既可以认定为合格。这种做法的好处在于可以不用理会可测试小单元里面的下层函数是否发生改变,如果改变后仍然可以完成功能,则合格,相反则反馈测试不合格的结果。大大提高的测试效率。同时也不必要因为下层函数被修改而修改测试用例。
S40、按照优先级顺序将所述可重入小单元以及不可重入函数进行测试列队的构建,完成划分。具体的,如图3所示,其划分后按图中顺序1,2,3,4,……N,N+1,(N+1)’进行列队。其中,1~N为归类好之后的可重入小单元,N+1则是同时与这些可重入小单元存在调用关系的不可重入单元,而(N+1)’则是将整体作为一个大的测试单元。可以明显如此归类后,测试队列中的可重入小单元排列先于不可重入函数。并且更加具有集成性质,在具体的单元测试中保证了单元测试的完整性和可靠性,从而进一步提高单元的可测性。
最后,在准备测试用例时,仅需要准备与测试队列中单元数量相同的测试用例即可,测试列队的每个单元对应至少一个测试用例,这样就大大减少了测试用例的需求量。
实施例2:
本实施例在实施例1的基础上,还提供一种函数测试方法,包括如下步骤:
A10、利用实施例1的划分方法对测试单元内可测试函数进行划分;
A20、建立与测试队列内的函数相对应的测试用例队列;
A30、根据测试列队顺序执行测试用例。
其中测试过程中,还包括监控步骤,所述监控步骤包括如下子步骤:
A41、监控测试单元内所有可测试函数是否发生变化,若有则执行步骤A42;
A42、判断变化函数所对应的函数接口是否为关键函数接口,若是,则返回步骤A10,否则忽略。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (8)
1.一种测试单元内可测试函数的划分方法,其特征在于,包括如下步骤:
S10、获取测试对象的函数调用关系;
S20、识别待测试函数中的可重入性,根据可重入性划分优先级;
S30、在同一个优先级内根据功能逻辑将所有可重入函数为多个可重入小单元,且每个可存入小单元均有唯一一个可驱动该小单元执行特定功能的关键函数接口;
S40、按照优先级顺序将所述可重入小单元以及不可重入函数进行测试列队的构建,完成划分。
2. 根据权利要求1所述的测试单元内可测试函数的划分方法,其特征在于, 所述步骤30包括如下子步骤:
S31、采集统一优先级内所有可重入函数的函数接口;
S32、筛选出被不可重入函数直接调用的函数接口,并定义为关键函数接口;
S33、将步骤S32中的关键函数接口分成若干个小组,对该小组内的关键函数接口对应的函数,以及关键函数接口对应函数所调用的可重入函数进行归类;
S34、对步骤S33中被归为一类的函数进行定义,构成多个可重入小单元。
3.根据权利要求1所述的测试单元内可测试函数的划分方法,其特征在于,所述步骤S20中优先级划分依据为,可重入函数的优先级高于不可重入函数的优先级。
4.根据权利要求1所述的测试单元内可测试函数的划分方法,其特征在于,所述测试队列中的可重入小单元排列先于不可重入函数。
5.根据权利要求1所述的测试单元内可测试函数的划分方法,其特征在于,所述测试列队的每个单元对应至少一个测试用例。
6.根据权利要求1所述的测试单元内可测试函数的划分方法,其特征在于,所述列队还包括设置在列队最后的包括所有可测试函数的单元。
7.一种函数测试方法,其特征在于,包括如下步骤:
A10、利用权利要求1~6中的任一项所述的划分方法对测试单元内可测试函数进行划分;
A20、建立与测试队列内的函数相对应的测试用例队列;
A30、根据测试列队顺序执行测试用例。
8.根据权利要求7所述的测试方法,其特征在于,还包括监控步骤,所述监控步骤包括如下子步骤:
A41、监控测试单元内所有可测试函数是否发生变化,若有则执行步骤A42;
A42、判断变化函数所对应的函数接口是否为关键函数接口,若是,则返回步骤A10,否则忽略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810422933.8A CN108845928B (zh) | 2018-05-05 | 2018-05-05 | 测试单元内可测试函数的划分方法及测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810422933.8A CN108845928B (zh) | 2018-05-05 | 2018-05-05 | 测试单元内可测试函数的划分方法及测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108845928A true CN108845928A (zh) | 2018-11-20 |
CN108845928B CN108845928B (zh) | 2022-03-22 |
Family
ID=64212863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810422933.8A Active CN108845928B (zh) | 2018-05-05 | 2018-05-05 | 测试单元内可测试函数的划分方法及测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108845928B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567207A (zh) * | 2012-01-14 | 2012-07-11 | 惠州市德赛西威汽车电子有限公司 | 一种嵌入式系统的调试方法及其调试装置 |
CN102831058A (zh) * | 2012-08-17 | 2012-12-19 | 北京星网锐捷网络技术有限公司 | 一种测试方法和装置 |
CN103885881A (zh) * | 2014-04-03 | 2014-06-25 | 北京航空航天大学 | 一种基于VxWorks系统多任务机制的高实时并发测试方法 |
US20150039285A1 (en) * | 2013-07-31 | 2015-02-05 | Jin J. QIAN | Methods and systems for scalable session emulation |
-
2018
- 2018-05-05 CN CN201810422933.8A patent/CN108845928B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567207A (zh) * | 2012-01-14 | 2012-07-11 | 惠州市德赛西威汽车电子有限公司 | 一种嵌入式系统的调试方法及其调试装置 |
CN102831058A (zh) * | 2012-08-17 | 2012-12-19 | 北京星网锐捷网络技术有限公司 | 一种测试方法和装置 |
US20150039285A1 (en) * | 2013-07-31 | 2015-02-05 | Jin J. QIAN | Methods and systems for scalable session emulation |
CN103885881A (zh) * | 2014-04-03 | 2014-06-25 | 北京航空航天大学 | 一种基于VxWorks系统多任务机制的高实时并发测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108845928B (zh) | 2022-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102169846B (zh) | 一种在集成电路晶圆测试过程中实现多维变量密码并行写入的方法 | |
CN100583920C (zh) | 测试脚本的生成方法及装置和测试方法及装置及系统 | |
CN103870384B (zh) | 测试用例推定方法及系统 | |
CN105760296B (zh) | 自动化测试控制方法、装置及终端 | |
CN102662846A (zh) | 一种自动化工具与测试用例结合的测试方法 | |
CN103019942B (zh) | 一种基于安卓系统的待测应用自动测试方法和系统 | |
CN105138461A (zh) | 一种应用程序的接口测试方法及装置 | |
CN111339731B (zh) | 一种面向SoC的FPGA验证平台和验证方法 | |
CN106980571A (zh) | 一种测试用例集的构建方法和设备 | |
CN102236600A (zh) | 获得代码覆盖率的方法及装置 | |
CN108984403A (zh) | Fpga逻辑代码的验证方法及装置 | |
US6449750B1 (en) | Design verification device, method and memory media for integrated circuits | |
CN105808438A (zh) | 一种基于函数调用路径的测试用例复用方法 | |
CN105279092A (zh) | 一种软件测试的方法及装置 | |
CN105092994A (zh) | Esd检测方法、装置以及esd调试方法、装置 | |
CN103200040A (zh) | 基于专用芯片的接口信号质量的测试方法及系统 | |
CN101604276A (zh) | 通用串行总线测试方法 | |
CN106528364B (zh) | 基于存储器访问驱动的自动化协同验证平台的搭建方法 | |
CN107943635A (zh) | 一种存储设备的测试方法、装置及介质 | |
CN105893233A (zh) | 用于自动测试固件的方法和系统 | |
CN108845928A (zh) | 测试单元内可测试函数的划分方法及测试方法 | |
CN116451621A (zh) | 一种功能覆盖率代码生成方法、系统、设备及介质 | |
CN107818051A (zh) | 一种测试用例的跳转分析方法、装置及服务器 | |
CN103165405A (zh) | 一种通过gpib接口实时生成多维变量密码方法 | |
CN103759951B (zh) | 可同时测量多台农机车的制动性能测试仪的测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |