软件测试方法及装置制造方法

文档序号:6548414阅读:204来源:国知局
软件测试方法及装置制造方法
【专利摘要】本发明公开了一种软件测试方法及装置。该方法包括:从待测软件的当前状态对应的所有状态切换操作中随机选择一个作为当前状态对应的目标操作,执行目标操作,将测试深度累加一次,获得当前测试深度;确定当前测试深度是否达到预设测试深度;如果是,则此次软件测试成功。通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。
【专利说明】软件测试方法及装置
【技术领域】
[0001]本发明涉及软件【技术领域】,特别涉及一种软件测试方法及装置。
【背景技术】
[0002]随着软件技术的迅速发展,出现了越来越多的计算机应用软件。软件运营商在设计好软件之后,为了保证软件能够正常运行,会对设计好的软件进行软件测试。软件测试是软件工程中非常重要的一个环节,良好的软件测试方法是软件质量的重要保障。
[0003]相关技术在进行软件测试时,会预先设计此次软件测试需要测试的功能的测试用例,并根据设计好的测试用例通过自动测试或人工测试的方法进行软件测试。具体地,对于每一个测试用例,均对应一个输入状态、一个输出状态以及从输入状态到输出状态需执行的每个状态切换操作。因此,在相关技术中,当使用自动测试的方法进行软件测试时,所采用的方法为:第一步,自动测试机获取为此次软件测试设计的测试用例,并按照测试用例的流程执行从该测试用例的输入状态到输出状态需执行的每个状态切换操作,获得输出状态。例如,如果从输入状态到输出状态需执行a、b和c三个状态切换操作,且测试用例设计的执行流程为a-b-c,则自动测试机按照a-b-c的顺序运行获得输出状态。第二步,判断此次软件测试的输出状态与测试用例的输出状态是否一致;如果输出状态与测试用例的输出状态一致,则此次软件测试成功;如果在测试的过程中出现异常或者出现输出状态与测试用例的输出状态不一致的情况,则此次软件测试失败。当采用人工测试的方法进行软件测试时,是通过人工执行从测试用例的输入状态到输出状态需执行的每个状态切换操作,获得输出状态,并判断输出状态与设计用例的输出状态是否一致来实现。
[0004]在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
[0005]由于用户在操作软件的过程中的行为具有随意性和不可预料性,因此,对于自动化测试来说,由于自动化测试是基于测试用例编写的流程化的测试方法,而测试用例的流程中设计的每个状态切换操作有可能不能和用户操作软件时执行的每个状态切换操作完全一致。例如,测试用例的流程为a-b-c,而用户执行的状态切换操作为a-b-d-e-c。在此种情况下,测试用例包含的状态切换操作可能不包括用户执行的某些状态切换操作,导致软件测试的可靠性不高。另外,如果测试用例过于简单,则可能不能覆盖用户操作软件时执行的所有状态切换操作,无法保证软件测试的全面性。对于人工测试来说,虽然人工测试可以对既定的测试用例无法覆盖的用户执行的状态切换操作进行扩充,但是会耗费大量的人力成本,导致软件测试的成本较高。

【发明内容】

[0006]为了解决相关技术的问题,本发明实施例提供了一种软件测试方法及装置。所述技术方案如下:
[0007]第一方面,提供了一种软件测试方法,所述方法包括:
[0008]确定待测软件的当前状态,并确定所述当前状态对应的所有状态切换操作,所述当前状态对应的所有状态切换操作为从所述当前状态切换至与所述当前状态相关的各个下一状态需执行的状态切换操作的集合,且从所述当前状态切换至与所述当前状态相关的任意下一状态均需执行一次状态切换操作;
[0009]从所述当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行所述当前状态对应的目标操作,并将测试深度累加一次,获得当前测试深度,所述测试深度为此次软件测试过程已经执行状态切换操作的次数;
[0010]确定所述当前测试深度是否达到预设测试深度,所述预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数;
[0011]如果所述当前测试深度达到所述预设测试深度,则确定此次软件测试成功。
[0012]结合第一方面,在第一方面的第一种可能的实现方式中,所述确定待测软件的当前状态之前,还包括:
[0013]获取根据所述待测软件的功能确定的所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
[0014]所述确定所述当前状态对应的所有状态切换操作,包括:
[0015]根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作。
[0016]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作,包括:
[0017]根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系;
[0018]根据所述状态切换关系确定所述当前状态对应的所有状态切换操作。
[0019]结合第一方面,在第一方面的第三种可能的实现方式中,所述确定所述当前测试深度是否达到预设测试深度之后,还包括:
[0020]如果所述当前测试深度未达到所述预设测试深度,则将执行所述当前状态对应的目标操作获得的状态作为更新后的状态,并从所述更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行所述更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
[0021]结合第一方面至第一方面的第三种可能的实现方式中的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述确定所述当前测试深度是否达到预设测试深度之后,还包括:
[0022]如果此次软件测试过程发生异常,则跳出软件测试,并确定此次软件测试失败。
[0023]第二方面,提供了一种软件测试装置,所述装置包括:
[0024]第一确定模块,用于确定待测软件的当前状态;
[0025]第二确定模块,用于确定所述当前状态对应的所有状态切换操作,所述当前状态对应的所有状态切换操作为从所述当前状态切换至与所述当前状态相关的各个下一状态需执行的状态切换操作的集合,且从所述当前状态切换至与所述当前状态相关的任意下一状态均需执行一次状态切换操作;
[0026]第一选择模块,用于从所述当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作;
[0027]第一执行模块,用于执行所述当前状态对应的目标操作;
[0028]累加模块,用于将测试深度累加一次,获得当前测试深度,所述测试深度为此次软件测试过程已经执行状态切换操作的次数;
[0029]第三确定模块,用于确定所述当前测试深度是否达到预设测试深度,所述预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数;
[0030]第四确定模块,用于当所述当前测试深度达到所述预设测试深度时,确定此次软件测试成功。
[0031]结合第二方面,在第二方面的第一种可能的实现方式中,所述装置,还包括:
[0032]获取模块,用于获取根据所述待测软件的功能确定的所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
[0033]所述第二确定模块,用于根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作。
[0034]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第二确定模块,包括:
[0035]第一确定单元,用于根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系;
[0036]第二确定单元,用于根据所述状态切换关系确定所述当前状态对应的所有状态切换操作。
[0037]结合第二方面,在第二方面的第三种可能的实现方式中,所述装置,还包括:
[0038]第五确定模块,用于当所述当前测试深度未达到所述预设测试深度时,将执行所述当前状态对应的目标操作获得的状态作为更新后的状态;
[0039]第二选择模块,用于从所述更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作;
[0040]第二执行模块,用于执行所述更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
[0041]结合第一方面至第一方面的第三种可能的实现方式中的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述装置,还包括:
[0042]第六确定模块,用于当此次软件测试过程发生异常时,跳出软件测试,并确定此次软件测试失败。
[0043]本发明实施例提供的技术方案带来的有益效果是:
[0044]通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。
【专利附图】

【附图说明】
[0045]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0046]图1是本发明实施例一提供的一种软件测试方法的流程图;
[0047]图2是本发明实施例二提供的一种软件测试方法的流程图;
[0048]图3是本发明实施例二提供的一种状态切换关系的示意图;
[0049]图4是本发明实施例三提供的第一种软件测试装置结构示意图;
[0050]图5是本发明实施例三提供的第二种软件测试装置结构示意图;
[0051]图6是本发明实施例三提供的第三种软件测试装置结构示意图;
[0052]图7是本发明实施例三提供的第四种软件测试装置结构示意图。
【具体实施方式】
[0053]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0054]本发明实施例提供的软件测试方法通过软件测试装置完成软件测试。其中,在软件测试装置中预先存储了根据待测软件的功能确定的待测软件的全部状态以及在每两个状态之间切换时需执行的状态切换操作,并通过该软件测试装置实现在待测软件的全部状态之间进行切换的有限状态机,使得通过该软件测试装置能够测试待测软件包含的全部功倉泛。
[0055]其中,本发明实施例不对软件测试装置的具体类型进行限定。具体实施时,软件测试装置包括但不限于可以为QTP(QuickTest Professiona,自动测试机),等等。
[0056]其中,具体的软件测试方法详见下述实施例一和实施例二:
[0057]实施例一
[0058]结合上述内容,本发明实施例提供了一种软件测试方法。参见图1,本发明实施例提供的方法流程包括:
[0059]101:确定待测软件的当前状态,并确定当前状态对应的所有状态切换操作,当前状态对应的所有状态切换操作为从当前状态切换至与当前状态相关的各个下一状态需执行的状态切换操作的集合,且从当前状态切换至与当前状态相关的任意下一状态均需执行一次状态切换操作。
[0060]优选地,确定待测软件的当前状态之前,还包括:
[0061]获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
[0062]确定当前状态对应的所有状态切换操作,包括:
[0063]根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定当前状态对应的所有状态切换操作。
[0064]其中,根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定当前状态对应的所有状态切换操作,包括:
[0065]根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系;[0066]根据状态切换关系确定当前状态对应的所有状态切换操作。
[0067]102:从当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行当前状态对应的目标操作,并将测试深度累加一次,获得当前测试深度,测试深度为此次软件测试过程已经执行状态切换操作的次数。
[0068]103:确定当前测试深度是否达到预设测试深度,预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数。
[0069]104:如果当前测试深度达到预设测试深度,则确定此次软件测试成功。
[0070]优选地,确定当前测试深度是否达到预设测试深度之后,还包括:
[0071]如果当前测试深度未达到预设测试深度,则将执行当前状态对应的目标操作获得的状态作为更新后的状态,并从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
[0072]优选地,确定当前测试深度是否达到预设测试深度之后,还包括:
[0073]如果此次软件测试过程发生异常,则跳出软件测试,并确定此次软件测试失败。
[0074]本发明实施例提供的方法,通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。
[0075]实施例二
[0076]结合上述实施例一的内容,本发明实施例提供了一种软件测试方法。参见图2,本发明实施例提供的方法流程包括:
[0077]201:获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作。
[0078]为了测试待测软件的全部功能,在本发明实施例中,将待测软件的全部功能等效为各个状态,并将实现某一功能需要执行的操作作为状态切换操作,且在每两个状态之间切换时均需执行一次状态切换操作。通过执行状态切换操作,能在待测软件的各个状态之间切换,从而实现待测软件的全部功能。例如,如果待测软件当前要测试的功能为用户A在与用户B聊天的对话框中输入聊天内容,然后通过点击回车键发送,则此时待测软件的一个状态为用户A在与用户B对话的对话框中输入聊天内容,另一状态为用户A可以通过在与用户B对话的对话框中输入聊天内容从而实现向用户B发送已经输入的聊天内容,从一个状态到另一状态切换时需执行的状态切换操作即为用户A点击回车键的操作。
[0079]综上,为了测试待测软件的全部功能,需要获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作。
[0080]关于获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的方式,本发明实施例不作具体限定。具体实施时,可以为其它设备根据待测软件的功能生成待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作后,通过导入其它设备生成的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的方式来获取,也可以通过接收其它设备发送的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的方式来获取,还可以通过在本地生成待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的方式来获取,等等。
[0081]关于待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的具体内容,本发明实施例不作具体限定。具体实施时,可以结合待测软件具体要实现的功能而定。
[0082]优选地,在获取到根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作之后,需要存储待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作。另外,为了便于记录或查询与各个状态相关的状态切换操作以及确定每两个状态进行切换时需执行的状态切换操作,可以根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系。
[0083]关于状态切换关系的具体形式,本发明实施例不作具体限定。具体实施时,状态切换关系包括但不限于可以使用如图3所示的状态切换图的方式表示。由图3所示的状态切换关系可以很清楚地获知待测软件包含的全部状态以及在每两个状态之间切换时需执行的状态切换操作。例如,由图3可得,与该状态切换关系对应的待测软件包含四个状态,分别为状态A、状态B、状态C和状态D。状态A和状态B之间进行切换时需执行的状态切换操作为操作1,状态A和状态D之间进行切换时需执行的状态切换操作为操作5,等等。
[0084]需要说明的是,在进行软件测试时,并不是每次测试过程都需要对待测软件的所有功能进行测试,可以是选择待测软件的某些功能进行测试即可。在本发明实施例中,进行某次软件测试过程,可以仅选择其中的某些状态进行测试,也可以选择待测软件的全部状态进行测试。因此,上述步骤201为进行某次软件测试之前需要执行的步骤,并不是进行每次软件测试过程均需执行的步骤,保证在进行某次软件测试之前,获取到根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作即可。下述各个步骤为进行某次软件测试过程需执行的步骤,具体的进行某次软件测试过程的具体方法,详见下述各个步骤。
[0085]202:确定待测软件的当前状态,并确定当前状态对应的所有状态切换操作,其中,当前状态对应的所有状态切换操作为从当前状态切换至与当前状态相关的各个下一状态需执行的状态切换操作的集合,且从当前状态切换至与当前状态相关的任意下一状态均需执行一次状态切换操作。
[0086]为了从某一状态开始进行此次软件测试,需要确定待测软件的当前状态。另外,由于与当前状态相关的下一状态可能有多个,且在每两个状态之间进行切换时均需执行一次状态切换操作。也就是说,与当前状态相关的状态切换操作可能为多个。因此,还需要确定当前状态对应的所有状态切换操作。
[0087]关于确定待测软件的当前状态的方式,本发明实施例不作具体限定。具体实施时,可以检测当前软件测试接口获取到的状态的特征,并根据状态的特征确定待测软件的当前状态。例如,如果当前要测试的功能为通过点击登录框完成登录操作,则可以通过遍历待测软件的全部状态来查询登录框,并将查询到的登陆框对应的状态确定为当前状态。另外,确定待测软件的当前状态时,还可以通过确定此次软件测试需要测试的功能,从而获取与该功能对应的状态,并将该功能对应的状态确定为当如状态,等等。
[0088]其中,确定当前状态对应的所有状态切换操作的方式,可以为:根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定当前状态对应的所有状态切换操作。例如,如果在步骤201中在获取到根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作后,形成了状态切换关系,则在确定当前状态对应的所有状态切换操作时,可以根据状态切换关系确定当前状态对应的所有状态切换操作。如图3所示,如果当前状态为状态A,则根据如图3所示的状态切换关系,可得到状态A对应的所有状态切换操作有操作1、操作5和操作7。
[0089]203:从当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行当前状态对应的目标操作。
[0090]为了模拟用户操作软件的随意行为,本发明实施例提供的软件测试方法在进行此次软件测试时,从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来进行此次软件测试,将随机选择的状态切换操作作为当前状态对应的目标操作,并执行当前状态对应的目标操作。
[0091]其中,执行当前状态对应的目标操作的方式,可以有很多种。例如,可以为获取运行指令,并根据获取到的运行指令从当前状态开始执行当前状态对应的目标操作。
[0092]204:将测试深度累加一次,获得当前测试深度,测试深度为此次软件测试过程已经执行状态切换操作的次数。
[0093]为了确定此次软件测试过程是否成功或者确定此次软件测试过程是否还需继续,在本发明实施例中通过根据此次软件测试过程的当前测试深度来确定,并且在进行此次软件测试的过程中,每执行一次状态切换操作,累加一次测试深度。因此,在执行当前状态对应的目标操作之后,需要将表示此次软件测试过程已经执行状态切换操作的次数的测试深度累加一次,从而获得当前测试深度。
[0094]205:确定当前测试深度是否达到预设测试深度,如果当前测试深度达到预设测试深度,执行步骤206 ;如果当前测试深度未达到预设测试深度,执行步骤207。
[0095]其中,预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数。
[0096]在本发明实施例中,根据表示预先设置的此次软件测试过程需执行状态切换操作的次数的预设测试深度与当前测试深度之间的关系来确定当前测试深度是否达到预设测试深度。因此,需要确定当前测试深度是否达到预设测试深度。
[0097]关于确定当前测试深度是否达到预设测试深度的方式,本发明实施例不作具体限定。具体实施时,可以通过将当前测试深度与预设测试深度进行比对来实现。
[0098]本发明实施例不对预设测试深度的数量进行限定,该预设测试深度的数量可以为任意数值,具体实施时可以根据需要进行设置。通过设置任意数值的预设测试深度,可以随意地对此次软件测试过程执行状态切换操作的次数进行设置,不仅能进一步模拟用户操作软件的随意性,而且能够保证软件测试过程的全面性。
[0099]206:确定此次软件测试成功,流程结束。
[0100]例如,如果预设测试深度为300,通过执行步骤204获得的当前测试深度达到300,则确定此次软件测试成功。[0101]207:将执行当前状态对应的目标操作获得的状态作为更新后的状态,并从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行更新后的状态对应的目标操作,并返回步骤204。
[0102]由于当前测试深度未达到预设测试深度,则说明还需要继续进行此次软件测试过程,因此,当从当前状态开始执行当前状态对应的目标操作获得一个新的状态后,将获得的新的状态作为更新后的状态,并参照步骤203的方法,从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行更新后的状态对应的目标操作,并返回步骤204。
[0103]关于从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行更新后的状态对应的目标操作的原理同上述步骤203中从当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行当前状态对应的目标操作的原理相同,具体参见上述步骤203的原理,此处不再赘述。
[0104]优选地,如果在进行此次软件测试的过程发生异常,则跳出软件测试,并确定此次软件测试失败。
[0105]本发明实施例提供的方法,通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。
[0106]实施例三
[0107]本发明实施例提供了一种软件测试装置,该装置用于执行上述实施例一和实施例二提供的软件测试方法。参见图4,该装置包括:
[0108]第一确定模块401,用于确定待测软件的当前状态;
[0109]第二确定模块402,用于确定当前状态对应的所有状态切换操作,当前状态对应的所有状态切换操作为从当前状态切换至与当前状态相关的各个下一状态需执行的状态切换操作的集合,且从当前状态切换至与当前状态相关的任意下一状态均需执行一次状态切换操作;
[0110]第一选择模块403,用于从当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作;
[0111]第一执行模块404,用于执行当前状态对应的目标操作;
[0112]累加模块405,用于将测试深度累加一次,获得当前测试深度,测试深度为此次软件测试过程已经执行状态切换操作的次数;
[0113]第三确定模块406,用于确定当前测试深度是否达到预设测试深度,预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数;
[0114]第四确定模块407,用于当当前测试深度达到预设测试深度时,确定此次软件测试成功。
[0115]优选地,参见图5,装置,还包括:
[0116]获取模块408,用于获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
[0117]第二确定模块402,用于根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定当前状态对应的所有状态切换操作。
[0118]优选地,第二确定模块402,包括:
[0119]第一确定单元,用于根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系;
[0120]第二确定单元,用于根据状态切换关系确定当前状态对应的所有状态切换操作。
[0121]优选地,参见图6,装置,还包括:
[0122]第五确定模块409,用于当当前测试深度未达到预设测试深度时,将执行当前状态对应的目标操作获得的状态作为更新后的状态;
[0123]第二选择模块410,用于从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作;
[0124]第二执行模块411,用于执行更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
[0125]优选地,参见图7,装置,还包括:
[0126]第六确定模块412,用于当此次软件测试过程发生异常时,跳出软件测试,并确定此次软件测试失败。
[0127]本发明实施例提供的装置,通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。
[0128]需要说明的是:上述实施例提供的软件测试装置在执行软件测试方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的软件测试装置与软件测试方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0129]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0130]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0131]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种软件测试方法,其特征在于,所述方法包括: 确定待测软件的当前状态,并确定所述当前状态对应的所有状态切换操作,所述当前状态对应的所有状态切换操作为从所述当前状态切换至与所述当前状态相关的各个下一状态需执行的状态切换操作的集合,且从所述当前状态切换至与所述当前状态相关的任意下一状态均需执行一次状态切换操作; 从所述当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行所述当前状态对应的目标操作,并将测试深度累加一次,获得当前测试深度,所述测试深度为此次软件测试过程已经执行状态切换操作的次数; 确定所述当前测试深度是否达到预设测试深度,所述预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数; 如果所述当前测试深度达到所述预设测试深度,则确定此次软件测试成功。
2.根据权利要求1所述的方法,其特征在于,所述确定待测软件的当前状态之前,还包括: 获取根据所述待测软件的功能确定的所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作; 所述确定所述当前状态对应的所有状态切换操作,包括: 根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作,包括: 根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系 根据所述状态切换关系确定所述当前状态对应的所有状态切换操作。
4.根据权利要求1所述的方法,其特征在于,所述确定所述当前测试深度是否达到预设测试深度之后,还包括: 如果所述当前测试深度未达到所述预设测试深度,则将执行所述当前状态对应的目标操作获得的状态作为更新后的状态,并从所述更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行所述更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
5.根据权利要求1至4中任一权利要求所述的方法,其特征在于,所述确定所述当前测试深度是否达到预设测试深度之后,还包括: 如果此次软件测试过程发生异常,则跳出软件测试,并确定此次软件测试失败。
6.一种软件测试装置,其特征在于,所述装置包括: 第一确定模块,用于确定待测软件的当前状态; 第二确定模块,用于确定所述当前状态对应的所有状态切换操作,所述当前状态对应的所有状态切换操作为从所述当前状态切换至与所述当前状态相关的各个下一状态需执行的状态切换操作的集合,且从所述当前状态切换至与所述当前状态相关的任意下一状态均需执行一次状态切换操作;第一选择模块,用于从所述当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作; 第一执行模块,用于执行所述当前状态对应的目标操作; 累加模块,用于将测试深度累加一次,获得当前测试深度,所述测试深度为此次软件测试过程已经执行状态切换操作的次数; 第三确定模块,用于确定所述当前测试深度是否达到预设测试深度,所述预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数; 第四确定模块,用于当所述当前测试深度达到所述预设测试深度时,确定此次软件测试成功。
7.根据权利要求6所述的装置,其特征在于,所述装置,还包括: 获取模块,用于获取根据所述待测软件的功能确定的所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作; 所述第二确定模块,用于根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作。
8.根据权利要求7所述的装置,其特征在于,所述第二确定模块,包括: 第一确定单元,用于根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作 确定状态切换关系; 第二确定单元,用于根据所述状态切换关系确定所述当前状态对应的所有状态切换操作。
9.根据权利要求6所述的装置,其特征在于,所述装置,还包括: 第五确定模块,用于当所述当前测试深度未达到所述预设测试深度时,将执行所述当前状态对应的目标操作获得的状态作为更新后的状态; 第二选择模块,用于从所述更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作; 第二执行模块,用于执行所述更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
10.根据权利要求6至9中任一权利要求所述的装置,其特征在于,所述装置,还包括: 第六确定模块,用于当此次软件测试过程发生异常时,跳出软件测试,并确定此次软件测试失败。
【文档编号】G06F11/36GK104008056SQ201410240379
【公开日】2014年8月27日 申请日期:2014年5月30日 优先权日:2014年5月30日
【发明者】罗静 申请人:广州华多网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1