基于模型的自动化测试工具GraphWalker(三):应用案例

8.工具应用案例

8.1 案例概述

8.1.1 概要

GraphWalker是一个基于测试模型的用例生成工具。它主要应用于FSM, EFSM模型。可以用来它可以直接读取FSM, EFSM图形模型、json模型,生成测试用例。
本案例中使用graphwalker对一个仿天猫网站的J2EE项目进行建模与测试。

8.1.2 仿天猫网站

项目详情:要在网上找一个J2EE项目是很容易的,随便在百度或者git搜索,都是一大把。但是拿到这样的搜索来的J2EE项目,其中包含了上百个java文件,jsp文件,各种配置信息,如果没有好几个实践过的J2EE项目经验,会觉得无从看起,难以下手,最后影响学习的效果。为了使学习的曲线变得更平滑,逐渐建立学习的信心,该项目作者模仿天猫官网项目制作了由浅入深的学习教程。
项目前台演示: http://how2j.cn/tmall
项目后台演示: http://how2j.cn/tmall/admin
项目下载地址:http://how2j.cn/k/tmall-j2ee/tmall-j2ee-1065/1065.html
项目首页展示如下图:
在这里插入图片描述

8.1.3 主要工作

这个项目的作者所在的网站有详细的教程,从需求分析开始到最后的实现部分,一步一步非常详细,学习起来比较简单。
在这里插入图片描述
对于我们这个工具来说,其实真正的应用场景应该是从需求开始建模,然后对最后的代码进行测试,直接从代码建模感觉流程不太对,仅仅是对这个工具的使用而已。
但是,从需求开始自己写代码实现又不现实,因此,我主要是从这个网站的需求分析出发,然后在理解代码的基础上建立的测试模型。

8.2主要步骤

8.2.1 项目运行

看了演示地址之后,第一步总是要下载下来,把项目配置起来,自己也跑跑看看效果的。
为了顺利的演示,不仅需要项目代码,还需要数据库中的数据, 所以提供了导入数据的SQL文件。
而导入的数据量比较大,上万条数据,使用工具导入不仅慢,还有可能出错,所以专门准备了一个命令行的方式导入,以保证导入的顺利进行。
配置tomcat也是比较容易出错的环节,特意准备了一个完整的server.xml,直接复制粘贴,然后启动tomcat,就一定能够成功配置了。
如此这般,便可以顺利的自己也搭建一个模仿天猫的J2EE项目,在自己的机器上看到效果。

8.2.2 分析需求文档和项目代码

对于该项目的需求来说,主要是从以下三个方面进行分析:
1)展示页面
本需求主要是对前台的展示功能进行分析。主要包括:首页展示,产品页,分类页,搜索结果页,购物车查看页,结算页,确认支付页,支付成功页,我的订单页,确认收货页,评价页等等页面展示。
2)交互功能
本部分需求主要是对用户的操作进行反馈,根据用户的操作跳转到对应的页面或者填入相关信息。主要操作有:分类页排序,立即购买,加入购物车,调整订单项数量,删除订单项,生成订单,订单页的各种功能,确认付款,确认收货,提交评价信息,登录,注册,退出,搜索等功能。
3)后台管理
后台管理主要是对项目后台进行管理,主要包括分类管理,属性管理,产品管理,产品图片管理,产品属性设置,用户管理,订单管理等等,后台管理的需求并不是很具体,需要进一步细化,如用户管理中可以包括增加用户,修改用户,删除用户等操作,分别对应相应的交互功能和页面展示。
对于该项目的代码,主要结合需求分析进行理解,要明确其每一个功能是如何实现的,相应的操作具体对应到哪个页面的那些按钮,页面是如何展示的,页面的信息是如何填入,填入到页面的哪个位置等等,为下一步的建模打下坚实的基础。

8.2.3 项目建模

本项目功能主要分为前台功能和后台管理员功能,主要以项目前台功能为例进行建模分析。
先建立项目主页的模型,主页的主要功能主要是可以跳转到各个页面中,因此,主页模型里面的各个顶点都需要一个SHARED属性。
如图所示:
项目主页模型

然后建立登录注册界面的模型,如下图所示:
在这里插入图片描述

整个购物的流程如下图所示,用户首先浏览想要购买的商品,然后点击购买,也可以选择加入购物车,然后在付款界面进行支付,支付成功后可以继续购买或者返回主页面。

用户购物模型
购物车的功能模型相对比较简单,就只需要调整购物车中物品的数量以及删除车中的物品,并且点击购物车中的商品就会跳转到相应商品界面,最后需要有一个合并付款功能。如下图所示:
在这里插入图片描述

最后是我的订单功能,本功能和购物车功能相似,主要是提供订单修改和删除,以及确认收货等操作。如下图所示:

我的订单功能
整个项目的前端实现的主要功能基本建模完成,关于项目后端的建模方法和前端完全相同,在此不再赘述。

8.2.4 建模中遇到的问题

本项目的模型并不是一次全部完成,而是边建模边测试,对于模型建立过程中的各种问题,举例如下:
第一个例子是直接提示你字符串有语法错误,我检查了一下是因为把英文的冒号打成了中文,提示信息如下图:
在这里插入图片描述
第二个例子是在只运行登录模型时提示没有开始节点,要和主页面模型同时运行才能正常运行。提示错误信息如下:
在这里插入图片描述
但是有时候就会直接告诉你语法错误,具体哪里错了就不提示,这种就比较讨厌,就比如下面这个错误,就只是告诉你运行出错,但是从它最后终止的节点也能大概排查一下错误,我检查之后发现是因为有一个节点没有设置后继节点,出错信息如下:
在这里插入图片描述

8.2.5 对模型进行分析测试

对建立好的模型而言,最重要的是对这个模型实现的功能进行测试。首先只对抽象的模型进行测试。自己编写一些测试性质,举例如下:

1)点覆盖率和边覆盖率是否完全

代码如下:
java -jar graphwalker-cli-3.4.2.jar offline -m Index.graphml “random(edge_coverage(100))” -m Login.graphml “random(edge_coverage(100))” -m Shoppingcart.graphml “random(edge_ coverage(100))” -m Shopping.graphml “random(edge_coverage(100))” -m MyOrder.graphml “random(edge_coverage(100))”
运行结果如下图所示:

模型能正常终止而不提示出错信息,说明覆盖率达到了要求,否则会一直运行。

2)未登录不能进行订单支付

把登录状态设为BLOCKED,然后把终止条件设定为:PaymentSuccessPage,测试模型能否生成一条不通过登录节点即可进入支付成功状态的路径。代码如下:

java -jar graphwalker-cli-3.4.2.jar offline -m Index.graphml "random(edge_coverage(100))"  -m Login.graphml "random(edge_coverage(100))" -m Shoppingcart.graphml "random(edge_coverag e(100))" -m Shopping.graphml “a_star(reached_vertex(v_PaymentSuccessPage))” -m MyOrder.graphml "random(edge_coverage(100))"

运行结果如下:
在这里插入图片描述
运行出错,说明并不能找到这样一条路径。

8.2.6 实现测试用例

使用自动化测试工具Selenium与浏览器进行交互式测试。使用maven管理工具,项目框架如下:
在这里插入图片描述
首先,在pom.xml文件中建立项目的相关依赖以及说明文档等信息。然后把建立的所有模型拷贝到src/main/java/org/myorg/testautomation目录中,切换命令行到目录Myproject下,执行如下命令:

mvn graphwalker:generate-sources

项目会在target/classes/org/myorg/testautomation目录中生成所有顶点和边所有接口,如下图所示:
在这里插入图片描述
编写测试代码实现这些接口,然后运行测试即可与浏览器进行交互式测试。
最后对测试结果进行分析就能发现需求文档中的功能是否实现,以及运行过程中是否会有bug出现。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值