graphWalker使用

GraphWalker是一款基于模型的测试工具,利用有向图来表示测试期望状态。节点代表期望状态,顶点用于断言或预期检查,边表示状态转移。关键词包括start、BLOCKED、SHARED、INIT、REQTAG和weight。GraphWalker支持多种测试用例生成,如冒烟测试、功能测试等,可以结合Selenium等进行自动化测试。测试执行过程中,路径生成在运行时完成,提供注解@GraphWalker支持。文章还介绍了模型设计、测试选择、路径生成准则以及如何使用Maven生成测试代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

graphWalker使用

官网:http://graphwalker.github.io/yed_model_syntax/

是基于模型测试的工具,以有向图形式表示

节点:代表我们想要执行的期望状态。

顶点表示我们要检查的预期状态。 在任何实现代码/测试中,您都可以在其中找到断言或者oracles。

边:表示从一个顶点到另一个顶点的过渡。无论为了达到下一个状态,都需要采取任何状态。它可以选择一些菜单选项,单击按钮或进行REST API调用。

关键词:

start-这在顶点中用于表示“开始”顶点。 每个模型只有一个Start顶点。

BLOCKED-生成路径时,将排除包含此关键字的顶点或边。 如果它是边缘,它将简单地从图形中删除。 如果它是一个顶点,顶点将会删除其内边和外边。

SHARED-此关键字仅适用于顶点。 这意味着GraphWalker可以跳出当前模型,跳转到具有相同SHARED名称的顶点的任何其他模型。

语法是SHARED:SOME_NAME

INIT-只有一个顶点可以有这个关键字。 在模型中使用数据时,需要初始化数据。 这就是这个关键字的作用。 允许INIT的顶点多于一个顶点。

语法是:INIT:loggedIn=false; rememberMe=true;

REQTAG-只有一个顶点可以有这个关键字。 以逗号分隔的要求列表。 用于创建具有外部需求和模型的可跟踪性。

语法是:REQTAG:String1, String2

weight-只有边可以拥有此关键字。 仅在使用随机生成器时使用。 它保持0到1之间的实数值,并表示应选择边缘的概率。 例如,值0.05表示选择该边缘的概率为5%。 下图中有两个来自顶点v_LoginPrompted的外边缘,它使用关键字权重。

语法是:weight=float value between 0.0 and 1.0

GraphWalker可以在一次会话中运行多个模型

MBT执行:

可以自动化生成测试用例,并且可以产生不同类型的测试用例

-冒烟测试

-功能测试

-非功能测试,exhaustive tests

可以通过从终端运行命令来生成路径。 下面是使用具有边缘覆盖停止条件的随机路径生成器从该图生成的路径的示例。

离线

java -jar graphwalker-cli-3.4.2.jar offline --start-element app_closed --model example_1.graphml "random(edge_coverage(100))"
#只打印当前元素的名字currentElementName
java -jar graphwalker-cli-3.4.2.jar offline --start-element app_closed --model example_1.graphml "random(edge_coverage(100))" | jq -r '.currentElementName

在线

路径生成在测试执行期间完成,即运行时。 这意味着GraphWalker需要嵌入您的测试自动化代码中。 这增加了一些复杂性,但优点是

无需处理文件中的中间路径序列。

java:直接在类前加入注解@GraphWalker

mvn graphwalker:test

您的测试自动化代码可以直接访问图执行上下文。

测试执行选择Selenium

构建方式:

git clone https://github.com/GraphWalker/graphwalker-project.git
cd graphwalker-project
mvn package -pl graphwalker-cli -am

jar包所在位置

graphwalker-cli/target/graphwalker-cli-3.4.2.jar

标准的GraphWalker工作流

Model design

保存成文件 Login.graphml.

Tests selection step

GraphWalker支持特殊规则,可帮助您选择一系列操作和状态,您希望通过模型中的测试覆盖这些操作和状态。

eg.random(edge_coverage(100)):随机浏览模型,直到达到所有(100%)边缘

a_star(reached_vertex(v_Browse)):生成通过模型到顶点“v_Browse”的最短路径

路径产生准则详见http://graphwalker.github.io/generators_and_stop_conditions

Tests execution

创建测试代码

第一种方式使用Maven和模型设计步骤中的完整模型创建所需的所有桩代码。

1.创建文件结构如下

%> mkdir -p login/src/main/java/org/myorg/testautomation
%> mkdir -p login/src/main/resources/org/myorg/testautomation
%> mkdir -p login/src/test/java/org/myorg/testautomation

2.移动保存的模型

%> mv Login.graphml login/src/main/resources/org/myorg/testautomation

3.保存pom.xml到login文件夹下

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>org.myorg</groupId>
    <version>3.2.1</version>
    <artifactId>example</artifactId>
    <name>GraphWalker Test</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- Set graphwalker.version below to the version you wish to use. We recommend the latest stable version -->
        <graphwalker.version>3.4.2</graphwalker.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.graphwalker</groupId>
                <artifactId>graphwalker-maven-plugin</artifactId>
                <version>${graphwalker.version}</version>
                <!-- Bind goals to the default lifecycle -->
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate-sources</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.graphwalker</groupId>
            <artifactId>graphwalker-core</artifactId>
            <version>${graphwalker.version}</version>
        </dependency>
        <dependency>
            <groupId>org.graphwalker</groupId>
            <artifactId>graphwalker-java</artifactId>
            <version>${graphwalker.version}</version>
        </dependency>
        <dependency>
            <groupId>org.graphwalker</groupId>
            <artifactId>graphwalker-maven-plugin</artifactId>
            <version>${graphwalker.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
             <version>1.7.7</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
    </dependencies>

</project>

4.切入登录文件夹,然后运行

%> cd login
%> mvn graphwalker:generate-sources

交互文件可以在文件夹target/generated-sources/graphwalker/.下找到

正在研究用py做。。。。。有这方面研究的欢迎一起交流。
图是用yEd画的

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值