CN106201894A - 一种软件测试装置和方法 - Google Patents
一种软件测试装置和方法 Download PDFInfo
- Publication number
- CN106201894A CN106201894A CN201610580142.9A CN201610580142A CN106201894A CN 106201894 A CN106201894 A CN 106201894A CN 201610580142 A CN201610580142 A CN 201610580142A CN 106201894 A CN106201894 A CN 106201894A
- Authority
- CN
- China
- Prior art keywords
- code
- test
- tested
- interface
- software
- 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.)
- Pending
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/3676—Test management for coverage 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
本发明提供了一种软件测试装置和方法,该软件测试装置包括:分层模块,用于接收待测试软件,并将待测试软件分为代码层、功能层、交互层中的任意一个或多个;代码测试模块,用于对代码层进行测试,判断代码层是否通过测试,如果是,则触发功能测试模块;否则,提供未通过测试代码段;功能测试模块,用于接收代码测试模块的触发,对功能层进行测试,当功能层正常时,则触发自动化测试模块,当功能层异常时,则提供功能异常区域;自动化测试模块,用于在接收到功能测试模块的触发时,对交互层进行测试,当测试结果异常时,则提供待调整交互区域。本发明实施例提供的方案能够有效地提高软件测试效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种软件测试装置和方法。
背景技术
在软件开发过程中,为了能够保证软件的可用性,常常需要对软件进行测试,目前对于软件测试的方式主要是当软件开发结束之后,根据开发软件的各种功能对软件进行测试,如果某一功能运行过程中出现错误,需要测试人员从应用层面到代码层面依次向下排查,而这一排查的过程将消耗比较长的时间,导致软件测试效率较低。
发明内容
本发明实施例提供了一种软件测试装置和方法,能够有效地提高软件测试效率。
一种软件测试装置,分层模块、代码测试模块、功能测试模块及自动化测试模块,其中,
所述分层模块,用于接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;
所述代码测试模块,用于对所述分层模块分出的代码层进行测试,判断所述代码层是否通过测试,如果是,则触发所述功能测试模块;否则,提供未通过测试代码段;
所述功能测试模块,用于接收所述代码测试模块的触发,对所述分层模块分出的功能层进行测试,当所述功能层正常时,则触发所述自动化测试模 块,当所述功能层异常时,则提供功能异常区域;
所述自动化测试模块,用于在接收到所述功能测试模块的触发时,对所述分层模块分出的交互层进行测试,当测试结果异常时,则提供待调整交互区域。
优选地,所述代码测试模块,包括:单元测试子模块及代码走读子模块,其中,
所述单元测试子模块,用于将所述代码层的代码划分为接口代码区域、数据结构代码区域、执行路径代码区域、出错处理代码区域、边界条件代码区域及驱动代码区域中的任意一个或多个,并对划分出的每一个区域中的代码进行测试,当每一个区域均测试正常,则触发所述代码走读子模块;
所述代码走读子模块,用于接收到所述单元测试子模块的触发时,对待测试软件中的代码进行缺陷评审,生成评审意见,并建立代码与所述评审意见的对应关系,并提供所述对应关系,根据所述对应关系,接受对所述代码的修改。
优选地,所述功能测试模块,包括:黑盒测试子模块、分功能测试子模块及藕合测试子模块,其中,
所述黑盒测试子模块,用于为待测试软件确定至少一个测试用例,顺序将每一个测试用例运行于所述待测试软件,并计算代码覆盖率,当所述代码覆盖率达到预先设置的覆盖率阈值时,触发所述分功能测试子模块;
所述分功能测试子模块,用于利用测试用例对每一个功能进行分别测试,当每一个功能运行正常时,则触发所述藕合测试子模块,当任意功能运行异常时,则提供功能异常区域;
所述藕合测试子模块,用于接收到所述分功能测试子模块的触发时,利用测试实例对各个分功能间的藕合进行测试。
优选地,所述自动化测试模块,包括:界面测试子模块和接口测试子模块,其中,
所述界面测试子模块,用于遍历界面,获取所述界面中的操作对象,并 获取所述界面中的处理方法,利用测试用例对所述操作对象和所述处理方法进行测试;
所述接口测试子模块,用于对待测软件中组件间接口及所述待测试软件与外部***间的接口进行数据交换、数据传递及控制管理测试,生成对应的接口运行码。
优选地,上述软件测试装置,进一步包括:
线上监控模块,用于当所述接口测试子模块进行检测的过程中,对每一个接口进行监控,获取所述接口测试子模块生成的接口运行码,并以日志方式集成所述接口运行码。
优选地,所述黑盒测试子模块,用于:
确定每一个测试用例对应的测试代码覆盖率;
对比各个测试用例间的代码,并确定各个测试用例间重复代码覆盖率;
根据下述计算公式(1),计算代码覆盖率;
其中,ω表征代码覆盖率;ωi表征测试用例i的测试代码覆盖率;θj表征每两个测试用例间重复代码覆盖率。
一种软件测试方法,包括:
接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;
对所述代码层进行测试,判断所述代码层是否通过测试,如果是,则对所述分层模块分出的功能层进行测试;否则,提供未通过测试代码段;
当所述功能层异常时,则提供功能异常区域;
当所述功能层正常时,则对所述交互层进行测试,当所述交互层测试结果异常时,则提供待调整交互区域。
优选地,所述对所述代码层进行测试,包括:
将所述代码层的代码划分为接口代码区域、数据结构代码区域、执行路径代码区域、出错处理代码区域、边界条件代码区域及驱动代码区域中的任 意一个或多个,并对划分出的每一个区域中的代码进行测试;
当每一个区域均测试正常,则对待测试软件中的代码进行缺陷评审,生成评审意见,并建立代码与所述评审意见的对应关系,并提供所述对应关系,根据所述对应关系,接受对所述代码的修改。
优选地,所述对功能层进行测试,包括:
为待测试软件确定至少一个测试用例,顺序将每一个测试用例运行于所述待测试软件,并计算代码覆盖率;
当所述代码覆盖率达到预先设置的覆盖率阈值时,利用测试用例对每一个功能进行分别测试,当每一个功能运行正常时,则利用测试实例对各个分功能间的藕合进行测试,当任意功能运行异常时,则提供功能异常区域。
优选地,所述对所述交互层进行测试,包括:
遍历界面,获取所述界面中的操作对象,并获取所述界面中的处理方法,利用测试用例对所述操作对象和所述处理方法进行测试;
对待测软件中组件间接口及所述待测试软件与外部***间的接口进行数据交换、数据传递及控制管理测试,生成对应的接口运行码;
对每一个接口进行监控,获取所述接口测试子模块生成的接口运行码,并以日志方式集成所述接口运行码。
优选地,所述计算代码覆盖率,包括:
确定每一个测试用例对应的测试代码覆盖率;
对比各个测试用例间的代码,并确定各个测试用例间重复代码覆盖率;
根据下述计算公式(1),计算代码覆盖率;
其中,ω表征代码覆盖率;ωi表征测试用例i的测试代码覆盖率;θj表征每两个测试用例间重复代码覆盖率。
本发明实施例提供了一种软件测试装置和方法,该软件测试装置通过接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;通过代码测试模块对所述分层模块分出的代码层进行测试,判 断所述代码层是否通过测试,如果是,则触发所述功能测试模块;否则,提供未通过测试代码段;通过功能测试模块接收代码测试模块的触发,对分层模块分出的功能层进行测试,当功能层正常时,则触发自动化测试模块,当功能层异常时,则提供功能异常区域;在接收到所述功能测试模块的触发时,通过自动化测试模块对所述分层模块分出的交互层进行测试,当测试结果异常时,则提供待调整交互区域,通过该过程实现了对每一个区块进行测试,能够准确的标记出现问题的代码,而无须占用代码排查的时间,能够有效地提高软件测试效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种软件测试装置的结构示意图;
图2是本发明另一个实施例提供的一种软件测试装置的结构示意图;
图3是本发明又一个实施例提供的一种软件测试装置的结构示意图;
图4是本发明另一个实施例提供的一种软件测试装置的结构示意图;
图5是本发明又一个实施例提供的一种软件测试装置的结构示意图;
图6是本发明一个实施例提供的一种软件测试方法的流程图;
图7是本发明另一个实施例提供的一种软件测试方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所 获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供一种软件测试装置,该软件测试装置,包括:分层模块101、代码测试模块102、功能测试模块103及自动化测试模块104,其中,
所述分层模块101,用于接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;
所述代码测试模块102,用于对所述分层模块101分出的代码层进行测试,判断所述代码层是否通过测试,如果是,则触发所述功能测试模块103;否则,提供未通过测试代码段;
所述功能测试模块103,用于接收所述代码测试模块102的触发,对所述分层模块101分出的功能层进行测试,当所述功能层正常时,则触发所述自动化测试模块104,当所述功能层异常时,则提供功能异常区域;
所述自动化测试模块104,用于在接收到所述功能测试模块103的触发时,对所述分层模块101分出的交互层进行测试,当测试结果异常时,则提供待调整交互区域。
在图1所示的实施例中,通过接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;通过代码测试模块对所述分层模块分出的代码层进行测试,判断所述代码层是否通过测试,如果是,则触发所述功能测试模块;否则,提供未通过测试代码段;通过功能测试模块接收代码测试模块的触发,对分层模块分出的功能层进行测试,当功能层正常时,则触发自动化测试模块,当功能层异常时,则提供功能异常区域;在接收到所述功能测试模块的触发时,通过自动化测试模块对所述分层模块分出的交互层进行测试,当测试结果异常时,则提供待调整交互区域,通过该过程实现了对每一个区块进行测试,能够准确的标记出现问题的代码,而无须占用代码排查的时间,能够有效地提高软件测试效率。
如图2所示,在本发明另一实施例中,所述代码测试模块102,包括:单元测试子模块201及代码走读子模块202,其中,
所述单元测试子模块201,用于将所述代码层的代码划分为接口代码区域、数据结构代码区域、执行路径代码区域、出错处理代码区域、边界条件代码区域及驱动代码区域中的任意一个或多个,并对划分出的每一个区域中的代码进行测试,当每一个区域均测试正常,则触发所述代码走读子模块202;
所述代码走读子模块202,用于接收到所述单元测试子模块201的触发时,对待测试软件中的代码进行缺陷评审,生成评审意见,并建立代码与所述评审意见的对应关系,并提供所述对应关系,根据所述对应关系,接受对所述代码的修改。
如图3所示,在本发明又一实施例中,所述功能测试模块103,包括:黑盒测试子模块301、分功能测试子模块302及藕合测试子模块303,其中,
所述黑盒测试子模块301,用于为待测试软件确定至少一个测试用例,顺序将每一个测试用例运行于所述待测试软件,并计算代码覆盖率,当所述代码覆盖率达到预先设置的覆盖率阈值时,触发所述分功能测试子模块302;
所述分功能测试子模块302,用于利用测试用例对每一个功能进行分别测试,当每一个功能运行正常时,则触发所述藕合测试子模块303,当任意功能运行异常时,则提供功能异常区域;
所述藕合测试子模块303,用于接收到所述分功能测试子模块302的触发时,利用测试实例对各个分功能间的藕合进行测试。
如图4所示,在本发明又一实施例中,所述自动化测试模块104,包括:界面测试子模块401和接口测试子模块402,其中,
所述界面测试子模块401,用于遍历界面,获取所述界面中的操作对象,并获取所述界面中的处理方法,利用测试用例对所述操作对象和所述处理方法进行测试;
所述接口测试子模块402,用于对待测软件中组件间接口及所述待测试软件与外部***间的接口进行数据交换、数据传递及控制管理测试,生成对应的接口运行码。
如图5所示,在本发明另一实施例中,上述软件测试装置,进一步包括:
线上监控模块501,用于当所述接口测试子模块进行检测的过程中,对每一个接口进行监控,获取所述接口测试子模块402生成的接口运行码,并以日志方式集成所述接口运行码。
在本发明另一实施例中,所述黑盒测试子模块301,用于确定每一个测试用例对应的测试代码覆盖率;对比各个测试用例间的代码,并确定各个测试用例间重复代码覆盖率;根据下述计算公式(1),计算代码覆盖率;
其中,ω表征代码覆盖率;ωi表征测试用例i的测试代码覆盖率;θj表征每两个测试用例间重复代码覆盖率。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见下述本发明方法实施例中的叙述,此处不再赘述。
如图6所示,本发明实施例提供了一种软件测试方法,该方法可以包括以下步骤:
步骤601:接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;
步骤602:对所述代码层进行测试,判断所述代码层是否通过测试,如果是,则执行步骤603;否则,执行步骤604;
步骤603:对所述功能层进行测试,并执行步骤605;
步骤604:提供未通过测试代码段,并结束当前流程;
步骤605:判断所述功能层是否异常,如果是,则执行步骤606;否则,执行步骤607;
步骤606:提供功能异常区域,并结束当前流程;
步骤607:对所述交互层进行测试,当所述交互层测试结果异常时,则提供待调整交互区域。
在本发明一个实施例中,为了保证代码层测试的完整性,步骤603的具体实施方式,包括:将所述代码层的代码划分为接口代码区域、数据结构代 码区域、执行路径代码区域、出错处理代码区域、边界条件代码区域及驱动代码区域中的任意一个或多个,并对划分出的每一个区域中的代码进行测试;当每一个区域均测试正常,则对待测试软件中的代码进行缺陷评审,生成评审意见,并建立代码与所述评审意见的对应关系,并提供所述对应关系,根据所述对应关系,接受对所述代码的修改。通过上述过程将代码划分为不同的区域,对每个区域的代码进行测试,使测试覆盖范围尽可能的完整,另外,对于有问题的区域直接提供给编程人员,节约了编程人员的查找过程。
在本发明一个实施例中,所述对所述功能层进行测试,包括:为待测试软件确定至少一个测试用例,顺序将每一个测试用例运行于所述待测试软件,并计算代码覆盖率;当所述代码覆盖率达到预先设置的覆盖率阈值时,利用测试用例对每一个功能进行分别测试,当每一个功能运行正常时,则利用测试实例对各个分功能间的藕合进行测试,当任意功能运行异常时,则提供功能异常区域。通过该过程实现了对各个功能进行测试,同时对功能间的耦合进行测试,保证了功能测试的准确性。
在本发明一个实施例中,步骤607的具体实施方式,包括:遍历界面,获取所述界面中的操作对象,并获取所述界面中的处理方法,利用测试用例对所述操作对象和所述处理方法进行测试;对待测软件中组件间接口及所述待测试软件与外部***间的接口进行数据交换、数据传递及控制管理测试,生成对应的接口运行码;对每一个接口进行监控,获取所述接口测试子模块生成的接口运行码,并以日志方式集成所述接口运行码;通过该过程实现了对交互界面、交互接口进行测试,有效地保证了交互过程的准确性,另外,通过对接口进行监控可以实时发现接口进行数据交互过程中的运行状态,从而实现对待测试软件运行过程的监控,保证待测软件运行正常。
在本发明一个实施例中,所述计算代码覆盖率,包括:确定每一个测试用例对应的测试代码覆盖率;对比各个测试用例间的代码,并确定各个测试用例间重复代码覆盖率;根据下述计算公式(1),计算代码覆盖率;
其中,ω表征代码覆盖率;ωi表征测试用例i的测试代码覆盖率;θj表征每两个测试用例间重复代码覆盖率。
如图7所示,本发明另一实施例提供了一种软件测试方法,该方法可以包括以下步骤:
步骤701:接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;
在该步骤中,通过对待测试软件进行分层,实现了后续对不同分层的代码进行测试,如:在代码层主要是对编成人员编写的代码进行测试,对功能层是对代码实现的功能进行测试,而交互层主要是对界面和接口间数据交互过程进行测试,即从不同角度、不同层面对待测试软件进行测试,保证了测试的完整性。
步骤702:将所述代码层的代码划分为接口代码区域、数据结构代码区域、执行路径代码区域、出错处理代码区域、边界条件代码区域及驱动代码区域;
为了进一步实现对代码层完整的测试,在该步骤中进一步根据代码的功能,将代码划分为不同的代码区域,以方便后续针对每一个区域进行测试,从而进一步保证测试的准确性。
步骤703:对划分出的每一个区域中的代码进行测试;
步骤704:判断每一个区域中的代码是否均正常,如果是,则执行步骤705,否则,执行步骤708;
该过程主要是为了保证每一区域的代码均可正常运行,只有在基层代码正常,后续功能层测试才能比较准确。
步骤705:对待测试软件中的代码进行缺陷评审,生成评审意见;
步骤706:建立代码与所述评审意见的对应关系,并提供所述对应关系;
步骤707:根据所述对应关系,接受对所述代码的修改,并执行步骤709;
步骤705至步骤707的具体过程主要通过代码走读的方式对代码间存在的缺陷进行评估,并针对缺陷生成对应的评审意见,以使编程人员根据该评 审意见进行修改,进一步完善待测试软件。
步骤708:对异常区域的代码段进行标记,并提供标记的异常区域的代码段,结束当前流程;
在上述步骤703对每一区域的代码进行测试过程中,如果测试出任意代码区域中的代码段异常或错误时,对该错误的代码段进行标记,以提醒编程人员需要修改的代码段,避免编程人员复查的过程,从而有效地提高了修改效率。
步骤709:为待测试软件确定至少一个测试用例,顺序将每一个测试用例运行于所述待测试软件,并计算代码覆盖率;
在该步骤中提及的代码覆盖率,主要是测试用例走过的代码量占总代码量的百分比,该计算的过程主要是:确定每一个测试用例对应的测试代码覆盖率;对比各个测试用例间的代码,并确定各个测试用例间重复代码覆盖率;根据下述计算公式(1),计算代码覆盖率;
其中,ω表征代码覆盖率;ωi表征测试用例i的测试代码覆盖率;θj表征每两个测试用例间重复代码覆盖率。
步骤710:当所述代码覆盖率达到预先设置的覆盖率阈值时,利用测试用例对每一个功能进行分别测试;
只有当代码覆盖率达到预先设置的覆盖率阈值如90%,才能说明该代码运行正常,如果未达到覆盖率阈值,则需要增加测试用例以保证代码覆盖率达到覆盖率阈值,保证各个测试用例能够对代码基本上能够完整地对代码进行测试,以方便利用这些测试用例进行该步骤的功能测试。
步骤711:判断每一个功能是否均正常,如果是,则执行步骤712,否则,执行步骤713;
步骤712:利用测试用例对各个分功能间的藕合进行测试,并执行步骤714;
步骤713:提供功能异常区域,并结束当前流程;
上述步骤711和步骤713是通过具体的测试用例对各项功能以及功能间的耦合进行的测试,从而进一步保证功能的完整性。
步骤714:判断各个分功能间的藕合是否正常,如果是,则执行步骤715,否则,执行步骤716;
步骤715:遍历界面,获取所述界面中的操作对象,并获取所述界面中的处理方法,利用测试用例对所述操作对象和所述处理方法进行测试,并执行步骤717;
步骤716:提供耦合异常的原因,并结束当前流程;
步骤717:对待测软件中组件间接口及所述待测试软件与外部***间的接口进行数据交换、数据传递及控制管理测试,生成对应的接口运行码;
步骤715和步骤717主要是针对具有交互功能的代码进行功能测试如交互界面、各个接口等进行数据交换、测试的重点是要检查数据的交换,传递和控制管理过程,以及***间的相互逻辑依赖关系等。接口测试适用于为其他***提供服务的底层框架***和中心服务***,主要测试这些***对外部提供的接口,验证其正确性和稳定性。
步骤718:对每一个接口进行监控,获取所述接口测试子模块生成的接口运行码,并以日志方式集成所述接口运行码。
尽量将所有的接口覆盖到,每个接口的异常情况,每个返回码都需要覆盖到,这样线上的功能基本就可以监控到了。作为分层测试的最后一个阶段,在这个阶段中需要对前面所有的层面有一个保障作用。在所有功能实现,通过了测试,如何可以正常的运行,以及长时间的运行,就需要线上监控层的保障。通过每天集成变化的运行码并发布,能够尽早发现缺陷并修复缺陷,将减少软件运行的风险。这样做将可以推动尽早发现缺陷;尽早估量软件的质量;尽早排除假设。
值得说明的是,上述每一层可以单独完成,即在软件开发中,每天持续对软件进行集成,并通过本发明提供的方法进行测试和评审,这些过程有许多的机会发现缺陷。从而实现从软件开发的起始即对软件进行测试,通过在 持续集成中实施持续测试和评审的活动,从而保证软件的完整性。
根据上述方案,本发明的各实施例,至少具有如下有益效果:
1.通过接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;通过代码测试模块对所述分层模块分出的代码层进行测试,判断所述代码层是否通过测试,如果是,则触发所述功能测试模块;否则,提供未通过测试代码段;通过功能测试模块接收代码测试模块的触发,对分层模块分出的功能层进行测试,当功能层正常时,则触发自动化测试模块,当功能层异常时,则提供功能异常区域;在接收到所述功能测试模块的触发时,通过自动化测试模块对所述分层模块分出的交互层进行测试,当测试结果异常时,则提供待调整交互区域,通过该过程实现了对每一个区块进行测试,能够准确的标记出现问题的代码,而无须占用代码排查的时间,能够有效地提高软件测试效率。
2.本发明通过将代测试软件划分为代码层、功能层、交互层,同时进一步的将代码层划分为接口代码区域、数据结构代码区域、执行路径代码区域、出错处理代码区域、边界条件代码区域及驱动代码区域,实现了对代码进行不同方式的测试,另外对于功能层的测试出了进行功能测试之外,还进行了黑盒测试和耦合测试,从不同角度对待测试软件进行测试,保证了测试的完整性和测试的准确性。
3.通过线上监控对代测试软件中的各个接口进行监控,并获取到接口测试子模块生成的接口运行码,并以日志方式集成所述接口运行码,实现了对待测试软件的线上实时监控,从而保证待测试软件运行过程正常。
4.本发明提供的软件测试装置从代码分层过程、代码测试过程、功能测试过程及后续的交互界面和交互接口测试过程均能够自动实现,只是当代码出现问题时,将出现问题代码区域提供给用户,使软件测试的智能化和自动化。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这 些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种软件测试装置,其特征在于,包括:分层模块、代码测试模块、功能测试模块及自动化测试模块,其中,
所述分层模块,用于接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;
所述代码测试模块,用于对所述分层模块分出的代码层进行测试,判断所述代码层是否通过测试,如果是,则触发所述功能测试模块;否则,提供未通过测试代码段;
所述功能测试模块,用于接收所述代码测试模块的触发,对所述分层模块分出的功能层进行测试,当所述功能层正常时,则触发所述自动化测试模块,当所述功能层异常时,则提供功能异常区域;
所述自动化测试模块,用于在接收到所述功能测试模块的触发时,对所述分层模块分出的交互层进行测试,当测试结果异常时,则提供待调整交互区域。
2.根据权利要求1所述的软件测试装置,其特征在于,所述代码测试模块,包括:单元测试子模块及代码走读子模块,其中,
所述单元测试子模块,用于将所述代码层的代码划分为接口代码区域、数据结构代码区域、执行路径代码区域、出错处理代码区域、边界条件代码区域及驱动代码区域中的任意一个或多个,并对划分出的每一个区域中的代码进行测试,当每一个区域均测试正常,则触发所述代码走读子模块;
所述代码走读子模块,用于接收到所述单元测试子模块的触发时,对待测试软件中的代码进行缺陷评审,生成评审意见,并建立代码与所述评审意见的对应关系,并提供所述对应关系,根据所述对应关系,接受对所述代码的修改。
3.根据权利要求1所述的软件测试装置,其特征在于,所述功能测试模块,包括:黑盒测试子模块、分功能测试子模块及藕合测试子模块,其中,
所述黑盒测试子模块,用于为待测试软件确定至少一个测试用例,顺序将每一个测试用例运行于所述待测试软件,并计算代码覆盖率,当所述代码覆盖率达到预先设置的覆盖率阈值时,触发所述分功能测试子模块;
所述分功能测试子模块,用于利用测试用例对每一个功能进行分别测试,当每一个功能运行正常时,则触发所述藕合测试子模块,当任意功能运行异常时,则提供功能异常区域;
所述藕合测试子模块,用于接收到所述分功能测试子模块的触发时,利用测试实例对各个分功能间的藕合进行测试。
4.根据权利要求1所述的软件测试装置,其特征在于,所述自动化测试模块,包括:界面测试子模块和接口测试子模块,其中,
所述界面测试子模块,用于遍历界面,获取所述界面中的操作对象,并获取所述界面中的处理方法,利用测试用例对所述操作对象和所述处理方法进行测试;
所述接口测试子模块,用于对待测软件中组件间接口及所述待测试软件与外部***间的接口进行数据交换、数据传递及控制管理测试,生成对应的接口运行码。
5.根据权利要求4所述的软件测试装置,其特征在于,进一步包括:
线上监控模块,用于当所述接口测试子模块进行检测的过程中,对每一个接口进行监控,获取所述接口测试子模块生成的接口运行码,并以日志方式集成所述接口运行码。
6.根据权利要求3所述的软件测试装置,其特征在于,所述黑盒测试子模块,用于:
确定每一个测试用例对应的测试代码覆盖率;
对比各个测试用例间的代码,并确定各个测试用例间重复代码覆盖率;
根据下述计算公式,计算代码覆盖率;
其中,ω表征代码覆盖率;ωi表征测试用例i的测试代码覆盖率;θj表征每两个测试用例间重复代码覆盖率。
7.一种软件测试方法,其特征在于,包括:
接收待测试软件,并将所述待测试软件分为代码层、功能层、交互层中的任意一个或多个;
对所述代码层进行测试,判断所述代码层是否通过测试,如果是,则对所述分层模块分出的功能层进行测试;否则,提供未通过测试代码段;
当所述功能层异常时,则提供功能异常区域;
当所述功能层正常时,则对所述交互层进行测试,当所述交互层测试结果异常时,则提供待调整交互区域。
8.根据权利要求7所述的方法,其特征在于,所述对所述代码层进行测试,包括:
将所述代码层的代码划分为接口代码区域、数据结构代码区域、执行路径代码区域、出错处理代码区域、边界条件代码区域及驱动代码区域中的任意一个或多个,并对划分出的每一个区域中的代码进行测试;
当每一个区域均测试正常,则对待测试软件中的代码进行缺陷评审,生成评审意见,并建立代码与所述评审意见的对应关系,并提供所述对应关系,根据所述对应关系,接受对所述代码的修改。
9.根据权利要求7所述的方法,其特征在于,所述对功能层进行测试,包括:
为待测试软件确定至少一个测试用例,顺序将每一个测试用例运行于所述待测试软件,并计算代码覆盖率;
当所述代码覆盖率达到预先设置的覆盖率阈值时,利用测试用例对每一个功能进行分别测试,当每一个功能运行正常时,则利用测试实例对各个分功能间的藕合进行测试,当任意功能运行异常时,则提供功能异常区域。
10.根据权利要求9所述的方法,其特征在于,
所述对所述交互层进行测试,包括:
遍历界面,获取所述界面中的操作对象,并获取所述界面中的处理方法,利用测试用例对所述操作对象和所述处理方法进行测试;
对待测软件中组件间接口及所述待测试软件与外部***间的接口进行数据交换、数据传递及控制管理测试,生成对应的接口运行码;
对每一个接口进行监控,获取所述接口测试子模块生成的接口运行码,并以日志方式集成所述接口运行码;
和/或,
所述计算代码覆盖率,包括:
确定每一个测试用例对应的测试代码覆盖率;
对比各个测试用例间的代码,并确定各个测试用例间重复代码覆盖率;
根据下述计算公式,计算代码覆盖率;
其中,ω表征代码覆盖率;ωi表征测试用例i的测试代码覆盖率;θj表征每两个测试用例间重复代码覆盖率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610580142.9A CN106201894A (zh) | 2016-07-21 | 2016-07-21 | 一种软件测试装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610580142.9A CN106201894A (zh) | 2016-07-21 | 2016-07-21 | 一种软件测试装置和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106201894A true CN106201894A (zh) | 2016-12-07 |
Family
ID=57492796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610580142.9A Pending CN106201894A (zh) | 2016-07-21 | 2016-07-21 | 一种软件测试装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106201894A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107257290A (zh) * | 2017-05-15 | 2017-10-17 | 中国电力科学研究院 | 一种开放式soa面向服务架构的测试方法及*** |
CN107688534A (zh) * | 2017-07-26 | 2018-02-13 | 平安科技(深圳)有限公司 | 分层测试方法、装置、计算机设备和存储介质 |
CN112306847A (zh) * | 2019-07-31 | 2021-02-02 | 深圳市腾讯计算机***有限公司 | 覆盖率数据的生成方法、装置及*** |
CN112416767A (zh) * | 2020-11-20 | 2021-02-26 | 建信金融科技有限责任公司 | 一种分布式***测试方法、装置和设备 |
CN113392017A (zh) * | 2021-06-25 | 2021-09-14 | 苏州高博软件技术职业学院 | 一种软件测试***及方法 |
CN113778845A (zh) * | 2020-11-17 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种***测试方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130074043A1 (en) * | 2011-09-21 | 2013-03-21 | Chengde Fu | Self Generating Automation System (SGAS) including framework for automation of software functional testing |
CN103412818A (zh) * | 2013-08-14 | 2013-11-27 | 迈普通信技术股份有限公司 | 自动化测试方法及*** |
US8752030B1 (en) * | 2006-03-09 | 2014-06-10 | Verizon Services Corp. | Process abstraction and tracking, systems and methods |
CN104572434A (zh) * | 2013-10-27 | 2015-04-29 | 西安群丰电子信息科技有限公司 | 用于软件测试的测试代码生成*** |
CN104598376A (zh) * | 2014-12-30 | 2015-05-06 | 中国科学院计算机网络信息中心 | 一种数据驱动的分层自动化测试***和方法 |
CN105068927A (zh) * | 2015-08-04 | 2015-11-18 | 株洲南车时代电气股份有限公司 | 基于关键字驱动的城轨传动控制单元自动化测试方法 |
-
2016
- 2016-07-21 CN CN201610580142.9A patent/CN106201894A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8752030B1 (en) * | 2006-03-09 | 2014-06-10 | Verizon Services Corp. | Process abstraction and tracking, systems and methods |
US20130074043A1 (en) * | 2011-09-21 | 2013-03-21 | Chengde Fu | Self Generating Automation System (SGAS) including framework for automation of software functional testing |
CN103412818A (zh) * | 2013-08-14 | 2013-11-27 | 迈普通信技术股份有限公司 | 自动化测试方法及*** |
CN104572434A (zh) * | 2013-10-27 | 2015-04-29 | 西安群丰电子信息科技有限公司 | 用于软件测试的测试代码生成*** |
CN104598376A (zh) * | 2014-12-30 | 2015-05-06 | 中国科学院计算机网络信息中心 | 一种数据驱动的分层自动化测试***和方法 |
CN105068927A (zh) * | 2015-08-04 | 2015-11-18 | 株洲南车时代电气股份有限公司 | 基于关键字驱动的城轨传动控制单元自动化测试方法 |
Non-Patent Citations (3)
Title |
---|
刘琛梅: "《测试架构师修炼之道 从测试工程师到测试架构师》", 30 April 2016 * |
王朔韬等: "《软件是这样"炼"成的 软件过程管理与软件测试》", 31 January 2016 * |
边耐政 等: "一种基于Selenium的Web自动化测试低耦合框架", 《计算机应用与软件》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107257290A (zh) * | 2017-05-15 | 2017-10-17 | 中国电力科学研究院 | 一种开放式soa面向服务架构的测试方法及*** |
CN107688534A (zh) * | 2017-07-26 | 2018-02-13 | 平安科技(深圳)有限公司 | 分层测试方法、装置、计算机设备和存储介质 |
WO2019019454A1 (zh) * | 2017-07-26 | 2019-01-31 | 平安科技(深圳)有限公司 | 分层测试方法、装置、计算机设备和存储介质 |
CN112306847A (zh) * | 2019-07-31 | 2021-02-02 | 深圳市腾讯计算机***有限公司 | 覆盖率数据的生成方法、装置及*** |
CN113778845A (zh) * | 2020-11-17 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种***测试方法和装置 |
CN112416767A (zh) * | 2020-11-20 | 2021-02-26 | 建信金融科技有限责任公司 | 一种分布式***测试方法、装置和设备 |
CN113392017A (zh) * | 2021-06-25 | 2021-09-14 | 苏州高博软件技术职业学院 | 一种软件测试***及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201894A (zh) | 一种软件测试装置和方法 | |
CN109784758B (zh) | 基于bim模型的工程质量监管预警***和方法 | |
CN106406881B (zh) | 用于分析形式化的需求以及定位错误的可缩放方法和*** | |
US20120060144A1 (en) | Test planning tool for software updates | |
CN103870384B (zh) | 测试用例推定方法及*** | |
CN102004486A (zh) | 石化过程中基于定性sdg的故障混合诊断方法 | |
CN105718370A (zh) | 一种Android设备测试方法及测试装置 | |
CN110347580A (zh) | 一种构建非嵌入式软件可靠性测试过程模型的方法 | |
Bigonha et al. | The usefulness of software metric thresholds for detection of bad smells and fault prediction | |
CN113536611B (zh) | 基于离散仿真的自主式交通***架构正确性的检查方法 | |
Caglayan et al. | Predicting defective modules in different test phases | |
CN115357906A (zh) | 面向网络安全等级保护2.0的智能辅助测评方法及*** | |
Nagappan et al. | Preliminary results on using static analysis tools for software inspection | |
CN104598375B (zh) | 一种用于软件开发的缺陷预测方法 | |
CN108427778B (zh) | 电子装备的可测试性分析方法及装置 | |
CN106203557A (zh) | 油田车辆运输互联网监管***和监管方法 | |
CN103293410B (zh) | 服务器功耗检测方法与装置 | |
CN107357734A (zh) | 一种单元测试方法和装置 | |
CN111143432A (zh) | 一种事件处理结果的数据分析预警***及方法 | |
Stürmer et al. | Model quality assessment in practice: How to measure and assess the quality of software models during the embedded software development process | |
CN113386976B (zh) | 一种大型飞机燃油***全模试验方法 | |
Ferrell et al. | Modeling and performance considerations for automated fault isolation in complex systems | |
CN115269389A (zh) | 一种项目质量确定方法、装置、电子设备及存储介质 | |
CN104461870B (zh) | 记录测试结果的方法及装置 | |
CN114638096A (zh) | 一种程序变量间的逻辑展示方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20161207 |