基于模型测试01

一、概述

    MBT中文名称为基于模型的测试,基于模型的测试属于软件测试领域的一种测试方法。

二、背景

     软件测试是一款软件产品质量的最后一道防线,是产品线上前必不可少的、最重要的一环。每一款高质量的软件产品背后,都蕴含了大量的测试工作。而且测试工作很可能是软件开发过程中最昂贵、劳动最密集的工作。在设计测试用例的过程中,或多或少的存在着问题,使得软件测试结果不那么理想。下面引入新的测试方法,基本模型的测试,是自动化测试的一个分支,它将测试用例的设计依托于被测系统的模型,并基于该模型自动生成测试用例的技术。从质量保证的角度来看,我们可以制定测试的内容,但是无法保证测试会覆盖所有可能的组合,而MBT则允许软件开发和测试人员,只关注建立系统的正确性及模型的规范性,再通过专门的MBT工具根据不同的测试用例设计策略从系统模型生成可靠的测试用例。

    与传统测试相比,优点:

         (1)测试用例的维护更轻松:维护好模型,无需关注测试用例的细节

         (2)软件缺陷发现的更早:在构建被测系统模型的过程中,需要对被测系统有比较全面的理解,那么在早期建模过程中就可以发现被测系统中的一些问题,不需要等到执行大量用例时才发现;

         (3)测试自动化的水平更高:建模后,MBT可以自动生成测试用例,不需要人工编写测试文档;

         (4)测试覆盖率变得更高,使得彻底的测试(即:穷尽测试)成为可能:传统测试设计的过程中依赖人工,MBT生成测试路径时会避免人工设计测试用例时的思维局限性,生成更丰富的测试路径用例,但是是否需要执行“彻底”的测试由漏测对业务的影响决定。MBT只是从技术上提供了穷尽测试可能性。

         (5)基于模型间接维护测试用例的方式更高效:传统维护时需要依赖人工,需要耗费大量的人力和时间成本,重新测试设计。使用MBT只需要维护好测试模型即可,生成测试用例的工作可以由MBT工具自动完成;

     缺点,即未广泛推广的原因:

         (1)学习成本较高:要求开发人员、测试人员都精通建模,和工具的选型;

         (2)使用MBT的初期投资较大:已有的MBT工具不一定适合自己产品,定制的话需要考虑扩展性,和处理复杂逻辑,也就是要花费大量时间和精力;

         (3)用例爆炸


   总结下,测试方法多种多样,MBT和传统测试相比,各有优劣。如果一个应用的任何组件都可以通过模型来模拟、通过驱动程序来驱动,并可以通过测试结果来比较的话,那么这个应用是MBT的最佳候选者。

  2.1 通用流程



 2.2  Model design (模型设计)

 模型设计,目的是用来为构造测试用例而进行的被测系统描述



(1)模型关注点:



    (2) MBT模型分类:


2.3  Tests selection (测试需求选择)

             指导测试用例生成器( test generation)如何生成用例

2.4   Tests  paths generation(测试用例生成)

           按模型及测试需求选择来生成测试用例。GraphWalker就是完成这部分工作的一个开源的java工具。

2.5   Tests execution(执行测试)

           执行测试,并比较预期


2.6 FSM举例:海拍客mallpc 登录相关功能建模,如下


一个箭头,代表一次测试动作;

一个节点,代表一次测试验证;


2.7 常见工具:BPM-X、fMBT、GraphWalker

三 、GraphWalker简介

 

 GraphWalker就是一个基于测试模型的用例生成工具,主要支持于FSM, EFSM模型。它以有向图的形式读取模型,生成测试路径,适合于多状态以及基于事件驱动的状态转换的系统。


四、使用GraphWalker建模

有向图中,顶点(或节点)表示一些期望的状态,并且边(弧,箭头,过渡)表示为了实现期望的状态需要做的任何动作;


 4.1 建模工具:yEd

4.2 建模规则1

      4.3 建模规则2

    4.4 建模keywords

4.5 支持多模型:

     GraphWalker可以在一个会话中使用几个模型。这意味着在生成路径时,GraphWalker可以选择跳出一个模型到另一个模型。当将不同的功能分为多个模型时,这是非常方便的。

     

多模型offilne运行举例:

java -jar graphwalker-cli-4.0.0-SNAPSHOT.jar -d all offline -m Model_A.graphml random(edge_coverage(100)) -m Model_B.graphml random(edge_coverage(100)) -m Model_C.graphml random(edge_coverage(100)) -m Model_D.graphml random(edge_coverage(100)) –o

当路径生成到达模型A中的顶点v_B时,它必须考虑关键字SHARED:B ..这将告诉GraphWalker使用相同的名称搜索所有其他模型的同一个关键字:B.在我们的例子中,只有一个,它在模型B中。

现在GraphWalker决定是跳出模型A,进入模型B中的顶点v_B,还是留在模型A中。这个决定是基于随机的。

多模型特性:

五、路径生成器和结束条件


六、GraphWalker工作方式




以作为第三方库为例:使用GraphWalker第三方库实现模型自动化测试


七、GraphWalker命令行:此处省略


八、Restful或WebSocket服务的区别:此处省略


九、Web Socket API接口:此处省略


十、REST API接口:此处省略

十一、GraphWalker源码:

GraphWalker工具核心:graphwalker-core





参考资料:官网http://graphwalker.github.io/

备注:

FSM :有限状态机 Finite State Machine

EFSM:扩展有限状态机

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容