首页 > 其他分享 >软件测试/人工智能|使用 GraphWalker 实现自动化测试用例生成

软件测试/人工智能|使用 GraphWalker 实现自动化测试用例生成

时间:2023-11-28 17:34:47浏览次数:42  
标签:遍历 GraphWalker 模型 测试用例 测试 顶点 软件测试

导言

在软件开发中,测试是确保代码质量和稳定性的关键步骤之一。而自动生成测试用例可以大大提高测试效率和覆盖率。GraphWalker 是一个基于模型的测试工具,能够帮助开发者通过定义和遍历图模型来自动生成高质量的测试用例。

GraphWalker 简介

GraphWalker 是一个开源的测试工具,它使用有向图来表示系统的状态和行为,然后根据这个图模型自动生成测试用例。它支持多种编程语言和测试框架,可以轻松集成到现有的测试流程中。常见的模型有以下几种:

  • 前置后置条件模型: Pre and post condition models
  • 基于转换的模型: Transition based models (FSM, EFSM)
  • 随机模型:Stochastic models
  • 数据流模型: Data-flowmodels

如下,我们展示一个FSM或者EFSM模型的,它由多个节点以及箭头组成。

一个箭头,代表了一次测试动作;一个节点,代表一次测试验证。

GraphWalker 的优势

  • 模型驱动测试: 基于图模型进行测试路径遍历,能够覆盖系统不同的状态和行为。
  • 自动生成测试用例: 根据定义的图模型,自动生成测试用例,节省时间和精力。
  • 提高测试覆盖率: 能够有效地覆盖多个测试路径,发现潜在的问题和错误。

GraphWalker重要概念

下面我们来介绍一下关于GraphWalker的几个重要的概念:

  1. 顶点:如上图所示,所有的顶点比如Start,V_ClientNotRuning.一个顶点称为节点,通常表示为一个框表示我们想要检查的预期状态。在任何实现代码/测试中,可以通过断言或者数据校验改结果。常见有以下几种顶点:
  • Start顶点:start顶点不是必需的。如果使用,则必须有1个(且只有1个)顶点名称为:start.从start顶点出发只能有1个边。start顶点不会包括在任何生成的测试路径中,它只表示一个开始位。
  • BLOCKED顶点: 包含此关键字的顶点或边将在生成路径时排除。如果它是一个边,它将简单地从图中删除。如果它是一个顶点,顶点将被删除与其内外边缘。
  • SHARED顶点: 意味着GraphWalker可以跳出当前模型,到任何其他模型到具有相同SHARED名称的顶点。 语法是: SHARED:SOME_NAME
  • INIT顶点: 只有一个顶点可以有这个关键字。在模型中使用数据时,需要初始化数据。这就是这个关键字。允许在更多的顶点中使用INIT而不只是一个。 语法是:INIT:loggedIn = false; rememberMe = true;
  1. 边:如上图的e_Init。表示从一个顶点到另一个顶点的方法。这是为了达到下一个状态需要做的任何动作。它可以选择一些菜单选项,单击按钮等测试动作。GraphWalker只接受单向有向边(箭头)。边的函数下有时候会有不同的字符串,比如[rememberMe&vaildLogin]/rememberMe=falsevaildLogin=true; 表示不同的规则,基于表有如下规则:
  • 守卫(Guards):他们的角色与if语句相同,并且使边有资格或者没有资格被访问
    守卫guard是一个用方括号括起来的JavaScript条件表达式只有一个。[rememberMe&vaildLogin]

  • 操作(Action):它放在正斜杠之后。Action可以有多个,每个语句必须以分号结尾。
    /rememberMe=false; vaildLogin=true;action是动作代码,它的执行结果将作为数据传递给守卫。

  1. 路径生成器:生成器是决定如何遍历模型的算法。不同的生成器将生成不同的测试序列,并且它们将以不同的方式遍历模型。多个发生器可以串联。常见有以下几种:
  • random( some stop condition(s) ):以完全随机的方式浏览模型,该算法通过随机从顶点选择出边,并且在下一个顶点时重复此过程。
  • quick_random( some stop condition(s) ):尝试运行通过模型的最短路径,但以快速的方式。
  • a_star( a stop condition that names a vertex or an edge ):将生成到特定顶点或边的最短路径。
  1. 结束条件,主要有以下几种:
  • edge_coverage( an integer representing percentage of desired edge coverage ):边覆盖率达到某个值时,模型遍历结束。停止标准是一个百分比数字。当在执行期间达到所穿过的边的百分比时,停止测试。如果一个边被遍历超过一次,当计算百分比覆盖率时,它仍然计为1。
  • vertex_coverage( an integer representing percentage of desired vertex coverage ):顶点覆盖率达到某个值时,模型遍历结束。停止标准是一个百分比数字。当在执行期间达到所遍历的顶点的百分比时,停止测试。如果顶点遍历超过一次,当计算百分比覆盖率时,它仍然计为1。
  • requirement_coverage( an integer representing percentage of desired requirement coverage ):需求覆盖率达到某个值时,模型遍历结束。停止标准是一个百分比数字。当在执行期间达到所需求的百分比时,测试停止。如果需求遍历超过一次,在计算百分比覆盖率时仍会计为1。
  • dependency_edge_coverage( an integer representing dependency treshold ):高于依赖阈值的边都被覆盖时,模型遍历结束。每个边可以设置一个依赖值dependency(0-100之间的百分比数字)。停止标准是一个百分比数字。当在执行期间,所有高于或等于依赖值边被遍历完全时,停止测试。如果一个边被遍历超过一次,当计算百分比覆盖率时,它仍然计为1。
  • reached_vertex( the name of the vertex to reach ):停止标准是指定的顶点。当在执行期间到达顶点时,测试停止。
  • reached_edge( the name of the edge to reach ):停止标准是指定的边。当在执行期间到达这条边时,测试停止。

GraphWalker环境配置

我们在使用GraphWalker之前,需要先配置好环境,首先我们要下载画图工具,然后我们还要下载GraphWalker的jar包

  1. 画图工具YED

工具下载官网地址:https://www.yworks.com/products/yed

  1. GraphWalker的jar包:

jar包下载地址:https://graphwalker.github.io/

示例:使用 GraphWalker 实现自动化测试用例生成

我们在安装完画图工具以及下载好jar包之后,就可以开始使用GraphWalker来生成测试用例了,步骤如下:

  1. 创建图模型,使用 GraphWalker 创建系统的图模型。图模型是描述系统状态和行为的有向图,包括节点(表示状态)和边(表示状态之间的转换)。
  2. 定义测试目标,在图模型中定义测试目标,指定测试路径和期望的行为。这可以通过添加标签或定义边的属性来完成。
  3. 运行 GraphWalker,使用 GraphWalker 运行图模型,让其根据图模型自动生成测试用例:
graphwalker java -m your_model.graphml

GraphWalker 将会根据模型自动生成测试用例,并输出测试路径。

  1. 验证和评估生成的测试用例

运行生成的测试用例,并验证其覆盖了所需的代码路径和行为。评估测试覆盖率和有效性,确保测试用例质量。

总结

GraphWalker 是一个功能强大的自动化测试工具,通过图模型自动生成高质量的测试用例,提高代码质量和稳定性。它可以帮助开发者更有效地测试软件,发现潜在的问题并提高代码覆盖率。在快速迭代和交付的开发环境中,自动生成测试用例是一个强大的工具。GraphWalker 的模型驱动方法可以帮助团队更快速、更全面地进行测试。希望本文能够帮助大家在学习使用这款工具时提供一些帮助。

获取更多技术资料,请点击!

标签:遍历,GraphWalker,模型,测试用例,测试,顶点,软件测试
From: https://www.cnblogs.com/hogwarts/p/17862512.html

相关文章

  • 接口自动化测试用例的设计
     做接口自动化的前提,需设计接口自动化测试用例--设计接口自动化测试用例的前提:如下一、搞清接口测试的目的: 二、搞清接口测试的优先级:三、搞清接口测试的业务逻辑和应用场景1、单接口场景的测试---如:登录2、依赖接口场景的测试---如:需先登录获取token,方能进行后续接口的......
  • 软件测试/人工智能|探究 LangChain 核心模块:PromptsModelsParsers
    简介LangChain是一种新兴的语言处理平台,其核心模块之一即PromptsModelsParsers。这一模块扮演着关键的角色,为LangChain的功能和性能提供了坚实的基础。在这篇文章中,我们将深入探讨PromptsModelsParsers模块的工作原理、功能和其对语言处理的重要性。什么是PromptsModels......
  • 软件测试/人工智能|什么是LangChain,这篇文章告诉你
    简介随着人工智能和自然语言处理技术的飞速发展,我们越来越依赖机器来理解、生成和处理语言。在这样的背景下,LangChain应运而生,它旨在构建一个高效、强大的语言处理生态系统,将人类语言与智能技术紧密相连。LangChain的核心概念LangChain是一个基于区块链技术的语言处理平台,它利用去......
  • 软件测试/人工智能|LangChain Memory模块:开启语言数据的存储与回忆之旅
    简介大多数大模型应用中都包含对话功能,而对话功能的基础就是参与者能够基于已经发生的对话和获取到的知识产生新的对话内容。更复杂一点的场景中对话者甚至需要具有一个完整的对世界的认知,再根据对话中的信息对认知不断的进行迭代更新。随着人工智能和自然语言处理技术的飞速发展,语......
  • 建议学习软件测试吗?不建议!
    相比较大多数行业,IT行业薪资比较高。如果你问我,是否建议学习软件测试。我的回答是,不建议!学历太高不建议学习,你可以挑战天花板更高的软件开发行业;学历太低不建议学习,没有全日制专科以上学历基本找不到工作;年龄太大不建议学习,软件测试可能同样存在年龄歧视;不想编程不建议学习,......
  • 软件测试面试怎样介绍自己的测试项目?会问到什么程度?
    想知道面试时该怎样介绍测试项目?会问到什么程度?那就需要换位思考,思考HR在这个环节想知道什么。HR在该环节普遍想获得的情报主要是下面这2个方面:1)应聘者的具体经验和技术能力,2)应聘者的团队的沟通能力、合作能力和问题解决能力。了解到HR目的后,我们就能预判出项目面试题的广度......
  • 软件测试/人工智能|AutoGPT原理与架构介绍
    简介我们生活中已经有越来越多的人工智能融入了,手机汽车等等接入了越来越多的人工智能,人工智能就像是我们的一个助手一样。不仅能够理解我们的需求,而且还能够与我们一起学习与成长。人工智能已无缝融入我们工作、生活,并帮助我们有效完成各种目标。大模型技术的发展与应用,使以上想法......
  • 软件测试/人工智能|教你如何使用ChatGPT的API
    简介自从有了ChatGPT之后,我每天都想去调戏它一番,自从开放了ChatGPT的API,我就想着通过API来使用ChatGPT,这样的话,速度上的体验应该会更好,本文就来介绍一下如何使用ChatGPT的API。环境准备在调用API之前,我们首先需要准备好我们的环境,一是我们需要安装openAI第三方库,OpenAI提供了一个......
  • 软件测试/人工智能|一文教你如何配置自己的AutoGPT
    简介AutoGPT是Github上的一个免费开源项目,结合了GPT-4和GPT-3.5技术,通过API创建完整的项目。与ChatGPT不同的是,用户不需要不断对AI提问以获得对应回答,在AutoGPT中只需为其提供一个AI名称、描述和五个目标,然后AutoGPT就可以自己完成项目。它可以读写文件、浏览网页、审查自己提示的......
  • 软件测试/人工智能|AutoGPT原理与架构介绍
    简介我们生活中已经有越来越多的人工智能融入了,手机汽车等等接入了越来越多的人工智能,人工智能就像是我们的一个助手一样。不仅能够理解我们的需求,而且还能够与我们一起学习与成长。人工智能已无缝融入我们工作、生活,并帮助我们有效完成各种目标。大模型技术的发展与应用,使以上......