CN1431598A - 程序测试系统及方法 - Google Patents
程序测试系统及方法 Download PDFInfo
- Publication number
- CN1431598A CN1431598A CN 02101641 CN02101641A CN1431598A CN 1431598 A CN1431598 A CN 1431598A CN 02101641 CN02101641 CN 02101641 CN 02101641 A CN02101641 A CN 02101641A CN 1431598 A CN1431598 A CN 1431598A
- Authority
- CN
- China
- Prior art keywords
- incident
- measured
- current state
- state
- program
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种程序测试系统,其包括事件表、随机选取器及状态机器。事件表记录了待测程序能够处理的事件,随机选取器随机选取一待测事件。状态机器依待测程序目前状态及状态变迁表内容,判断待测事件相对目前状态是否为有效。状态机器判断待测事件有效时,程序测试系统即依判断结果,以有效待测事件测试待测程序。本发明亦揭露了一种程序测试方法。本发明是依目前状态及状态变迁表,判断选取的待测事件是否为有效待测事件,故测试过程中实际执行测试的事件皆为有效事件,大幅减少测试的次数及时间。由于其应用了状态变迁表,故产生的有效待测事件间具关连性,可以快速且系统化地测试待测程序,完整覆盖所有可能发生的情形,有效完成测试工作。
Description
技术领域
本发明涉及一种程序测试系统及方法,特别涉及一种依据目前状态(Current State)以及状态变迁表(State Transition Table),产生一有效待测事件的程序测试系统及方法。
背景技术
随着信息科技的进步,人类的生活迅速迈入信息化、E化的时代,时至今日,在日常生活中已不能一日无信息科技。而推动及支撑信息科技发展的助力及基础主要有二:一为信息基础建设的普及及硬件效能的提升,另一则为软件技术的发展。信息基础建设的普及及硬件效能的提升使信息科技的适用范围及层面更加扩大,并使复杂且硬件需求日益庞大的应用成为可能;而软件技术的发展则奠基于其上,并且还进一步实现了每一个信息科技使用者的希冀及理想。
软件开发的过程主要有系统分析、系统设计、程序撰写,测试除错、后续维护更新等,每一个环节缺一不可。而其中测试除错还为软件开发过程后段中重要的工作,一个程序是否能够正常的执行及其效能良好与否,除了程序撰写时的投入之外,端赖是否能够以一快速且周延的测试方法,有效针对程序的每一个状态及其个别事件进行测试,以验收程序是否如分析设计的初的规划,正确的处理使用者的操作。
现有的测试方法,大部分采用「暴力测试法」,而所谓的「暴力测试法」便是随机选取一事件,并利用随机数产生器产生画面上的任一坐标后,将事件及坐标一并送入待测程序,以考验待测程序的处理能力,其所凭借的是效能较佳的硬件,希望能通过大规模的测试,找出程序设计撰写时疏漏的地方。此种测试方法的缺点为硬件需求较为严格,且所需的测试时间较长,此外,由于事件是由随机数所产生,因此前后产生的事件种类之间并不具关连性,往往无法测试到某些状况,此种情形在测试人机接口程序时尤为明显,因此造成测试并无法达到预期的效果,而经测试的程序仍隐藏许多未知的错误。
因此,如上所述,如何在一般效能的硬件下,快速且系统化地测试待测程序,且完整覆盖所有可能发生的情形,以有效完成测试的工作,实是当前亟待解决的课题。
发明内容
针对上述问题,本发明的目的是提供一种程序测试系统及方法,其可依据目前状态(Current State)以及状态变迁表(State TransitionTable),产生一有效待测事件,以测试待测程序。
为达上述目的,本发明的程序测试系统主要包括一事件表(EventList)、一随机选取器以及一状态机器(State Machine)。事件表记录了待测程序能够处理的事件,随机选取器则随机自事件表选取一待测事件。状态机器依据待测程序的目前状态以及状态变迁表内容,判断待测事件相对于目前状态是否为有效。当状态机器判断待测事件相对于目前状态为有效时,程序测试系统即依判断结果,以一有效待测事件测试待测程序。
状态变迁表记录了各状态及各事件的对应关系。在本发明的一实施例中,当待测事件相对于目前状态为有效时,坐标产生器即依据目前状态相对应的使用者介面,输出产生有效待测事件所需的坐标,使一事件产生器能够依此坐标产生出有效待测事件。
状态变迁表可还记录各个状态的下一状态。如此,状态机器即可依据状态变迁表,在待测程序处理有效待测事件完毕后,将下一状态设定为目前状态。此外,状态机器亦可依据待测程序执行有效待测事件的结果来更新目前状态。
本发明还提供一种程序测试方法,其测试一待测程序,该待测程序包含多个状态,且能够处理多个事件,该程序测试方法包含:自一记录该事件的事件表中随机选取该待测事件;依据该待测程序的一目前状态以及一状态变迁表,判断一待测事件相对于该目前状态是否为有效,其中该状态变迁表记录该状态及该事件之一对应关系;以及
依据该状态机器的判断结果以一有效待测事件测试该待测程序。
由于依本发明的程序测试系统及方法是依据目前状态及状态变迁表,判断所选取的待测事件是否为有效待测事件,故在测试过程中所实际执行测试的事件皆为有效事件,大幅减少测试无效事件的次数及所需的时间。又,由于其应用了状态变迁表,故前后产生的有效待测事件之间皆具关连性,因此可以快速且系统化地测试待测程序,并完整覆盖所有可能发生的情形,有效地完成测试工作。
附图说明
下面结合附图及实施例对本发明进行详细说明:
图1为一结构图,显示依本发明较佳实施例的程序测试系统的结构;
图2a为一示意图,显示依本发明较佳实施例的例示的使用者介面(状态)及其对象;
图2b为一示意图,显示依本发明较佳实施例的事件表的例示栏位及其内容;
图3为一示意图,显示依本发明较佳实施例的状态变迁表的例示栏位及其内容;
图4为一示意图,显示依本发明较佳实施例的例示的使用者介面中的对象坐标;
图5为一流程图,显示依本发明较佳实施例的程序测试方法的步骤。
图中符号说明:
1 待测程序
2 程序测试系统
21 事件表
22 随机选取器
23 状态机器
231 状态变迁表
24 事件产生器
25 坐标产生器
S501~S507 程序测试方法的步骤
具体实施方式
以下将参照相关附图,说明本发明较佳实施例的程序测试系统及方法,其中相同的元件将以相同的符号加以说明。
请参照图1所示,本发明较佳实施例的程序测试系统2是测试一待测程序1,待测程序1包含多个状态,且能够处理多个事件。程序测试系统2包含一事件表(Event List)21,其记录待测程序1能够处理的事件;一随机选取器22,其随机选取事件表21中的事件之一为一待测事件;一状态机器(State Machine)23,其依据待测程序1的目前状态(Current State)以及一状态变迁表(State Transition Table)231,判断待测事件相对于目前状态是否为一有效待测事件;以及一事件产生器(Event Generator)24,其依据状态机器23的判断结果产生有效待测事件。此外,程序测试系统2尚包含一坐标产生器25,其依据目前状态相对应的一使用者介面,输出产生有效待测事件所需的坐标。
请参照图2a所示,状态一、状态二及状态三为待测程序1中的三个例示状态,使用者介面一、使用者介面二及使用者介面三分别为其相对应的显示画面。其中使用者介面一包含二对象(Object),分别为TextBox1及Button1,使用者介面二包含三对象,分别为Label1、Button2及Button3,同样的,使用者介面三包含三对象,分别为ListBox1、Button4及Button5。
请同时参照图2b所示,事件表21包含二栏位,分别为事件识别码Event ID及事件Event,其中事件001为「State1_TextBox1_Change」,代表状态一相对应的使用者介面一中的TextBox1的内容改变,事件002为「State1_Button1_Click」,代表按压状态一相对应的使用者介面一中的Button1,同理,事件003「State2_Button2_Click」代表按压状态二相对应的使用者介面二中的Button2,事件004「State2_Button3_Click」代表按压状态二相对应的使用者介面二中的Button3,依此类推。
需注意的是,在本实施例中,相同种类而作用于不同对象的事件视为不相同。如上所述,同样为按压Button事件,分别作用于不同状态之下的不同对象如Button1及Button2,视为不同的事件,具有不同的事件识别码002及003;即便是作用于相同状态底下的不同对象如Button2及Button3,亦视为不同的事件,具有不同的事件识别码003及004。此外,图2b的事件表21仅为一例示格式,能够记录待测程序1的事件的任何其它格式或数据结构均可使用。
请参照图3所示,状态变迁表231是记录各状态及各事件的对应关系。以事件002为例,对应至状态一时,将传送TextBox1的资料,并改变目前状态至状态二;对应至状态二及状态三时,则为一NULL值,即为一无效事件。此外,各状态及各事件的对应关系可仅为「改变目前状态」,如事件004对应至状态二,或仅为「执行某动作」,如事件005对应至状态三等。
需注意的是,如同前述的事件表21,状态变迁表231仅为一例示格式,能够记录各状态及各事件的一对应关系的任何其它格式或数据结构均可使用。
请参照图1所示,前述事件产生器24依据状态机器23的判断结果产生有效待测事件时,尚需接收坐标产生器25依据目前状态所对应的使用者介面,所输出的产生有效待测事件所需的坐标。请参照图4所示,对应至状态一的使用者介面一中的Button1,其四个顶点的坐标分别为(200,360)、(200,560)、(400,360)及(400,560),在目前状态为状态一时,欲产生一有效待测事件「按压Button1」,即「State1_Button1_Click」时,坐标产生器25即依据使用者介面一,输出一位于(200,360)、(200,560)、(400,360)及(400,560)中的坐标至事件产生器24,以产生有效待测事件。
为使本发明的内容容易理解,以下将举一实例,说明依本发明较佳实施例的程序测试方法的流程。
请参照图5所示,本发明较佳实施例的程序测试方法的步骤包含:自事件表21中随机选取一待测事件(S501),接着状态机器23依据待测程序1的目前状态以及一状态变迁表231,判断待测事件相对于目前状态是否为一有效待测事件(S502),如果否,则回到S501,重新随机选取一待测事件再行判断,如果是,则由坐标产生器25依据目前状态所对应的使用者介面,输出产生有效待测事件所需的坐标(S503),并传送至事件产生器24以产生有效待测事件(S504),同时,如果状态变迁表231所记录的对应关系包含改变目前状态,则状态机器23还依据记录内容,将目前状态及有效待测事件所对应的下一状态设定为目前状态(S505),并在待测程序1执行有效待测事件后,接收其反馈(S506),如果其中包含改变目前状态的信息时,则依据反馈内容更新目前状态,最后,再检查测试程序是否结束(S507),如果否,则回到S501,依据上述步骤继续测试,如果是,则结束测试。
综上所述,本发明的程序测试系统及方法是依据目前状态及状态变迁表,判断所选取的待测事件是否为有效待测事件。所以,在测试时所实际执行测试的事件皆为有效事件,大幅减少了测试无效事件的次数及所需的时间。又,由于其应用状态变迁表,故前后产生的有效待测事件之间皆具关连性,因此本发明的程序测试系统及方法可以快速且系统化地测试待测程序,并完整覆盖所有可能发生的情形,有效地完成测试工作。
需注意的是,本领域技术人员可对其进行等效的修改与变更,而不超出本发明的精神与范畴。例如,事件表中可直接储存各个状态下有效事件的坐标,如此即不需参照目前状态所对应的使用者介面,输出产生有效待测事件所需的坐标以得到有效事件。然而,如此事件表的资料量将相对较为庞大。本领域技术人员可视情况与实际的需要,选择所需的实施方式。
此外,在上述的实施例中,相同种类而作用于不同对象的事件视为不相同。然而,若视为相同,藉由等效地修改事件表与状态变迁表中的资料内容,并配合事件产生器,仍可产生出目前状态下的有效待测事件。
因此,以上所述仅为举例性,而非为限制性。任何未脱离本发明的精神与范畴,而对其进行的等效修改或变更,均应包含于本专利的保护范围中。
Claims (16)
1.一种程序测试系统,其测试一待测程序,该待测程序包含多个状态,且能够处理多个事件,该程序测试系统包含:
一事件表,其记录该待测程序能够处理的事件;
一随机选取器,其随机自该事件表选取一待测事件;以及
一状态机器,其依据该待测程序的目前状态以及一状态变迁表,判断该待测事件相对于该目前状态是否为有效,其中该状态变迁表记录该状态及该事件的一对应关系,且当该状态机器判断待测事件相对于目前状态为有效时,该程序测试系统即依判断结果以一有效待测事件测试该待测程序。
2.根据权利要求1所述的程序测试系统,其特征在于:还包含:一事件产生器,其依据该状态机器的判断结果产生该有效待测事件。
3.根据权利要求2所述的程序测试系统,其特征在于:还包含:
一坐标产生器,其依据该目前状态相对应的一使用者介面,输出该事件产生器产生该有效待测事件所需的一坐标。
4.根据权利要求1所述的程序测试系统,其特征在于:该对应关系还包含一下一状态,且该下一状态为该状态之一。
5.根据权利要求4所述的程序测试系统,其特征在于:该状态机器还依据目前状态及有效待测事件,将该状态变迁表中相对应的下一状态设定为目前状态。
6.根据权利要求1所述的程序测试系统,其特征在于:该状态机器还依据该待测程序执行有效待测事件的结果,更新目前状态。
7.一种程序测试方法,其测试一待测程序,该待测程序包含多个状态,且能够处理多个事件,该程序测试方法包含:
自一记录该事件的事件表中随机选取待测事件;
依据该待测程序的目前状态以及一状态变迁表,判断一待测事件相对于目前状态是否为有效,其中该状态变迁表记录该状态及该事件的一对应关系;以及
依据该状态机器的判断结果以一有效待测事件测试待测程序。
8.根据权利要求7所述的程序测试方法,其特征在于:还包含:产生该有效待测事件。
9.根据权利要求8所述的程序测试方法,其特征在于:还包含:依据该目前状态相对应的使用者介面,输出产生该有效待测事件所需的坐标。
10.根据权利要求7所述的程序测试方法,其特征在于:该对应关系还包含一下一状态,且该下一状态为该状态之一。
11.根据权利要求10所述的程序测试方法,其特征在于:还包含:依据该目前状态及该有效待测事件,将该状态变迁表中相对应的下一状态设定为目前状态。
12.根据权利要求7所述的程序测试方法,其特征在于:该状态机器还依据待测程序执行有效待测事件的结果,更新目前状态。
13.一种计算机可读取记录媒体,其记录了一计算机在加载后,能够执行下列程序的程序代码:
自一记录该事件的事件表中随机选取待测事件;
依据该待测程序的目前状态以及一状态变迁表,判断一待测事件相对于目前状态是否为有效,其中该状态变迁表记录该状态及该事件的一对应关系;以及
依据该状态机器的判断结果以一有效待测事件测试待测程序。
14.根据权利要求13所述的计算机可读取记录媒体,其特征在于:该计算机在加载该程序代码后,还执行下列程序:
依据该目前状态相对应的一使用者介面,输出产生一有效待测事件所需的坐标,以产生该有效待测事件。
15.根据权利要求13所述的计算机可读取记录媒体,其特征在于:该计算机在加载程序代码后,还执行下列程序:
依据该目前状态及有效待测事件,将该状态变迁表中目前状态所对应的下一状态设定为目前状态。
16.根据权利要求13所述的计算机可读取记录媒体,其特征在于:该计算机在加载程序代码后,还执行下列程序:
依据该待测程序执行有效待测事件的结果,更新目前状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02101641 CN1225695C (zh) | 2002-01-11 | 2002-01-11 | 程序测试系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02101641 CN1225695C (zh) | 2002-01-11 | 2002-01-11 | 程序测试系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1431598A true CN1431598A (zh) | 2003-07-23 |
CN1225695C CN1225695C (zh) | 2005-11-02 |
Family
ID=4739586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02101641 Expired - Fee Related CN1225695C (zh) | 2002-01-11 | 2002-01-11 | 程序测试系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1225695C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100359488C (zh) * | 2005-08-19 | 2008-01-02 | 华为技术有限公司 | 一种基于功能覆盖率的随机激励的自动产生方法 |
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
CN102404168A (zh) * | 2011-11-15 | 2012-04-04 | 北京天融信科技有限公司 | 一种nud的综合测试方法及装置 |
CN102650528A (zh) * | 2011-02-25 | 2012-08-29 | 鸿富锦精密工业(深圳)有限公司 | 安全处理系统及方法 |
CN108241571A (zh) * | 2016-12-23 | 2018-07-03 | 联芯科技有限公司 | 一种程序测试方法及装置 |
CN110083406A (zh) * | 2018-01-26 | 2019-08-02 | 广东亿迅科技有限公司 | 基于文本二维表格的状态机定义方法及其系统 |
-
2002
- 2002-01-11 CN CN 02101641 patent/CN1225695C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100359488C (zh) * | 2005-08-19 | 2008-01-02 | 华为技术有限公司 | 一种基于功能覆盖率的随机激励的自动产生方法 |
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
CN102650528A (zh) * | 2011-02-25 | 2012-08-29 | 鸿富锦精密工业(深圳)有限公司 | 安全处理系统及方法 |
CN102404168A (zh) * | 2011-11-15 | 2012-04-04 | 北京天融信科技有限公司 | 一种nud的综合测试方法及装置 |
CN108241571A (zh) * | 2016-12-23 | 2018-07-03 | 联芯科技有限公司 | 一种程序测试方法及装置 |
CN110083406A (zh) * | 2018-01-26 | 2019-08-02 | 广东亿迅科技有限公司 | 基于文本二维表格的状态机定义方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1225695C (zh) | 2005-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Coleman et al. | Analysis of dawnbench, a time-to-accuracy machine learning performance benchmark | |
CN107239392B (zh) | 一种测试方法、装置、终端及存储介质 | |
Zhong et al. | An experimental study of four typical test suite reduction techniques | |
US7739553B2 (en) | System crash analysis using path tracing technologies | |
US9075911B2 (en) | System and method for usage pattern analysis and simulation | |
US20100162217A1 (en) | Debugging System Using Static Analysis | |
CN1845081A (zh) | 一种嵌入式应用软件测试的过程监控方法 | |
CN1225695C (zh) | 程序测试系统及方法 | |
CN100405306C (zh) | 程序排程系统及方法 | |
Chung et al. | A performance comparison of event calendar algorithms: an empirical approach | |
Dhavachelvan et al. | Multi-agent-based integrated framework for intra-class testing of object-oriented software | |
CN112333246B (zh) | 一种ABtest实验方法、装置、智能终端及存储介质 | |
CN103955423A (zh) | 一种国产jvm的测试评估方法 | |
US20030126506A1 (en) | Program testing system and method | |
CN116302344A (zh) | 一种批量生成硬件仿真自动化过程的方法及系统 | |
CN113849484A (zh) | 一种大数据组件升级方法、装置、电子设备及存储介质 | |
CN1383509A (zh) | 应用程序开发系统、应用程序开发方法及存储应用程序开发程序的存储媒体 | |
Chan et al. | An approach to monitor application states for self-managing (autonomic) systems | |
US20090187905A1 (en) | Method and apparatus for workflow execution | |
McLeod et al. | Instrumenting bytecode for the production of usage data | |
CN1381785A (zh) | 软件诊断系统与方法 | |
Sermeno et al. | CORBA-Based Class Scheduling Framework Using Decorator and Facade Design Patterns | |
CN117667638B (zh) | 一种基于敏捷性能测试模型的测试场景设计方法 | |
Wu et al. | An Empirical Study on Environmental Factors for Reproducing Concurrent Software Failures | |
CN117034822B (zh) | 基于三步式仿真的验证方法、电子设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |