软件测试装置及其软件测试方法与流程

文档序号:11918209阅读:319来源:国知局
软件测试装置及其软件测试方法与流程

本发明是关于一种软件测试装置及其软件测试方法。具体而言,本发明提供一种用于测试一被测试程序码的软件测试机制,其基于被测试程序码的一难以检测程序码的一条件叙述树状结构,使用支援向量机,建立支援向量回归预估式,以使用支援向量回归预估式,自多个候选测试档中,选出一最佳候选测试档,来提高被测试程序码的程序码涵盖率。



背景技术:

随着电脑科技的发展,通过各式各样的智能装置运行特定软件,人们得以解决生活不同的目的并获得其需求。然而,在软件的程序码撰写完成后,如何进行程序码的整体测试以确保软件可正常运作是相当重要的议题。

程序码涵盖率是目前软件测试中一种常见的度量,其描述程序码被测试的比例和程度。一般而言,若程序码内容复杂度不高时,通常程序撰写者可自行检测,或通过输入简单的参数来确认程序码中的所有区段是否都会被执行,但当程序码复杂度较高,或者组成程序码的函数过多时,程序撰写者通常会利用可测试程序码涵盖率的软件来检测程序码中被执行的比例和程度。程序码涵盖率越高代表程序码会如预期执行并较少机会发生错误。

目前已存在许多以程序码涵盖率为依据的测试软件,其大部分的程序码测试机制都是通过不断地产生测试档,将其一一地作为程序码的输入参数,并运行程序码,直到程序码涵盖率达到一预期的目标。然而,这样的测试机制在程序码涵盖率未达到预期的目标前,所产生的测试档的数量及 执行程序码的次数可能相当庞大,故相当耗费时间且所产生的该多个测试档中可能存在绝大部分的测试档对于提升程序码涵盖率的效益是相同的(即使用一个测试档与多个测试档对于提升程序码涵盖率的效益是相同的)。

有鉴于此,本领域亟需一种程序码测试机制,其可有效地降低所需被使用以执行程序码的测试档的数量,进而降低使程序码涵盖率达到预期的目标所需的软件测试时间。



技术实现要素:

本发明的目的在于提供一种程序码测试机制,其基于被测试程序码的一难以检测程序码的一条件叙述树状结构,使用支援向量机对多个基本测试档进行学习,以建立支援向量回归预估式,并使用支援向量回归预估式自多个候选测试档中,选出一最佳候选测试档,来提高被测试程序码的程序码涵盖率。据此,不同于已知的程序码测试机制,本发明在为将多个测试档作为程序码的输入并运行程序码前,可预先挑选出较适合的测试档,以减少需被使用以执行程序码的测试档的数量,进而降低使程序码涵盖率达到预期的目标所需的软件测试时间。

为达上述目的,本发明揭露一种软件测试装置,其包含一储存器以及一处理器。该储存器用以储存一软件测试程序、一被测试程序码、多个基本测试档及多个候选测试档。该被测试程序码包含一难以检测程序码(hard-to-detect code),以及该难以检测程序码具有至少一难以检测区段(hard-to-detect section)。该处理器电性连接至该储存器,并运行该软件测试程序,以进行下列操作:(a)解析该难以检测程序码,以产生该难以检测程序码的一条件叙述树状结构(condition-statement tree),该条件叙述树状结构包含多个条件叙述节点(condition statement node)及多个叙述节点(statement node),各该至少一难以检测区段由该多个条件叙述节点的一目标条件叙述节点及该多个叙述节点的一目标叙述节点所组成;(b)针对各该至少一难以检测区段的该目标条件叙述节点,根据该条件叙述树状结构,分别 使用各该基本测试档作为该被测试程序码的一输入,以运行该被测试程序码,以获得对应至各该基本测试档的该目标条件叙述节点的一母(parent)条件叙述节点的一第一启动次数(activation count)以及至少一同阶(sibling)条件叙述节点的一第二启动次数;(c)根据各该基本测试档及对应至各该至少一难以检测区段的该目标条件叙述节点的该第一启动次数与该第二启动次数,使用一支援向量机(SVM),建立一支援向量回归预估式(SVR predictor);(d)针对各该候选测试档,将该候选测试档输入至该支援向量回归预估式,以获得各该至少一难以检测区段的该目标条件叙述节点的该母条件叙述节点的一第一预估启动次数以及该至少一同阶条件叙述节点的一第二预估启动次数;(e)针对各该至少一难以检测区段的该目标条件叙述节点,根据该多个基本测试档所对应的该多个第一启动次数与该多个第二启动次数及各该候选测试档所对应的该第一预估启动次数及该第二预估启动次数,计算对应至各该候选测试档的一执行几率度量(activation probability metric);以及(f)根据对应至各该候选测试档的该多个执行几率度量,决定该多个候选测试档其中之一为一最佳候选测试档。

此外,本发明更揭露一种用于一软件测试装置的软件测试方法。该软件测试装置包含一储存器以及一处理器。该储存器用以储存一软件测试程序、一被测试程序码、多个基本测试档及多个候选测试档。该被测试程序码包含一难以检测程序码,以及该难以检测程序码具有至少一难以检测区段。该处理器电性连接至该储存器并运行该软件测试程序以执行该软件测试方法,该软件测试方法包含下列步骤:(a)解析该难以检测程序码,以产生该难以检测程序码的一条件叙述树状结构,该条件叙述树状结构包含多个条件叙述节点及多个叙述节点,各该至少一难以检测区段由该多个条件叙述节点的一目标条件叙述节点及该多个叙述节点的一目标叙述节点所组成;(b)针对各该至少一难以检测区段的该目标条件叙述节点,根据该条件叙述树状结构,分别使用各该基本测试档作为该被测试程序码的一输入,以运行该被测试程序码,以获得对应至各该基本测试档的该目标条件叙述节点的一母条 件叙述节点的一第一启动次数以及至少一同阶条件叙述节点的一第二启动次数;(c)根据各该基本测试档及对应至各该至少一难以检测区段的该目标条件叙述节点的该第一启动次数与该第二启动次数,使用一支援向量机,建立一支援向量回归预估式;(d)针对各该候选测试档,将该候选测试档输入至该支援向量回归预估式,以获得各该至少一难以检测区段的该目标条件叙述节点的该母条件叙述节点的一第一预估启动次数以及该至少一同阶条件叙述节点的一第二预估启动次数;(e)针对各该至少一难以检测区段的该目标条件叙述节点,根据该多个基本测试档所对应的该多个第一启动次数与该多个第二启动次数及各该候选测试档所对应的该第一预估启动次数及该第二预估启动次数,计算对应至各该候选测试档的一执行几率度量;以及(f)根据对应至各该候选测试档的该多个执行几率度量,决定该多个候选测试档其中之一为一最佳候选测试档。

另外,本发明更揭露一种内储有一软件测试程序的电脑程序产品。该电脑程序产品经由一软件测试装置载入后,该软件测试装置执行该电脑程序产品所包含的多个程序指令,以执行一软件测试方法。该软件测试装置储存一被测试程序码、多个基本测试档及多个候选测试档。该被测试程序码包含一难以检测程序码,以及该难以检测程序码具有至少一难以检测区段。该软件测试方法包含下列步骤:(a)解析该难以检测程序码,以产生该难以检测程序码的一条件叙述树状结构,该条件叙述树状结构包含多个条件叙述节点及多个叙述节点,各该至少一难以检测区段由该多个条件叙述节点的一目标条件叙述节点及该多个叙述节点的一目标叙述节点所组成;(b)针对各该至少一难以检测区段的该目标条件叙述节点,根据该条件叙述树状结构,分别使用各该基本测试档作为该被测试程序码的一输入,以运行该被测试程序码,以获得对应至各该基本测试档的该目标条件叙述节点的一母条件叙述节点的一第一启动次数以及至少一同阶条件叙述节点的一第二启动次数;(c)根据各该基本测试档及对应至各该至少一难以检测区段的该目标条件叙述节点的该第一启动次数与该第二启动次数,使用一支援向量机,建立一支援 向量回归预估式;(d)针对该多个候选测试档,将各该候选测试档输入至该支援向量回归预估式,以获得各该至少一难以检测区段的该目标条件叙述节点的该母条件叙述节点的一第一预估启动次数以及该至少一同阶条件叙述节点的一第二预估启动次数;(e)针对各该至少一难以检测区段的该目标条件叙述节点,根据该多个基本测试档所对应的该多个第一启动次数与该多个第二启动次数及各该候选测试档所对应的该第一预估启动次数及该第二预估启动次数,计算对应至各该候选测试档的一执行几率度量;以及(f)根据对应至各该候选测试档的该多个执行几率度量,决定该多个候选测试档其中之一为一最佳候选测试档。

在参阅附图及随后描述的实施方式后,此本领域技术人员便可了解本发明的其他目的,以及本发明的技术手段及实施态样。

【附图说明】

图1是本发明第一实施例的软件测试装置1的示意图;

图2是描绘一难以检测程序码及其一条件叙述树状结构;

图3是本发明第一实施例的软件测试方法的流程图;以及

图4是本发明第二实施例的软件测试方法的额外步骤的流程图。

【符号说明】

1:软件测试装置

11:储存器

13:处理器

HTDC:难以检测程序码

CST:条件叙述树状结构

HTDS:难以检测区段

C1、C2、C3、C4、C5、C6:条件叙述节点

L1、L2、L3、L4、L5:叙述节点

【具体实施方式】

以下将通过实施方式来解释本发明之内容。本发明是关于软件测试装置其软件测试方法。须说明者,本发明的实施例并非用以限制本发明须在如实施例所述的任何特定的环境、应用或特殊方式方能实施。因此,有关实施例的说明仅为阐释本发明的目的,而非用以限制本发明,且本案所请求的范围,以申请专利范围为准。除此之外,于以下实施例及图式中,与本发明非直接相关的元件已省略而未绘示,且以下图式中各元件间的尺寸关系仅为求容易了解,非用以限制实际比例。

本发明的第一实施例请参考第1、2、3图。图1是本发明的一软件测试装置1的示意图。软件测试装置1包含一储存器11以及一处理器13。储存器11储存一软件测试程序、一被测试程序码、多个基本测试档及多个候选测试档。被测试程序码包含一难以检测程序码(hard-to-detect code),以及该难以检测程序码具有至少一难以检测区段(hard-to-detect section)。

具体而言,本发明的软件测试程序是可与一以程序码涵盖率为依据的测试软件(例如:由SmartBear公司所开发的AQtime测试软件)相互搭配运行,或者包含于一以程序码涵盖率为依据的测试软件中。本发明借由使用以程序码涵盖率为依据的测试软件可自被测试程序码找出难以检测程序码。须说明者,被测试程序码可由多个子程序码所组成,且经由测试软件执行后,可被分析出一个或多个子程序码其程序码涵盖率非百分的百(100%),在本文中,程序码涵盖率非100%的子程序码是称作难以检测程序码。

处理器13电性连接至储存器11,除了运行上述测试软件外,亦运行本发明的软件测试程序,以进行下述一系列操作(即图3所描绘的软件测试方法流程图中的各步骤),以自该多个候选测试档中,决定一最佳候选测试档,并尝试借由此最佳候选测试档提升难以检测程序码的程序码涵盖 率,进而提升被测试程序码的程序码涵盖率。

首先,于步骤S301中,解析难以检测程序码,以产生难以检测程序码的一条件叙述树状结构(condition-statement tree)。条件叙述树状结构包含多个条件叙述节点(condition statement node)及多个叙述节点(statement node)。各至少一难以检测区段由该多个条件叙述节点的一目标条件叙述节点及该多个叙述节点的一目标叙述节点所组成。

举例而言,图2绘示由Python程序语言撰写的一难以检测程序码HTDC及其条件叙述树状结构CST。难以检测程序码HTDC包含六个条件叙述cond_1、cond_2、cond_3、cond_4、cond_5、cond_6以及其相对应的叙述。借由解析难以检测程序码HTDC中的条件叙述,处理器13是可产生解析难以检测程序码HTDC的条件叙述树状结构CST。条件叙述树状结构CST包含条件叙述节点C1、C2、C3、C4、C5、C6及叙述节点S1、S2、S3、S4、S5。

在此范例中,难以检测程序码HTDC是包含一难以检测区段HTDS,其由条件叙述节点C6及叙述节点S5所组成。对于此难以检测区段HTDS,条件叙述节点C6是目标条件叙述节点,以及叙述节点S5是目标叙述节点。须说明者,虽然,此范例的难以检测程序码HTDC仅存在一个难以检测区段HTDS,但本领域技术人员可轻易了解任一个难以检测程序码可以包含一个或多个难以检测区段HTDS,且基于后续的说明,本领域技术人员可轻易了解本发明的技术手段可套用至包含一个或多个难以检测区段难的难以检测程序码。

接着,于步骤S303中,针对各至少一难以检测区段的目标条件叙述节点,根据条件叙述树状结构,分别使用各基本测试档作为被测试程序码的一输入,以运行被测试程序码,以获得对应至各基本测试档的目标条件叙述节点的一母(parent)条件叙述节点的一第一启动次数(activation count)以及至少一同阶(sibling)条件叙述节点的一第二启动次数。以图2为例,目标条件叙述节点C6的母条件叙述节点是条件叙述节点C1,而其同阶条件叙述节点是条件叙述节点C2、C3、C4、C5。第一启动次数及第二启动次数是 分别指母条件叙述节点C1及条件叙述节点C2、C3、C4、C5于以基本测试档作为被测试程序码的输入时并运行被测试程序码时被执行到的次数。

随后,于步骤S305中,根据各基本测试档及对应至各至少一难以检测区段的目标条件叙述节点的第一启动次数与第二启动次数,使用一支援向量机(SVM),建立一支援向量回归预估式(SVR predictor)。具体而言,支援向量机是一种本领域技术人员广为熟知监督式学习方法,其可对已知的输入与输出进行学习,以获得其输入与输出间的支援向量回归预估式。由于本领域技术人员可轻易了解如何基于程序撰写或已存在的程序工具实现支援向量机,故在此不再加以赘述。

步骤S305中是将各基本测试档作为输入以及将各至少一难以检测区段的目标条件叙述节点的第一启动次数与第二启动次数作出输出,并经由支援向量机学习后,获得各基本测试档与各至少一难以检测区段的目标条件叙述节点的第一启动次数与第二启动次数间的支援向量回归预估式。须说明者,该多个基本测试档可与用以输入至测试软件中以自被测试程序码中找出难以检测程序码的多个测试档相同,或者由程序设计者进一步地基于该多个测试档所产生;惟,该多个基本测试档的数目并非用以限制本发明。

此外,亦须说明者,本领域技术人员可基于上述说明可知,将各基本测试档作为支援向量机的输入前,可能需先对各基本测试档进行特征值的转换或撷取,而此特征值的转换或撷取是根据被测试程序码的输入特性以及支援向量机的输入形式所决定。举例而言,当被测试程序码是一影像分析软件的程序码且测试档为影像档,则输入至支援向量回归预估式的该多个基本影像档则可能需先被转换成矩阵形式来表示。再者,当被测试程序码是一资料分析软件的程序码且测试档为资料档,则输入至支援向量回归预估式的该多个基本资料档则可能需先经过筛选以撷取出较具有特征的数据参数。然而,由于本领域熟悉支援向量机的技术人员可轻易地基于被测试程序码的输入特性,判断是否需先对基本测试档进行处理,故在此不再加以赘述。

随后,于步骤S307中,针对各候选测试档,将该候选测试档输 入至支援向量回归预估式,以获得各至少一难以检测区段的目标条件叙述节点的母条件叙述节点的一第一预估启动次数以及至少一同阶条件叙述节点的一第二预估启动次数。换言之,本发明借由支援向量回归预估式,在无需将各候选测试档作为被测试程序码的输入,以运行被测试程序码时,即可预估相对于各候选测试档的各至少一难以检测区段的目标条件叙述节点的母条件叙述节点的第一预估启动次数以及至少一同阶条件叙述节点的第二预估启动次数,即如下列公式表示:

{PPACi,j,SPACi,j}=fSVR(TBj),其中fSVR(·)是TBj支援向量回归预估式,TBj是第j个候选测试档,PPACi,j是对应至第i个至少一难以检测区段的目标条件叙述节点及第j个候选测试档的第一预估启动次数;以及SPACi,j是对应至第i个至少一难以检测区段的目标条件叙述节点及第j个该候选测试档的第二预估启动次数。

类似地,须说明者,本领域技术人员可基于上述说明可知,将各候选测试档输入至支援向量回归预估式前,可能需先对各候选测试档进行特征值的转换或撷取,而此特征值的转换或撷取是根据被测试程序码的输入特性以及支援向量机的输入形式所决定。由于候选测试档输入至支援向量回归预估式前的处理是与基本测试档输入至支援向量机前的处理相同,且本领域技术人员可基于前述说明轻易了解,故在此亦不再加以赘述。此外,该多个候选测试档的数目亦可基于被测试程序码的输入特性所决定,或者由程序设计者依实务经验所决定;惟,该多个候选测试档的数目并非用以限制本发明。

接着,于步骤309中,针对各至少一难以检测区段的目标条件叙述节点,根据该多个基本测试档所对应的该多个第一启动次数与该多个第二启动次数及各候选测试档所对应的第一预估启动次数及第二预估启动次数,计算对应至各该候选测试档的一执行几率度量(activation probability metric)。举例而言,针对各至少一难以检测区段的目标条件叙述节点,对应至各候选测试档的执行几率度量可根据下列公式计算:

其中APMi,j是对应至第i个至少一难以检测区段的目标条件叙述节点及第j个候选测试档的执行几率度量;PPACi,j是对应至第i个至少一难以检测区段的目标条件叙述节点及第j个该候选测试档的第一预估启动次数;SPACi,j是对应至第i个至少一难以检测区段的目标条件叙述节点及第j个该候选测试档的第二预估启动次数;PACi,k是对应至第i个至少一难以检测区段的目标条件叙述节点及第k个基本测试档的第一启动次数;以及SACi,k是对应至第i个至少一难以检测区段的目标条件叙述节点及第k个基本测试档的第二启动次数。

最后,于步骤S311中,根据对应至各候选测试档的该多个执行几率度量,决定该多个候选测试档其中之一为一最佳候选测试档。就一般状况,具有较大值的执行几率度量的候选测试档是较有机会提升难以检测程序码的程序码涵盖率,故于本实施例中,处理器13可计算对应至各候选测试档的该多个执行几率度量的一加总值,以决定对应至最大的加总值的候选测试档为最佳候选测试档。然而,于其他实施例中,处理器13更可计算各候选测试档的该多个执行几率度量的一平均值、一中位数或一第一四分位数等来决定最佳候选测试档。

须说明者,前述本实施例的各步骤是仅以一难以检测程序码作为说明;然而,本领域技术人员可轻易了解前述步骤亦可同时套用至多个难以检测程序码中,将多个难以检测程序码中的至少一难以检测区段同时进行考量,以自该多个候选测试档中找出最佳候选测试档,故在此不加以赘述。此外,由上述说明可知,于本实施例中所阐述的软件测试方法可由具有多个程序指令(code)的软件测试程序来实现。软件测试程序是可储存于一电脑可读取储存媒体(non-transitory computer readable storage medium)中的一电脑程序产品。当软件测试程序被载入一电子装置(例如:软件测试装置1)并安装于其系统操作是统中时,软件测试程序执行如在本实施例中所述的软件测试方法。电脑可读取储存媒体可为一电子产品,例如唯读存储器(read only memory;ROM)、快闪存储器、软碟、硬盘、光盘(compact disk;CD)、随身碟、磁带、可由网络存取的资料库或熟习此项技艺者所已知且具有相同功能的任何其它储存媒体。

本发明的第二实施例亦请参考图1至图4。第二实施例是第一实施例的延伸。于处理器13执行完步骤309以选出最佳候选测试档后,处理器更执行其他操作,即本发明的软件测试方法更包含如图4所示的步骤。于步骤S313中,使用最佳候选测试档作为被测试程序码的一输入,以运行被测试程序码。随后,于步骤S315中,判断被测试程序码的一程序码涵盖率是否达到一要求涵盖率。

进一步言,于步骤309后,处理器13是将所选出的最佳候选测试档作为被测试程序码的输入并运行该被测试程序码;如此一来,处理器13除了基于基本测试档外,更基于最佳候选测试档,以获得被测试程序码的新的程序码涵盖率。同时,若新加入的最佳候选测试档已可让被测试程序码的程序码涵盖率满足测试人员所要求的涵盖率,则处理器13可结束执行软件测试程序。

反之,若新加入的最佳候选测试档仍无法让被测试程序码的程序码涵盖率满足测试人员所要求的涵盖率,则处理器13可自该多个候选测试档中选择第二佳候选测试档,以将其作为被测试程序码的输入并运行被测试程序码,进而再次获得被测试程序码的新的程序码涵盖率,并再次确认新的程序码涵盖率是否满足测试人员所要求的涵盖率。若仍不满足,则处理器13可再次自多个候选测试档中选择次佳的候选测试档,并再将其作为被测试程序码的输入并运行被测试程序码,进而再次获得被测试程序码的新的程序码涵盖率。须说明者,上述自该多个候选测试档中所选择的多个较佳候选测试档的数目是可依测试人员的需求所设定,其并非用以限制本发明。

此外,若新加入的最佳候选测试档仍无法让被测试程序码的程序码涵盖率满足测试人员所要求的涵盖率,则处理器13除了可自该多个候选测试档中选择其他次佳候选测试档外,亦可直接舍弃该多个非最佳候选测试 档,而额外产生新的一批候选测试档,并再次执行本发明的软件测式程序,即图3所示的该多个步骤,以自新的一批候选测试档中挑选出新的最佳候选测试档。

综上所述,本发明基于被测试程序码的一难以检测程序码的一条件叙述树状结构,使用支援向量机对多个基本测试档进行学习,以建立支援向量回归预估式,并使用支援向量回归预估式自多个候选测试档中,先选出一最佳候选测试档,才将此最佳候选测试档作为被测试程序码的输入并运行被测试程序码,以获得被测试程序码的新的程序码涵盖率。据此,不同于已知的程序码测试机制,本发明可先自多个测试档中进行筛选,以减少需被使用以执行程序码的测试档的数量,进而降低使程序码涵盖率达到预期的目标所需的软件测试时间。

上述的实施例仅用来例举本发明的实施态样,以及阐释本发明的技术特征,并非用来限制本发明的保护范畴。任何熟悉此技术者可轻易完成的改变或均等性的安排均属于本发明所主张的范围,本发明的权利保护范围应以申请专利范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1