CN104008056B - 软件测试方法及装置 - Google Patents

软件测试方法及装置 Download PDF

Info

Publication number
CN104008056B
CN104008056B CN201410240379.3A CN201410240379A CN104008056B CN 104008056 B CN104008056 B CN 104008056B CN 201410240379 A CN201410240379 A CN 201410240379A CN 104008056 B CN104008056 B CN 104008056B
Authority
CN
China
Prior art keywords
state
mtd
software
perform
handover operation
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.)
Active
Application number
CN201410240379.3A
Other languages
English (en)
Other versions
CN104008056A (zh
Inventor
罗静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Cubesili Information Technology Co Ltd
Original Assignee
Guangzhou Huaduo Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Huaduo Network Technology Co Ltd filed Critical Guangzhou Huaduo Network Technology Co Ltd
Priority to CN201410240379.3A priority Critical patent/CN104008056B/zh
Publication of CN104008056A publication Critical patent/CN104008056A/zh
Application granted granted Critical
Publication of CN104008056B publication Critical patent/CN104008056B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Mobile Radio Communication Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种软件测试方法及装置。该方法包括:从待测软件的当前状态对应的所有状态切换操作中随机选择一个作为当前状态对应的目标操作,执行目标操作,将测试深度累加一次,获得当前测试深度;确定当前测试深度是否达到预设测试深度;如果是,则此次软件测试成功。通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。

Description

软件测试方法及装置
技术领域
本发明涉及软件技术领域,特别涉及一种软件测试方法及装置。
背景技术
随着软件技术的迅速发展,出现了越来越多的计算机应用软件。软件运营商在设计好软件之后,为了保证软件能够正常运行,会对设计好的软件进行软件测试。软件测试是软件工程中非常重要的一个环节,良好的软件测试方法是软件质量的重要保障。
相关技术在进行软件测试时,会预先设计此次软件测试需要测试的功能的测试用例,并根据设计好的测试用例通过自动测试或人工测试的方法进行软件测试。具体地,对于每一个测试用例,均对应一个输入状态、一个输出状态以及从输入状态到输出状态需执行的每个状态切换操作。因此,在相关技术中,当使用自动测试的方法进行软件测试时,所采用的方法为:第一步,自动测试机获取为此次软件测试设计的测试用例,并按照测试用例的流程执行从该测试用例的输入状态到输出状态需执行的每个状态切换操作,获得输出状态。例如,如果从输入状态到输出状态需执行a、b和c三个状态切换操作,且测试用例设计的执行流程为a-b-c,则自动测试机按照a-b-c的顺序运行获得输出状态。第二步,判断此次软件测试的输出状态与测试用例的输出状态是否一致;如果输出状态与测试用例的输出状态一致,则此次软件测试成功;如果在测试的过程中出现异常或者出现输出状态与测试用例的输出状态不一致的情况,则此次软件测试失败。当采用人工测试的方法进行软件测试时,是通过人工执行从测试用例的输入状态到输出状态需执行的每个状态切换操作,获得输出状态,并判断输出状态与设计用例的输出状态是否一致来实现。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
由于用户在操作软件的过程中的行为具有随意性和不可预料性,因此,对于自动化测试来说,由于自动化测试是基于测试用例编写的流程化的测试方法,而测试用例的流程中设计的每个状态切换操作有可能不能和用户操作软件时执行的每个状态切换操作完全一致。例如,测试用例的流程为a-b-c,而用户执行的状态切换操作为a-b-d-e-c。在此种情况下,测试用例包含的状态切换操作可能不包括用户执行的某些状态切换操作,导致软件测试的可靠性不高。另外,如果测试用例过于简单,则可能不能覆盖用户操作软件时执行的所有状态切换操作,无法保证软件测试的全面性。对于人工测试来说,虽然人工测试可以对既定的测试用例无法覆盖的用户执行的状态切换操作进行扩充,但是会耗费大量的人力成本,导致软件测试的成本较高。
发明内容
为了解决相关技术的问题,本发明实施例提供了一种软件测试方法及装置。所述技术方案如下:
第一方面,提供了一种软件测试方法,所述方法包括:
确定待测软件的当前状态,并确定所述当前状态对应的所有状态切换操作,所述当前状态对应的所有状态切换操作为从所述当前状态切换至与所述当前状态相关的各个下一状态需执行的状态切换操作的集合,且从所述当前状态切换至与所述当前状态相关的任意下一状态均需执行一次状态切换操作;
从所述当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行所述当前状态对应的目标操作,并将测试深度累加一次,获得当前测试深度,所述测试深度为此次软件测试过程已经执行状态切换操作的次数;
确定所述当前测试深度是否达到预设测试深度,所述预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数;
如果所述当前测试深度达到所述预设测试深度,则确定此次软件测试成功。
结合第一方面,在第一方面的第一种可能的实现方式中,所述确定待测软件的当前状态之前,还包括:
获取根据所述待测软件的功能确定的所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
所述确定所述当前状态对应的所有状态切换操作,包括:
根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作,包括:
根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系;
根据所述状态切换关系确定所述当前状态对应的所有状态切换操作。
结合第一方面,在第一方面的第三种可能的实现方式中,所述确定所述当前测试深度是否达到预设测试深度之后,还包括:
如果所述当前测试深度未达到所述预设测试深度,则将执行所述当前状态对应的目标操作获得的状态作为更新后的状态,并从所述更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行所述更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
结合第一方面至第一方面的第三种可能的实现方式中的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述确定所述当前测试深度是否达到预设测试深度之后,还包括:
如果此次软件测试过程发生异常,则跳出软件测试,并确定此次软件测试失败。
第二方面,提供了一种软件测试装置,所述装置包括:
第一确定模块,用于确定待测软件的当前状态;
第二确定模块,用于确定所述当前状态对应的所有状态切换操作,所述当前状态对应的所有状态切换操作为从所述当前状态切换至与所述当前状态相关的各个下一状态需执行的状态切换操作的集合,且从所述当前状态切换至与所述当前状态相关的任意下一状态均需执行一次状态切换操作;
第一选择模块,用于从所述当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作;
第一执行模块,用于执行所述当前状态对应的目标操作;
累加模块,用于将测试深度累加一次,获得当前测试深度,所述测试深度为此次软件测试过程已经执行状态切换操作的次数;
第三确定模块,用于确定所述当前测试深度是否达到预设测试深度,所述预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数;
第四确定模块,用于当所述当前测试深度达到所述预设测试深度时,确定此次软件测试成功。
结合第二方面,在第二方面的第一种可能的实现方式中,所述装置,还包括:
获取模块,用于获取根据所述待测软件的功能确定的所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
所述第二确定模块,用于根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第二确定模块,包括:
第一确定单元,用于根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系;
第二确定单元,用于根据所述状态切换关系确定所述当前状态对应的所有状态切换操作。
结合第二方面,在第二方面的第三种可能的实现方式中,所述装置,还包括:
第五确定模块,用于当所述当前测试深度未达到所述预设测试深度时,将执行所述当前状态对应的目标操作获得的状态作为更新后的状态;
第二选择模块,用于从所述更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作;
第二执行模块,用于执行所述更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
结合第一方面至第一方面的第三种可能的实现方式中的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述装置,还包括:
第六确定模块,用于当此次软件测试过程发生异常时,跳出软件测试,并确定此次软件测试失败。
本发明实施例提供的技术方案带来的有益效果是:
通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种软件测试方法的流程图;
图2是本发明实施例二提供的一种软件测试方法的流程图;
图3是本发明实施例二提供的一种状态切换关系的示意图;
图4是本发明实施例三提供的第一种软件测试装置结构示意图;
图5是本发明实施例三提供的第二种软件测试装置结构示意图;
图6是本发明实施例三提供的第三种软件测试装置结构示意图;
图7是本发明实施例三提供的第四种软件测试装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供的软件测试方法通过软件测试装置完成软件测试。其中,在软件测试装置中预先存储了根据待测软件的功能确定的待测软件的全部状态以及在每两个状态之间切换时需执行的状态切换操作,并通过该软件测试装置实现在待测软件的全部状态之间进行切换的有限状态机,使得通过该软件测试装置能够测试待测软件包含的全部功能。
其中,本发明实施例不对软件测试装置的具体类型进行限定。具体实施时,软件测试装置包括但不限于可以为QTP(QuickTest Professiona,自动测试机),等等。
其中,具体的软件测试方法详见下述实施例一和实施例二:
实施例一
结合上述内容,本发明实施例提供了一种软件测试方法。参见图1,本发明实施例提供的方法流程包括:
101:确定待测软件的当前状态,并确定当前状态对应的所有状态切换操作,当前状态对应的所有状态切换操作为从当前状态切换至与当前状态相关的各个下一状态需执行的状态切换操作的集合,且从当前状态切换至与当前状态相关的任意下一状态均需执行一次状态切换操作。
优选地,确定待测软件的当前状态之前,还包括:
获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
确定当前状态对应的所有状态切换操作,包括:
根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定当前状态对应的所有状态切换操作。
其中,根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定当前状态对应的所有状态切换操作,包括:
根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系;
根据状态切换关系确定当前状态对应的所有状态切换操作。
102:从当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行当前状态对应的目标操作,并将测试深度累加一次,获得当前测试深度,测试深度为此次软件测试过程已经执行状态切换操作的次数。
103:确定当前测试深度是否达到预设测试深度,预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数。
104:如果当前测试深度达到预设测试深度,则确定此次软件测试成功。
优选地,确定当前测试深度是否达到预设测试深度之后,还包括:
如果当前测试深度未达到预设测试深度,则将执行当前状态对应的目标操作获得的状态作为更新后的状态,并从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
优选地,确定当前测试深度是否达到预设测试深度之后,还包括:
如果此次软件测试过程发生异常,则跳出软件测试,并确定此次软件测试失败。
本发明实施例提供的方法,通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。
实施例二
结合上述实施例一的内容,本发明实施例提供了一种软件测试方法。参见图2,本发明实施例提供的方法流程包括:
201:获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作。
为了测试待测软件的全部功能,在本发明实施例中,将待测软件的全部功能等效为各个状态,并将实现某一功能需要执行的操作作为状态切换操作,且在每两个状态之间切换时均需执行一次状态切换操作。通过执行状态切换操作,能在待测软件的各个状态之间切换,从而实现待测软件的全部功能。例如,如果待测软件当前要测试的功能为用户A在与用户B聊天的对话框中输入聊天内容,然后通过点击回车键发送,则此时待测软件的一个状态为用户A在与用户B对话的对话框中输入聊天内容,另一状态为用户A可以通过在与用户B对话的对话框中输入聊天内容从而实现向用户B发送已经输入的聊天内容,从一个状态到另一状态切换时需执行的状态切换操作即为用户A点击回车键的操作。
综上,为了测试待测软件的全部功能,需要获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作。
关于获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的方式,本发明实施例不作具体限定。具体实施时,可以为其它设备根据待测软件的功能生成待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作后,通过导入其它设备生成的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的方式来获取,也可以通过接收其它设备发送的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的方式来获取,还可以通过在本地生成待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的方式来获取,等等。
关于待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作的具体内容,本发明实施例不作具体限定。具体实施时,可以结合待测软件具体要实现的功能而定。
优选地,在获取到根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作之后,需要存储待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作。另外,为了便于记录或查询与各个状态相关的状态切换操作以及确定每两个状态进行切换时需执行的状态切换操作,可以根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系。
关于状态切换关系的具体形式,本发明实施例不作具体限定。具体实施时,状态切换关系包括但不限于可以使用如图3所示的状态切换图的方式表示。由图3所示的状态切换关系可以很清楚地获知待测软件包含的全部状态以及在每两个状态之间切换时需执行的状态切换操作。例如,由图3可得,与该状态切换关系对应的待测软件包含四个状态,分别为状态A、状态B、状态C和状态D。状态A和状态B之间进行切换时需执行的状态切换操作为操作1,状态A和状态D之间进行切换时需执行的状态切换操作为操作5,等等。
需要说明的是,在进行软件测试时,并不是每次测试过程都需要对待测软件的所有功能进行测试,可以是选择待测软件的某些功能进行测试即可。在本发明实施例中,进行某次软件测试过程,可以仅选择其中的某些状态进行测试,也可以选择待测软件的全部状态进行测试。因此,上述步骤201为进行某次软件测试之前需要执行的步骤,并不是进行每次软件测试过程均需执行的步骤,保证在进行某次软件测试之前,获取到根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作即可。下述各个步骤为进行某次软件测试过程需执行的步骤,具体的进行某次软件测试过程的具体方法,详见下述各个步骤。
202:确定待测软件的当前状态,并确定当前状态对应的所有状态切换操作,其中,当前状态对应的所有状态切换操作为从当前状态切换至与当前状态相关的各个下一状态需执行的状态切换操作的集合,且从当前状态切换至与当前状态相关的任意下一状态均需执行一次状态切换操作。
为了从某一状态开始进行此次软件测试,需要确定待测软件的当前状态。另外,由于与当前状态相关的下一状态可能有多个,且在每两个状态之间进行切换时均需执行一次状态切换操作。也就是说,与当前状态相关的状态切换操作可能为多个。因此,还需要确定当前状态对应的所有状态切换操作。
关于确定待测软件的当前状态的方式,本发明实施例不作具体限定。具体实施时,可以检测当前软件测试接口获取到的状态的特征,并根据状态的特征确定待测软件的当前状态。例如,如果当前要测试的功能为通过点击登录框完成登录操作,则可以通过遍历待测软件的全部状态来查询登录框,并将查询到的登陆框对应的状态确定为当前状态。另外,确定待测软件的当前状态时,还可以通过确定此次软件测试需要测试的功能,从而获取与该功能对应的状态,并将该功能对应的状态确定为当前状态,等等。
其中,确定当前状态对应的所有状态切换操作的方式,可以为:根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定当前状态对应的所有状态切换操作。例如,如果在步骤201中在获取到根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作后,形成了状态切换关系,则在确定当前状态对应的所有状态切换操作时,可以根据状态切换关系确定当前状态对应的所有状态切换操作。如图3所示,如果当前状态为状态A,则根据如图3所示的状态切换关系,可得到状态A对应的所有状态切换操作有操作1、操作5和操作7。
203:从当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行当前状态对应的目标操作。
为了模拟用户操作软件的随意行为,本发明实施例提供的软件测试方法在进行此次软件测试时,从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来进行此次软件测试,将随机选择的状态切换操作作为当前状态对应的目标操作,并执行当前状态对应的目标操作。
其中,执行当前状态对应的目标操作的方式,可以有很多种。例如,可以为获取运行指令,并根据获取到的运行指令从当前状态开始执行当前状态对应的目标操作。
204:将测试深度累加一次,获得当前测试深度,测试深度为此次软件测试过程已经执行状态切换操作的次数。
为了确定此次软件测试过程是否成功或者确定此次软件测试过程是否还需继续,在本发明实施例中通过根据此次软件测试过程的当前测试深度来确定,并且在进行此次软件测试的过程中,每执行一次状态切换操作,累加一次测试深度。因此,在执行当前状态对应的目标操作之后,需要将表示此次软件测试过程已经执行状态切换操作的次数的测试深度累加一次,从而获得当前测试深度。
205:确定当前测试深度是否达到预设测试深度,如果当前测试深度达到预设测试深度,执行步骤206;如果当前测试深度未达到预设测试深度,执行步骤207。
其中,预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数。
在本发明实施例中,根据表示预先设置的此次软件测试过程需执行状态切换操作的次数的预设测试深度与当前测试深度之间的关系来确定当前测试深度是否达到预设测试深度。因此,需要确定当前测试深度是否达到预设测试深度。
关于确定当前测试深度是否达到预设测试深度的方式,本发明实施例不作具体限定。具体实施时,可以通过将当前测试深度与预设测试深度进行比对来实现。
本发明实施例不对预设测试深度的数量进行限定,该预设测试深度的数量可以为任意数值,具体实施时可以根据需要进行设置。通过设置任意数值的预设测试深度,可以随意地对此次软件测试过程执行状态切换操作的次数进行设置,不仅能进一步模拟用户操作软件的随意性,而且能够保证软件测试过程的全面性。
206:确定此次软件测试成功,流程结束。
例如,如果预设测试深度为300,通过执行步骤204获得的当前测试深度达到300,则确定此次软件测试成功。
207:将执行当前状态对应的目标操作获得的状态作为更新后的状态,并从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行更新后的状态对应的目标操作,并返回步骤204。
由于当前测试深度未达到预设测试深度,则说明还需要继续进行此次软件测试过程,因此,当从当前状态开始执行当前状态对应的目标操作获得一个新的状态后,将获得的新的状态作为更新后的状态,并参照步骤203的方法,从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行更新后的状态对应的目标操作,并返回步骤204。
关于从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行更新后的状态对应的目标操作的原理同上述步骤203中从当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行当前状态对应的目标操作的原理相同,具体参见上述步骤203的原理,此处不再赘述。
优选地,如果在进行此次软件测试的过程发生异常,则跳出软件测试,并确定此次软件测试失败。
本发明实施例提供的方法,通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。
实施例三
本发明实施例提供了一种软件测试装置,该装置用于执行上述实施例一和实施例二提供的软件测试方法。参见图4,该装置包括:
第一确定模块401,用于确定待测软件的当前状态;
第二确定模块402,用于确定当前状态对应的所有状态切换操作,当前状态对应的所有状态切换操作为从当前状态切换至与当前状态相关的各个下一状态需执行的状态切换操作的集合,且从当前状态切换至与当前状态相关的任意下一状态均需执行一次状态切换操作;
第一选择模块403,用于从当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作;
第一执行模块404,用于执行当前状态对应的目标操作;
累加模块405,用于将测试深度累加一次,获得当前测试深度,测试深度为此次软件测试过程已经执行状态切换操作的次数;
第三确定模块406,用于确定当前测试深度是否达到预设测试深度,预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数;
第四确定模块407,用于当当前测试深度达到预设测试深度时,确定此次软件测试成功。
优选地,参见图5,装置,还包括:
获取模块408,用于获取根据待测软件的功能确定的待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
第二确定模块402,用于根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定当前状态对应的所有状态切换操作。
优选地,第二确定模块402,包括:
第一确定单元,用于根据待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系;
第二确定单元,用于根据状态切换关系确定当前状态对应的所有状态切换操作。
优选地,参见图6,装置,还包括:
第五确定模块409,用于当当前测试深度未达到预设测试深度时,将执行当前状态对应的目标操作获得的状态作为更新后的状态;
第二选择模块410,用于从更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作;
第二执行模块411,用于执行更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
优选地,参见图7,装置,还包括:
第六确定模块412,用于当此次软件测试过程发生异常时,跳出软件测试,并确定此次软件测试失败。
本发明实施例提供的装置,通过从当前状态对应的所有状态切换操作中随机选择一个状态切换操作来执行,确保软件测试过程能够模拟用户操作软件的随机行为,使得软件测试更具可靠性。通过为此次软件测试过程设置预设测试深度,确保可以执行任意次数的状态切换操作,使得软件测试过程可以覆盖用户的所有行为,从而能够提高软件测试的全面性。另外,由于无需人工参与测试,使得软件测试的成本较低。
需要说明的是:上述实施例提供的软件测试装置在执行软件测试方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的软件测试装置与软件测试方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种软件测试方法,其特征在于,所述方法包括:
确定待测软件的当前状态,并确定所述当前状态对应的所有状态切换操作,所述当前状态对应的所有状态切换操作为从所述当前状态切换至与所述当前状态相关的各个下一状态需执行的状态切换操作的集合,且从所述当前状态切换至与所述当前状态相关的任意下一状态均需执行一次状态切换操作;
从所述当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作,执行所述当前状态对应的目标操作,并将测试深度累加一次,获得当前测试深度,所述测试深度为此次软件测试过程已经执行状态切换操作的次数;
确定所述当前测试深度是否达到预设测试深度,所述预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数;
如果所述当前测试深度达到所述预设测试深度,则确定此次软件测试成功;
如果所述当前测试深度未达到所述预设测试深度,则将执行所述当前状态对应的目标操作获得的状态作为更新后的状态,并从所述更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作,执行所述更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
2.根据权利要求1所述的方法,其特征在于,所述确定待测软件的当前状态之前,还包括:
获取根据所述待测软件的功能确定的所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
所述确定所述当前状态对应的所有状态切换操作,包括:
根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作,包括:
根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系
根据所述状态切换关系确定所述当前状态对应的所有状态切换操作。
4.根据权利要求1至3中任一权利要求所述的方法,其特征在于,所述确定所述当前测试深度是否达到预设测试深度之后,还包括:
如果此次软件测试过程发生异常,则跳出软件测试,并确定此次软件测试失败。
5.一种软件测试装置,其特征在于,所述装置包括:
第一确定模块,用于确定待测软件的当前状态;
第二确定模块,用于确定所述当前状态对应的所有状态切换操作,所述当前状态对应的所有状态切换操作为从所述当前状态切换至与所述当前状态相关的各个下一状态需执行的状态切换操作的集合,且从所述当前状态切换至与所述当前状态相关的任意下一状态均需执行一次状态切换操作;
第一选择模块,用于从所述当前状态对应的所有状态切换操作中随机选择一个状态切换操作作为当前状态对应的目标操作;
第一执行模块,用于执行所述当前状态对应的目标操作;
累加模块,用于将测试深度累加一次,获得当前测试深度,所述测试深度为此次软件测试过程已经执行状态切换操作的次数;
第三确定模块,用于确定所述当前测试深度是否达到预设测试深度,所述预设测试深度为预先设置的此次软件测试过程需执行状态切换操作的次数;
第四确定模块,用于当所述当前测试深度达到所述预设测试深度时,确定此次软件测试成功;
第五确定模块,用于当所述当前测试深度未达到所述预设测试深度时,将执行所述当前状态对应的目标操作获得的状态作为更新后的状态;
第二选择模块,用于从所述更新后的状态对应的所有状态切换操作中随机选择一个状态切换操作作为更新后的状态对应的目标操作;
第二执行模块,用于执行所述更新后的状态对应的目标操作,并返回将测试深度累加一次的步骤。
6.根据权利要求5所述的装置,其特征在于,所述装置,还包括:
获取模块,用于获取根据所述待测软件的功能确定的所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作;
所述第二确定模块,用于根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定所述当前状态对应的所有状态切换操作。
7.根据权利要求6所述的装置,其特征在于,所述第二确定模块,包括:
第一确定单元,用于根据所述待测软件包含的所有状态以及在每两个状态之间切换时需执行的状态切换操作确定状态切换关系;
第二确定单元,用于根据所述状态切换关系确定所述当前状态对应的所有状态切换操作。
8.根据权利要求5至7中任一权利要求所述的装置,其特征在于,所述装置,还包括:
第六确定模块,用于当此次软件测试过程发生异常时,跳出软件测试,并确定此次软件测试失败。
CN201410240379.3A 2014-05-30 2014-05-30 软件测试方法及装置 Active CN104008056B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410240379.3A CN104008056B (zh) 2014-05-30 2014-05-30 软件测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410240379.3A CN104008056B (zh) 2014-05-30 2014-05-30 软件测试方法及装置

Publications (2)

Publication Number Publication Date
CN104008056A CN104008056A (zh) 2014-08-27
CN104008056B true CN104008056B (zh) 2016-11-23

Family

ID=51368716

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410240379.3A Active CN104008056B (zh) 2014-05-30 2014-05-30 软件测试方法及装置

Country Status (1)

Country Link
CN (1) CN104008056B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104881363B (zh) * 2015-06-24 2017-12-12 中国航空工业集团公司西安飞机设计研究所 一种控制律软件的测试方法
CN105607995A (zh) * 2015-11-11 2016-05-25 北汽福田汽车股份有限公司 一种软件测试系统、方法及装置
CN108600741A (zh) * 2016-08-09 2018-09-28 青岛海信传媒网络技术有限公司 电视应用程序测试方法
CN110309045B (zh) * 2018-03-20 2023-05-23 贵州白山云科技股份有限公司 用于确定服务器未来状态的方法、装置、介质及计算设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987817A (zh) * 2005-12-22 2007-06-27 中兴通讯股份有限公司 一种实现测试用例自动化运行的方法
CN102253887A (zh) * 2011-07-13 2011-11-23 南京中兴软创科技股份有限公司 基于DXM模型的SaaS软件测试用例构建方法
CN102591780A (zh) * 2012-01-13 2012-07-18 广州广电运通金融电子股份有限公司 一种设备驱动软件测试方法和测试系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5153470B2 (ja) * 2008-06-19 2013-02-27 三菱電機株式会社 状態遷移検証装置および状態遷移検証方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987817A (zh) * 2005-12-22 2007-06-27 中兴通讯股份有限公司 一种实现测试用例自动化运行的方法
CN102253887A (zh) * 2011-07-13 2011-11-23 南京中兴软创科技股份有限公司 基于DXM模型的SaaS软件测试用例构建方法
CN102591780A (zh) * 2012-01-13 2012-07-18 广州广电运通金融电子股份有限公司 一种设备驱动软件测试方法和测试系统

Also Published As

Publication number Publication date
CN104008056A (zh) 2014-08-27

Similar Documents

Publication Publication Date Title
CN104008056B (zh) 软件测试方法及装置
US20070094541A1 (en) Method and apparatus for generating test execution sequences automatically for a software testing process
US7865339B2 (en) Formal methods for test case generation
CA2845059C (en) Test script generation system
CN103329108B (zh) 测试装置
CN106033393B (zh) 一种应用程序测试方法及系统以及移动终端
CN104794049B (zh) 应用程序测试方法和装置
Calvagna et al. A formal logic approach to constrained combinatorial testing
CN104866556B (zh) 数据库的故障处理方法、装置和数据库系统
CN103631590B (zh) 自动化测试脚本的编辑方法
CN105302720A (zh) 一种软件回归测试用例筛选方法
CN104505126B (zh) 一种动态存储器测试系统及方法
Assaf et al. Diagnostic expert systems from dynamic fault trees
CN103049374B (zh) 一种自动化测试的方法及装置
WO2008148670A1 (en) Method for providing reference data for a diagnosis of a system dependent on an event trace
CN104063307B (zh) 一种软件测试方法和系统
CN105760300B (zh) 一种stk/utk业务的自动化测试方法及测试系统
CN103455672B (zh) 一种fpga仿真测试用例自动化回归方法
CN109460366A (zh) 一种软件稳定性测试方法、装置、设备及介质
CN104239212B (zh) 测试用例的查询方法及装置、测试用例的建立方法及装置
CN108845945A (zh) 应用测试优化方法及装置
CN112350879B (zh) 数据通信设备测试管理方法、装置、系统及存储介质
CN106155898B (zh) 一种流程图的路径获取方法及装置
CN116132357A (zh) 一种测试信息确定方法、设备和计算机可读存储介质
CN112395207A (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
CB02 Change of applicant information

Address after: 511446 Guangzhou City, Guangdong Province, Panyu District, South Village, Huambo Business District Wanda Plaza, block B1, floor 28

Applicant after: Guangzhou Huaduo Network Technology Co., Ltd.

Address before: 510655, Guangzhou, Whampoa Avenue, No. 2, creative industrial park, building 3-08,

Applicant before: Guangzhou Huaduo Network Technology Co., Ltd.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20210113

Address after: 511442 3108, 79 Wanbo 2nd Road, Nancun Town, Panyu District, Guangzhou City, Guangdong Province

Patentee after: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 511446 28th floor, block B1, Wanda Plaza, Wanbo business district, Nancun Town, Panyu District, Guangzhou City, Guangdong Province

Patentee before: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20140827

Assignee: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd.

Assignor: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd.

Contract record no.: X2021440000053

Denomination of invention: Software testing method and device

Granted publication date: 20161123

License type: Common License

Record date: 20210208

EE01 Entry into force of recordation of patent licensing contract