CN110286882A - 一种基于模型检测的前台系统设计与验证方法 - Google Patents

一种基于模型检测的前台系统设计与验证方法 Download PDF

Info

Publication number
CN110286882A
CN110286882A CN201910438229.6A CN201910438229A CN110286882A CN 110286882 A CN110286882 A CN 110286882A CN 201910438229 A CN201910438229 A CN 201910438229A CN 110286882 A CN110286882 A CN 110286882A
Authority
CN
China
Prior art keywords
interface
state
menu
case
model
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
Application number
CN201910438229.6A
Other languages
English (en)
Other versions
CN110286882B (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.)
Beijing University of Aeronautics and Astronautics
Original Assignee
Beijing University of Aeronautics and Astronautics
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 Beijing University of Aeronautics and Astronautics filed Critical Beijing University of Aeronautics and Astronautics
Priority to CN201910438229.6A priority Critical patent/CN110286882B/zh
Publication of CN110286882A publication Critical patent/CN110286882A/zh
Application granted granted Critical
Publication of CN110286882B publication Critical patent/CN110286882B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提出一种基于模型检测的前台系统设计与验证方法,属于模型检测的系统设计与验证领域。本发明包括:模型生成模块根据前台系统的设计需求建立界面模型,生成状态转移图;测试用例生成模块遍历界面模型,自动批量生成对前台系统测试的检测用例集;界面模型自动机对检测用例集中的每一个检测用例,通过触发界面上的菜单或者菜单项来调用相应的api转到下个界面,获取检测用例的状态表和状态转移表;状态转移自动机将检测用例的状态及状态转移规则,与规约相比对进行正确性验证,验证不通过时,输出验证不通过的位置。本发明实现了在项目初期对前台系统的设计及开发的验证,减少后期项目的维护成本,提高了前台系统的设计质量和开发效率。

Description

一种基于模型检测的前台系统设计与验证方法
技术领域
本发明属于模型检测的系统设计与验证领域,具体涉及一种基于界面窗口树模型的前台系统设计与行为正确性的验证方法。
背景技术
在现代软件开发过程中,前台系统作为与用户直接交互的应用系统和用户对接部分,变得越来越重要,前台系统的设计和开发也成为应用系统开发和设计的重要因素。随着系统功能越来越强大,系统界面中包含的组件以及系统界面相互间的包含和跳转关系越来越复杂,系统一旦出现问题,依赖人工方式进行追踪排查会消耗很高的人力成本,显然是不可行的。尽管软件测试的理论、方法以及工具经过几十年的发展成果显著,但软件的功能性测试本质上还是一种事后验证的方法,即是在实际软件开发过程中或开发完成后进行的一种验证。软件系统的开发质量很大程度上取决于前期软件设计的质量,在本世纪初美国国家标准研究院相关报告就指出,软件测试中发现的70%以上的错误是由于需求获取或设计引起的。这说明了软件设计的质量对软件质量具有重要意义,而对前台系统的设计进行建模和验证,能够在项目初期尽可能规避可能存在的设计问题,减少后期项目出现问题时追踪排查的成本。因此,对前台系统的设计进行建模与验证具有十分重要的现实意义。
随着近几年来前端技术的飞速发展,前台系统也从原来只负责MVC(Model ViewController,模型-视图-控制器)架构中的视图View部分到自成一套MVC架构,到如今各大互联网公司都在使用的MVVM(Model-View-ViewModel)架构,前台系统承担着越来越复杂的工作,验证前台系统设计的正确性具有十分重要的理论意义,对于前台系统的设计与验证,模型检测(Model Checking)是一种有效的手段。
目前对于前台系统的建模方法主要分为三类:非形式化方法、半形式化方法以及形式化方法。其中分别包括传统的采用自然语言描述的方法,基于UML(Unified ModelingLanguage),WebML(Web meta language)等图形化建模语言描述的方法以及支持验证的形式化建模方法等。但这些方法都存在一些弊端,主要有:
(1)对于采用自然语言描述的传统方法,这种非形式化的方法符合人类的语言习惯,便于理解,但具有一定的二义性,描述不够准确。
(2)对于采用UML,WebML等图形化的建模语言的方法,这种半形式化语言不支持自动化验证。这样在设计中一方面需要等到系统实现后在测试阶段才能发现,大大影响了开发效率和开发成本;另一方面当出现问题时,很难通过人工方式排查出所有的错误。
(3)对于现有的形式化建模方法,如LOTOS(language of temporal orderingspecification),Petri网等虽然支持验证,但是在常规的模型检测中,对系统期望的性质需要采用相对应的时态逻辑公式进行规约,而时态逻辑公式存在标记相对晦涩难懂,现有工具支撑不足、工具易用性差等原因,使得这些形式化模型不适合处理大规模实际设计问题。
综上所述,现有的前台系统的建模方法存在多种局限:1)非形式化建模方法存在二义性,不能够准确描述;2)半形式化方法不支持自动化验证,影响软件质量和开发成本,增加了维护成本;3)形式化建模方法所采用的技术方法晦涩难懂,对相关人员专业知识要求较高;4)其他一些建模方法可以实现自动检测,但存在状态空间爆炸的问题。
此外,在测试过程中还存在许多缺点,例如面对复杂的前台系统时,由于系统界面包含大量功能组件,系统界面相互之间的包含跳转关系复杂,这些问题极大地增加了对前台系统进行建模的难度,验证过程也变得十分复杂,从而导致测试效率低下且手工验证过程中人为操作导致的错误率较高,这些问题都会对软件测试的质量造成严重的不良影响。
发明内容
本发明针对复杂的前台系统设计中建模难度大,验证过程复杂,测试效率低下且手工验证过程中人为操作导致的错误率较高的问题,提出一种基于模型检测的前台系统设计与验证方法。
本发明的基于模型检测的前台系统设计与验证方法,将窗口树模型引入前台系统中,基于计算机实现的测试框架来执行,测试框架包括模型生成模块、测试用例生成模块、界面模型自动机和检测自动机,包括如下步骤:
步骤一,模型生成模块根据前台系统的设计需求,获取前台系统中所包含的界面以及界面包含的元素,建立界面模型,根据前台系统的状态迁移信息,建立状态转移图。所述的状态转移图用来对前台系统的设计关于需求的正确性进行规约。
将前台系统包含的界面作为节点,建立界面模型,界面分为基本界面和复合界面,复合界面由基本界面组合而成,基本界面中包含菜单和界面元素,菜单和菜单项也作为节点,用有向边来表示节点间包含关系或者跳转关系。将一个界面或者由界面、菜单和菜单项组成的三元组作为一个状态,依据节点间跳转关系生成状态转移图。
步骤二,测试用例生成模块遍历得到的界面窗口树模型,自动批量生成测试前台系统的检测用例集。一个检测用例是一个界面跳转序列。
步骤三,界面模型自动机对检测用例集中的每一个检测用例,通过触发界面上的菜单或者菜单项来调用相应的api转到下个界面,遍历检测用例中的状态得到状态表和状态转移表;状态表中记录检测用例的所有状态,状态转移表中记录检测用例中的所有状态转移规则;
步骤四,将根据系统设计要求设计好的状态及状态转移图作为检测用例正确性验证的规约,状态转移自动机将输入的检测用例的状态及状态转移规则,与所述的规约相互比对,进行正确性验证,当验证不通过时,输出验证不通过的位置及相应的验证记录,验证不通过的位置就是设计错误的位置。
所述的步骤一中,所建立的界面模型中包括四种节点,如下:
基本界面baseui,定义为baseui::=(uiname,menu,element+)形式的三元组,其中uiname表示基本界面的名称,menu表示基本界面所包含的菜单,element+表示基本界面所包含的界面元素,有一个或多个;
复合界面complexui,定义为complexui::=∪baseui,其中符号“∪”表示进行界面叠加操作;
界面ui,定义为ui::=∪(ui)|baseui,其中符号“|”表示或者;界面是一个基本界面或一个复合界面;
菜单menu,定义为menu::=(name,menuitems+)形式的二元组,其中name表示菜单的名称,menuitems+表示菜单所包含的菜单项,有一个或多个;
菜单项menuitem,定义为menuitem::=(itemname,api+),其中itemname表示菜单项的名称,api表示菜单项提供的功能接口,有一个或多个。
四种节点存在的关系包括3种包含关系和1种跳转关系,依次是:复合界面包含基本界面ComplexUI2Parts,基本界面包含菜单UI2Menu,菜单包含菜单项Menu2MenuItems,菜单项触发跳转MenuItem2UI。
本发明与现有技术相比,具有以下明显优势:
(1)测试效率高:在面对复杂的前台系统时,由于界面包含大量的功能组件,相互间具有包含和跳转关系,因此人工方式验证系统设计正确性工作量大且不易覆盖所有测试用例,本发明通过使用窗口树模型对前台系统进行建模,使用状态转移图对设计正确性进行建模,利用模型检测方法快速验证前台系统设计是否满足需求,通过自动化验证提高了对前台系统的设计质量的测试效率;
(2)测试准确率高:在系统功能越来越庞大,界面系统越来越复杂的情况下,人工方式设计与验证前台系统设计正确性存在很大的弊端,而本发明提供的自动化验证方法可以避免手工验证过程中人为失误导致的缺漏,降低设计与验证成本,提高了验证的准确率;
(3)可扩展性强:出于软件复用的角度,将一条测试用例是否符合规则的判断过程进行模块化形成基本检查算法(BCA,Base Checking Algorithm)。这些模块化的判断过程可以根据需求作相应的调整,灵活方便。
(4)用户友好:现有的形式化建模方法在常规的模型检测中,对系统期望的性质需要采用对应的时态逻辑公式进行规约,而时态逻辑公式存在标记相对晦涩难懂,现有工具支撑不足等诸多问题,本发明给出了电子表格模板以方便让需求人员录入界面需求,其次实现了一种通过解析该电子表格自动生成状态转移图中状态与转移规则的脚本。
附图说明
图1是本发明中一般界面窗口树模型示意图;
图2是本发明基于自动机的模型检测器示意图;
图3是本发明测试用例自动生成算法示意图;
图4是本发明实施例中服务目录界面部分示意图;
图5是本发明实施例中窗口树模型的一个XML格式示意图;
图6是本发明实施例中殡葬科技平台状态转移图表格形式示意图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明作进一步的详细描述。
参考文件1[李睿,连航,马世龙等.基于形式化方法的航空电子系统检测.软件学报J,2015,26(2):181-201.]提供了航空电子系统窗口树建模方式,将并列的api(应用程序编程接口)集合定义为一个窗口,任务执行流程相当于api之间的有序流转。基于参考文件1的窗口树建模方式,本发明创新地将窗口树模型用于前台系统界面建模和验证中,采用窗口树模型(Window Tree Model,WTM)对复杂的前台系统进行建模,对前台系统窗口组成和跳转关系进行抽象,采用状态转移图(State Transition Graph,STG)作为系统规约刻画系统行为的正确性,通过提出基于自动机的模型检测机制对前台系统设计的正确性进行自动化验证,本发明方法能够在项目初期尽可能规避前台设计中存在的诸多问题,减少后期项目的维护成本,提高前台系统的设计质量和开发效率。下面对本发明的实现过程进行说明。
首先,本发明的设计及验证方法可实现为一个基于计算机的测试框架,测试框架包括模型生成模块、测试用例生成模块、模型模拟自动机和检测自动机,模型生成模块执行下面步骤一,测试用例生成模块执行步骤二,模型模拟自动机执行步骤三,检测自动机执行步骤四。下面说明各步骤。
步骤一,根据前台系统的设计需求,定义前台系统中所包含的界面以及界面包含的元素,确定元素的状态集。抽象被测前台系统的界面窗口树模型和状态转移图模型。状态转移图模型用于描述被测系统的状态迁移信息,用来对前台系统的设计关于需求的正确性进行规约。
针对前台系统,基于形式化和窗口树模型,本发明将界面作为窗口,建立窗口树模型,也称界面模型或者界面窗口树模型。界面窗口树模型用于刻画前台系统中组件以及组件之间的关系和界面以及界面之间的关系。前台系统的界面间的包含和跳转关系可以看作前台系统流程的集合,每一个流程是事件的序列,一个事件是一个API或者多个API调用的序列,API是指一个系统模块或系统对外提供的操作接口。将前台系统界面抽象为多个节点,节点是窗口,有四种节点,分别是复合界面、基本界面、菜单和菜单项。这四种节点存在包含关系和跳转关系,用有向边来表示节点间包含关系或者跳转关系,其中表示包含关系的有复合界面包含基本界面(ComplexUI2Parts),基本界面包含菜单(UI2Menu),菜单包含菜单项(Menu2MenuItems)。表示跳转关系的是菜单项触发跳转(MenuItem2UI)。
界面窗口树模型中包括如下元素定义:
基本界面(baseui):基本界面用来描述基本界面的信息,基本界面定义为baseui::=(uiname,menu,element+)形式的三元组,其中uiname表示当前基本界面的名称,menu表示当前基本界面所包含的菜单,通常为一个菜单,element+表示当前基本界面所包含的界面元素,通常至少为1个。
复合界面(complexui):复合界面是由基本界面叠加组合而成的界面,复合界面定义为complexui::=∪baseui,其中符号“∪”表示多次进行界面叠加操作。
界面(ui):ui::=∪(ui)|baseui,其中符号“|”表示或者,“∪”表示多次进行界面叠加操作。界面可以是一个基本界面,也可以是一个复合界面。
菜单(menu):菜单用来描述界面中菜单的信息,菜单定义为menu::=(name,menuitems+)形式的二元组,其中name表示菜单的名称,menuitems表示菜单所包含的菜单项,有一个或者多个。menuitems+代表菜单项集合。
菜单项(menuitem):菜单项表示菜单中具体某一个项的信息。菜单项定义为menuitem::=(itemname,api+),其中itemname表示菜单项的名称,api表示该菜单项提供的功能接口,每一个菜单项可以有至少一个api。api+代表api的集合。
复合界面包含基本界面(ComplexUI2Parts):表示复合界面Complexui与基本界面baseui的之间的二元关系,如果Complexui由baseui与其他界面叠加而成,则二元关系ComplexUI2Parts成立。
基本界面包含菜单(UI2Menu):表示基本界面baseui与菜单Menu的之间的二元关系,如果baseui包含Menu,则二元关系UI2Menu成立。
菜单包含菜单项(Menu2MenuItems):表示菜单Menu与菜单项Menuitem的之间的二元关系,如果Menu包含Menuitem,则二元关系Menu2MenuItems成立。
菜单项触发跳转(MenuItem2UI):由一个(menuitem,api,UI)的三元组定义。menuitem代表菜单项,api为该菜单项提供的功能接口,api的调用相当于该菜单项触发的事件,UI表示经过api跳转到的界面。MenuItem2UI表示菜单项与界面(包括复合界面与基本界面)之间的二元关系。如果菜单项经过某事件从当前界面跳转到新的界面节点,则二元关系MenuItem2UI成立。
界面模型图:界面模型图定义为(Sui,SM,SL,SC,ui0)形式的五元组,其中Sui表示界面的集合;SM表示菜单的集合;SL表示界面跳转的集合,集合中的每一个元素为一个跳转关系;SC表示包含关系的集合,集合中的每一个元素为一个包含关系;ui0∈Sui表示起始界面。
如图1所示,为一般界面窗口树模型。在该窗口树模型中,窗口用矩形框表示,不同种类的窗口代表不同种类的前台系统界面,事件用有向边表示,有向边上标明事件名称以及该事件所代表调用的api。在图1中菜单矩形框下面是一个事件或者时间序列,用api+表示,通过触发api+中存在的事件api,执行MenuItem2UI跳转,该事件或事件序列将流程从菜单窗口转向下一个窗口。不同的事件将流程跳转到不同的界面窗口,提供相同api的窗口可以通过窗口约减规则合并为一个窗口,从而可以减少节点数目以便提高程序处理速度,一个窗口树中所有流程可以模拟复杂前台系统的所有包含和跳转行为。
状态转移图是一种形式化方法,主要用于对前台系统的设计正确性进行建模,主要采用状态和状态转移刻画期待的正确系统行为。状态一般用于标识被观测系统的可观测行为,而状态转移是指在一个流程中某个事件引发的系统状态变化。状态转移图除了可用有向图表示,也可以采用表格的形式记录其状态和状态转移。
状态转移图包含状态、状态转移以及状态转移图,定义如下:
状态:状态s::=<ui,menu,menuitem>|ui,其中符号“|”表示或者,即状态表示一个界面或者由界面,菜单,菜单项组成的三元组。
状态转移:状态转移R(s1,s2)=<s1,e,s2>表示状态s1和s2的转移关系,即状态s1经过事件e转移到状态s2
生成状态转移图,状态转移图是(S,S0,E,RS,E,F)形式的五元组;其中,S是状态的有限集合;S0∈S是初始状态;E是事件的有限集合,e∈E;RS,E是有限的状态转移规则集,如果存在<si,e,sj>∈RS,E,则表示状态转移R(si,sj)成立,si,sj代表两个不同的状态;F表示终止状态集合,
上述的窗口树模型和状态转移图都是形式化定义,作为自动机的两种模型的形式化定义可用于形式化分析,特别是可用于模型检测,而模型检测是前台系统设计和测试的基础。因此,如果采用窗口树模型对前台系统进行建模,再用状态转移图对系统行为正确性进行规约,就具备了一种基于自动机的模型检测基础。作为两个模型中的共通的概念,事件是界面窗口树中API的一次调用或者调用序列。
步骤二,遍历得到的界面窗口树模型,通过测试用例自动生成算法自动批量生成测试前台系统的检测用例,以形成检测用例集合。
本发明设计实现的模型检测系统一方面能够对界面模型进行建模的同时,通过对模型的遍历产生检测用例,生成模型模拟自动机;另一方面能够创建可见状态转移规则,形成状态转移图STG,并以STG作为输入,识别事件引发的可见状态转移是否正确,生成检测自动机。因此,本发明对前台系统的检测部分是一种基于自动机的模型检测器,包括上述两个自动机,即模型模拟自动机和检测自动机,其检测机制如图2所示。Stestcase为检测用例集合,通过使用界面窗口树模型遍历前台系统对前台界面进行建模,生成多个测试用例,构成测试用例集合Stestcase,测试用例即检测用例。
本发明在界面窗口树模型的基础上,对其进行了两个层面的扩展。一方面,提供了一种统一的可视化建模工具,该工具是基于微软Visio建模环境开发的一套模具;另一方面为该模具实现了一个自动生成XML文件的脚本作为后续自动生成检测用例的输入,生成的XML文件与界面窗口树模型具有相同的语义。
检测用例自动生成算法包括基于传统的广度优先遍历算法的状态生成和界面跳转生成,整体流程如图3所示。通过广度优先遍历XML文件中的所有界面节点,以菜单项或者界面叶子节点作为路径终点,生成格式为(complexui,baseui,menu,menuitem)或者(complexui,baseui)的路径,在此基础上遍历跳转关系,为路径补全API以及跳转页面,最终生成所有的检测用例,形如(complexui,baseui,menu,menuitem,api,(complexui|baseui))或(ui,menu,menuItem,api,ui)。一个检测用例是一系列窗口界面的跳转序列,如(ui1,menu,menuItem,api,ui2)是一个界面ui1到界面ui2的路径。对前台系统的界面模型图利用检测用例自动生成算法,生成覆盖当前窗口树中所有路径的测试用例集。
步骤三,在测试框架生成检测用例集后,对其中的每一个检测用例,如图2所示,界面窗口树模型自动机Asimulator通过触发界面上的菜单或者菜单项来调用相应的API转到下个界面,遍历检测用例中的状态得到状态和状态转移用例。状态用例和状态转移用例可以用表格来表示,状态表中记录检测用例的所有状态,状态转移表中记录检测用例中的所有状态转移规则。
检测用例中,状态s是(complexui,baseui,menu,menuitem)或者(complexui,baseui),api对应是事件e,则对应的状态转移用例形如<s1,e,s2>。通过表格来记录各检测用例中的状态和状态转移用例。
步骤四:将步骤三得到的状态和状态转移用例输入状态转移自动机Acheck中,如图2所示,状态转移自动机通过模型检查算法对输入的用例和由系统设计得到的状态及状态转移规则相互比对,判断该输入用例是否满足条件,若是满足条件,则检测通过,输出对应的检测用例测试通过的结果,若不满足条件,则输出检测用例未通过的结果以及未通过检测的位置。
在系统开发初期,用户根据系统设计需求获得前台系统的状态以及状态转移规则,将其作为正确性验证的规约,如图2所示,将得到的状态转移序列<s0,e1,s1>,<s1,e2,s2>,…,<sn-1,en,sn>输入Acheck,在状态转移自动机Acheck对输入的检测用例的状态及状态转移序列,调用已知设计好的状态及状态转移规则来进行比对,来验证检测用例。
出于软件复用的角度,将一条测试用例是否符合规则的判断过程进行模块化,形成基本检查算法(BCA,Base Checking Algorithm)。设输入测试用例(ui1,menu,menuitem,api,ui2),首先进行状态的验证,令s=(ui1,menu,menuitem),验证状态s是否属于状态转移图中已存在的状态S,这一过程也就是对界面窗口的组成是否满足需求进行验证,如果不通过则输出左不匹配,否则表示该测试用例的窗口组成s1是符合需求的。然后遍历STG中的状态转移规则,找到所有符合初始状态为s,事件为api的转移规则集合U,遍历判断集合U中后置状态的起始节点是否均为ui2,如果全部通过则输出通过检测,否则输出右不匹配。当左不匹配或右不匹配时,标识验证不通过,此时可以根据未通过的状态转移路径得到该位置是存在设计错误的,需要对该位置进行修改。
状态转移图STC是系统设计之初的状态和状态转移规则,当后期需要继续加新的界面或者菜单以及菜单项等内容的时候,由于会联动的影响到其它部分的功能,此时先简单的将新加的内容添加到状态转移图,之后再重新根据新设计的界面生成测试用例,生成状态路径以及多个状态转移序列,然后进行验证。
实施例:
前台系统作为直接与用户交互的界面系统在软件开发领域扮演者越来越重要的角色,本发明以软件开发环境国家重点实验室承担开发的“中国殡葬文化与科技公共服务网络平台”--“殡葬科技平台”前台界面系统为实施例,通过对其进行建模、规约,对其前台系统中存在的包含和跳转行为进行建模,并在模型检测系统中对其进行界面构成和跳转检测,从而验证本发明的技术方法,并给出测试结果。
针对殡葬科技平台的所有前端页面,利用本发明的前端建模与自动化验证方法,对前端页面进行建模,并使用状态转移图对用户界面构成和行为进行正确性规约,下面对各步骤的实现进行具体说明。
步骤1:使用开发的模具对殡葬科技平台前台设计进行建模。
本发明使用所开发的模具对殡葬科技平台前台设计进行建模。其中复合界面有系统首页界面,机构目录界面,服务目录界面等。鉴于整个模型过于庞大,本发明以其中部分为例进行说明,如图4所示,是殡葬科技平台界面建模后界面窗口树的一部分——服务目录界面部分。
图4中有这样一条路径,服务目录(复合界面)包含服务目录查询界面(复合界面),服务目录查询界面(复合界面)包含服务二级目录下分类信息(基本界面),该基本界面包含二级目录下分类信息菜单(菜单),该菜单包含服务类别(菜单项),通过该菜单项上的api29,导致服务目录列表界面(基本界面)的状态变化。
步骤2,生成检测用例集合。
界面窗口树模型的图形部分具有所见即所得的特点,便于理解,为了让机器处理更加便捷,应提供更为有效的数据格式,上述模型的XML格式如图5所示,图5中Nodes表示界面窗口树模型的节点,节点是窗口,包括复合界面ComplexUI、基本界面BaseUI、菜单Menu以及菜单项MenuItem。Edges表示有向边,有向边表示节点间的包含关系或者跳转关系,其中包括ComplexUI2Parts,UI2Menu,Menu2MenuItems以及MenuItem2UI。
本实施例刻画的界面窗口树模型有复合界面14个,基本界面41个,菜单24个,菜单项66个。模型所刻画的包含关系共有140个,跳转关系有66个。根据检测用例生成算法,生成检测用例共127个,其中有跳转关系的检测用例有111个,不含跳转关系的检测用例16个。
步骤3:需求人员向状态转移电子表格模板中录入界面需求,得到状态转移图。
考虑到界面系统存在状态数量多,状态转移规则多的问题,本发明给出了电子表格模板以方便让需求人员录入界面需求,限于篇幅这里仅展示表格中的一部分数据,殡葬科技平台状态转移图表格形式如图6所示。
殡葬科技平台前台界面状态转移图表格形式主要有窗口,窗口名称,界面组合,组成界面,菜单名称,菜单操作名称,事件类型,前后台相关性,api序号,api名称,目标窗口这几列组成。其中,事件类型,前后台相关性,api名称这三列暂未用到,属于待扩展内容,可以为将来本模型后续提供自动化测试扩展使用。
如图6,通过遍历状态转移表中窗口名称、界面组合以及组成界面列得到状态,通过遍历API序号列得到触发状态改变的API事件,之后转到下一个状态界面,组成界面中由于包含多个基本界面,因此遍历过程中需要在窗口名称列中查找对应的基本状态界面,之后逐步遍历触发状态改变的API事件,从而完整遍历整个状态转移电子表格模板中的状态,得到状态转移序列,生成便于计算机识别的状态表和状态转移规则表。生成的状态表如表2所示。
表2状态表
生成的状态转移规则表如表3所示,该表由三列组成,分别为前置状态ID(Pre-State ID)、事件(Event ID)和后置状态ID(Post-State ID)。表中的每一行表示一条状态转移规则,其中事件与界面窗口树模型中定义的事件相同,指节点间跳转关系,所有的状态转移规则构成的集合对应一台自动机。由于事件是API的一次调用或者API的调用序列,为了便于后续处理,在状态转移规则表中使用API序号或者API序列来表示事件。
表3状态转移规则表
状态表和状态转移表格式的模型数据与STG模型保持相同的语义,包含所有状态节点、事件边和状态转移规则。本实施例根据上述模型共生成214个状态,1501条状态转移规则。
步骤4:基于前端界面建模后的模型和状态转移图模型,使用模型检测算法对前台需求设计正确性进行验证。
如图2所示,状态转移自动机通过模型检查算法对检测用例和状态及状态转移规则相互比对,对于一个输入测试用例(ui1,menu,menuitem,api,ui2),令s=(ui1,menu,menuitem),验证前置状态s是否属于规约中状态转移图中已存在的状态S,这一过程也就是对界面窗口的组成是否满足需求进行验证,如果不通过则输出左不匹配,否则表示该测试用例的窗口组成是符合需求的。然后遍历规约中STG的状态转移规则,找到所有符合初始状态为s,事件为api的转移规则集合U,遍历判断集合U中后置状态的起始节点是否均为ui2,如果全部通过则输出通过检测,否则输出右不匹配。若测试样例检测通过,输出检测通过,若测试样例检测不通过,否则输出检测未通过的位置及其相应的记录。
综上所示,通过对模型的遍历产生检测用例,生成模型模拟自动机,另一方面能够创建可见状态转移规则,形成状态转移图STG,并以此作为输入,识别事件引发的事件状态转移是否正确,生成检测自动机。
基于上述两个模型,使用模型检测算法得到最后检测结果,检测结果如表4所示。
表4
表4中,pass表示通过,fail表示不通过,对验证结果是fail的测试用例,检查状态转移途径和跳转关系,以更正错误。
本发明借助窗口树模型和状态转移图对前台系统进行自动化的建模与验证,使得前台系统在设计之初就可以通过事先验证的方式规避掉设计当中存在的不易察觉的诸多问题,从而避免在前台系统编写过程当中或编写完成之后测试时人共排查成本高等问题。

Claims (5)

1.一种基于模型检测的前台系统设计与验证方法,基于计算机实现的测试框架,其特征在于,测试框架包括模型生成模块、测试用例生成模块、界面模型自动机和检测自动机,执行如下步骤:
步骤一,模型生成模块根据前台系统的设计需求,获取前台系统中所包含的界面以及界面包含的元素,建立界面模型,生成状态转移图;
将前台系统包含的界面作为节点,建立界面模型,界面分为基本界面和复合界面,复合界面由基本界面组合而成,基本界面中包含菜单和界面元素,菜单和菜单项也作为节点,用有向边表示节点间包含关系或者跳转关系;将一个界面或者由界面、菜单和菜单项组成的三元组作为一个状态,依据节点间跳转关系生成状态转移图;
所建立的界面模型中包括四种节点,如下:
基本界面baseui,定义为baseui::=(uiname,menu,element+)形式的三元组,其中uiname表示基本界面的名称,menu表示基本界面所包含的菜单,element+表示基本界面所包含的界面元素,有一个或多个;
复合界面complexui,定义为complexui::=∪baseui,其中符号“∪”表示进行界面叠加操作;
界面ui,定义为ui::=∪(ui)|baseui,其中符号“|”表示或者;界面是一个基本界面或一个复合界面;
菜单menu,定义为menu::=(name,menuitems+)形式的二元组,其中name表示菜单的名称,menuitems+表示菜单所包含的菜单项,有一个或多个;
菜单项menuitem,定义为menuitem::=(itemname,api+),其中itemname表示菜单项的名称,api表示菜单项提供的功能接口,有一个或多个;
四种节点存在的关系包括3种包含关系和1种跳转关系,依次是:复合界面包含基本界面ComplexUI2Parts,基本界面包含菜单UI2Menu,菜单包含菜单项Menu2MenuItems,菜单项触发跳转MenuItem2UI;
步骤二,测试用例生成模块遍历界面模型,自动批量生成对前台系统测试的检测用例集;一个检测用例是一个界面跳转序列;
步骤三,界面模型自动机对检测用例集中的每一个检测用例,通过触发界面上的菜单或者菜单项来调用相应的api转到下个界面,遍历检测用例中的状态得到状态表和状态转移表;状态表中记录检测用例的所有状态,状态转移表中记录检测用例中的所有状态转移规则;
步骤四,将根据系统设计要求设计好的状态及状态转移图作为检测用例正确性验证的规约,状态转移自动机将输入的检测用例的状态及状态转移规则,与所述的规约相互比对,进行正确性验证,当验证不通过时,输出验证不通过的位置及相应的验证记录,验证不通过的位置就是设计错误的位置。
2.根据权利要求1所述的方法,其特征在于,所述的步骤一中,对前台系统建立的界面模型表示为五元组(Sui,SM,SL,SC,ui0),其中,Sui表示界面的集合;SM表示菜单的集合;SL表示界面跳转的集合,该集合中的每一个元素为一个跳转关系;SC表示包含关系的集合,该集合中的每一个元素为一个包含关系;ui0∈Sui表示起始界面。
3.根据权利要求1所述的方法,其特征在于,所述的步骤一中,生成的状态转移图表示为(S,S0,E,RS,E,F)形式的五元组,其中,S是状态的有限集合;S0∈S是初始状态;E是事件的有限集合;RS,E是有限的状态转移规则集,状态转移R(si,sj)=<si,e,sj>表示状态si经过事件e转移到状态sj,si,sj∈S,e∈E,如果存在<si,e,sj>∈RS,E,则表示状态转移R(si,sj)成立;F是终止状态集合,
4.根据权利要求1所述的方法,其特征在于,所述的步骤二中,采用检测用例自动生成算法生成检测用例,包括:将界面模型自动转换为XML文件,对XML文件中的所有界面节点采用广度优先遍历方法进行遍历,以菜单项或者界面叶子节点作为路径终点,生成格式为(complexui,baseui,menu,menuitem)或者(complexui,baseui)的路径,再遍历跳转关系,为路径补全api以及跳转界面,生成检测用例,检测用例表示为(ui,menu,menuItem,api,ui)。
5.根据权利要求1或3所述的方法,其特征在于,所述的步骤四中,将一条检测用例是否符合规约的判断过程进行模块化,形成基本检查算法,利用基本检查算法判断的过程是:设输入检测用例(ui1,menu,menuitem,api,ui2),首先进行状态的验证,令s=(ui1,menu,menuitem),验证状态s是否属于规约中的状态转移图中已存在的状态S,如果验证不通过则输出左不匹配,若验证通过则表示检测用例的窗口组成s是符合需求的;然后遍历规约中的状态转移图的状态转移规则,找到所有符合初始状态为s,事件为api的转移规则集合U,遍历判断集合U中后置状态的起始节点是否均为ui2,如果全部通过则检测用例通过检测,否则输出右不匹配;当左不匹配或右不匹配时,表示检测用例验证不通过,此时根据检测用例的状态转移路径定位设计错误的位置。
CN201910438229.6A 2019-05-24 2019-05-24 一种基于模型检测的前台系统设计与验证方法 Expired - Fee Related CN110286882B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910438229.6A CN110286882B (zh) 2019-05-24 2019-05-24 一种基于模型检测的前台系统设计与验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910438229.6A CN110286882B (zh) 2019-05-24 2019-05-24 一种基于模型检测的前台系统设计与验证方法

Publications (2)

Publication Number Publication Date
CN110286882A true CN110286882A (zh) 2019-09-27
CN110286882B CN110286882B (zh) 2021-03-09

Family

ID=68002585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910438229.6A Expired - Fee Related CN110286882B (zh) 2019-05-24 2019-05-24 一种基于模型检测的前台系统设计与验证方法

Country Status (1)

Country Link
CN (1) CN110286882B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309637A (zh) * 2020-05-14 2020-06-19 四川新网银行股份有限公司 基于银行微服务的软件测试分析方法
CN111858380A (zh) * 2020-07-31 2020-10-30 北京字节跳动网络技术有限公司 一种模型构建方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104281523A (zh) * 2014-10-27 2015-01-14 中国建设银行股份有限公司 一种需求可测性分析方法及系统
CN104407977A (zh) * 2014-12-08 2015-03-11 北京航空航天大学 基于模型检测的分阶段任务系统的自动化联调测试方法
CN105808416A (zh) * 2014-12-27 2016-07-27 南车株洲电力机车研究所有限公司 一种人机图形交互界面的自动化测试方法和系统
CN107066382A (zh) * 2017-03-09 2017-08-18 北京航空航天大学 一种基于模型的航天器系统自动化测试方法
CN107220172A (zh) * 2016-03-22 2017-09-29 塔塔咨询服务公司 通过模型驱动技术进行自动用户界面(ui)测试的方法和系统
CN107766253A (zh) * 2017-11-13 2018-03-06 南京大学 一种基于模型变更的自动维护测试脚本的方法
EP3486783A1 (en) * 2017-11-15 2019-05-22 Accenture Global Solutions Limited Test case and data selection using a sampling methodology

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104281523A (zh) * 2014-10-27 2015-01-14 中国建设银行股份有限公司 一种需求可测性分析方法及系统
CN104407977A (zh) * 2014-12-08 2015-03-11 北京航空航天大学 基于模型检测的分阶段任务系统的自动化联调测试方法
CN105808416A (zh) * 2014-12-27 2016-07-27 南车株洲电力机车研究所有限公司 一种人机图形交互界面的自动化测试方法和系统
CN107220172A (zh) * 2016-03-22 2017-09-29 塔塔咨询服务公司 通过模型驱动技术进行自动用户界面(ui)测试的方法和系统
CN107066382A (zh) * 2017-03-09 2017-08-18 北京航空航天大学 一种基于模型的航天器系统自动化测试方法
CN107766253A (zh) * 2017-11-13 2018-03-06 南京大学 一种基于模型变更的自动维护测试脚本的方法
EP3486783A1 (en) * 2017-11-15 2019-05-22 Accenture Global Solutions Limited Test case and data selection using a sampling methodology

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
乌尼日其其格 等: "面向航天器系统级测试的虚拟测试方法及应用", 《航空学报》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309637A (zh) * 2020-05-14 2020-06-19 四川新网银行股份有限公司 基于银行微服务的软件测试分析方法
CN111309637B (zh) * 2020-05-14 2020-08-21 四川新网银行股份有限公司 基于银行微服务的软件测试分析方法
CN111858380A (zh) * 2020-07-31 2020-10-30 北京字节跳动网络技术有限公司 一种模型构建方法及装置

Also Published As

Publication number Publication date
CN110286882B (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
CN106649103B (zh) 一种安卓应用程序自动化黑盒测试的方法及系统
CN108345532A (zh) 一种自动化测试用例生成方法和装置
CN106649100A (zh) 一种自动化测试方法及系统
CN102567201B (zh) 跨模型的图形用户界面测试脚本自动修复方法
Ocariza et al. Detecting inconsistencies in JavaScript MVC applications
CN109033843A (zh) 用于分布式静态检测系统的Java文件依赖性分析方法及模块
CN101520730A (zh) 具有改变向导引擎的测试脚本变换分析器
CN105760296A (zh) 自动化测试控制方法、装置及终端
Tierno et al. Open issues for the automotive software testing
Felderer et al. Using defect taxonomies for requirements validation in industrial projects
CN110286882A (zh) 一种基于模型检测的前台系统设计与验证方法
Holzmann Scrub: A tool for code reviews
CN103186459B (zh) 基于脚本的java图形用户界面自动测试方法
Walunj et al. Graphevo: Characterizing and understanding software evolution using call graphs
CN105630678B (zh) 一种智能电能表软件的可靠性检测仪及其检测方法
Villalobos-Arias et al. Evaluation of a model‐based testing platform for Java applications
Baker et al. TRex-the refactoring and metrics tool for TTCN-3 test specifications
Mijailović et al. Empirical analysis of GUI programming concerns
Mateo Navarro et al. A proposal for automatic testing of GUIs based on annotated use cases
Lenhard Portability of Process-Aware and Service-Oriented Software: Evidence and Metrics
Issa Utilising Refactoring To Restructure Use-Case Models.
Mu et al. Design and implementation of gui automated testing framework based on xml
US10073768B1 (en) Smart migration/remediation engine
Elsaka et al. Using methods & measures from network analysis for gui testing
Tiwari et al. Combining Model-Based Testing and Automated Analysis of Behavioural Models using GraphWalker and UPPAAL

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210309

Termination date: 20210524

CF01 Termination of patent right due to non-payment of annual fee