altwalker是一个开源的、基于模型的测试框架。

altwalker的Python项目详细描述


阿尔特沃克

altwalker是一个开源的、基于模型的测试框架,用于自动化测试执行。你 将测试设计为一个方向图,altwalker执行它们。它依赖于 Graphwalker通过测试图生成路径。

阅读https://altom.gitlab.io/altwalker/altwalker上的文档。

基于模型的测试

Model-Based Testing是一个测试 提供基于模型、模型生成测试用例的方法的技术 描述被测系统的行为(功能)。

模型的作用是描述被测系统。设计时的目标 模型是表示要测试的系统部分,通常 为系统的每个功能设计一个模型。

阿尔特沃克

Altwalker有以下组件:

  • model:用户以json或graphml文件的形式提供的有向图。 图由顶点列表和边列表组成。

  • generatorstop condition:用于指定如何生成 路径并决定路径何时完成。

  • 测试代码:将模型实现为代码。每个顶点和边 映射到测试代码中的方法。

  • planner:它使用model和一对generatorstop condition 提供通过模型的路径(一系列步骤)。

    目前,Altwalker提供两个计划者:

    • 在线计划者
    • 离线计划器
  • reporter:要报告测试结果,需要所有的报告器 每个事件(例如step_startstep_end,…)。

  • executor:对于计划中的每个步骤,都会查找并调用命名方法 从测试代码。除了step方法外,它还调用 夹具方法(如有)setUpModeltearDownModel…。

    目前Altwalker提供三个执行器:

    • python执行器
    • .net执行器

    还有一个http执行器,它允许您通过http连接自己的执行器。你可以阅读 有关How to: Write your own executor上的http执行器的详细信息 第页。

  • walker:测试运行程序。协调测试的执行,要求 对于下一步,使用Executor执行该步骤并报告进度 使用Reporter

有两种方法可以运行测试:

  • 联机模式(使用联机计划器):生成一个步骤,然后执行 步骤,直到路径完成。

  • 脱机模式(使用脱机计划器):从一系列步骤运行路径。 通常使用offline命令生成路径。

安装

先决条件:

安装Graphwalker:

  • MacOS/Linux:
$ wget https://github.com/GraphWalker/graphwalker-project/releases/download/LATEST-BUILDS/graphwalker-cli-4.0.0-SNAPSHOT.jar &&\
  mkdir -p ~/graphwalker &&\
  mv graphwalker-cli-4.0.0-SNAPSHOT.jar ~/graphwalker/ &&\echo -e '#!/bin/bash\njava -jar ~/graphwalker/graphwalker-cli-4.0.0-SNAPSHOT.jar "$@"' > ~/graphwalker/graphwalker-cli.sh &&\
  chmod +x ~/graphwalker/graphwalker-cli.sh &&\
  ln -s ~/graphwalker/graphwalker-cli.sh /usr/local/bin/gw
  • 窗口:
$ setx PATH "%PATH%;C:\graphwalker" & :: Adds graphwalker to current user PATH
  cd C:\
  mkdir graphwalker
  cd graphwalker
  powershell -Command "[Net.ServicePointManager]::SecurityProtocol = 'tls12'; Invoke-WebRequest -Uri 'https://github.com/GraphWalker/graphwalker-project/releases/download/LATEST-BUILDS/graphwalker-cli-4.0.0-SNAPSHOT.jar' -outfile 'graphwalker-cli-4.0.0-SNAPSHOT.jar'" & :: Downloads graphwalker using powershell command Invoke-Request
  @echo off
  @echo @echo off> gw.bat
  @echo java -jar C:\graphwalker\graphwalker-cli-4.0.0-SNAPSHOT.jar %*>> gw.bat
  @echo on

运行命令后,请运行:

$ gw --version

安装altwalker:

$ pip3 install altwalker
$ altwalker --version

有关更详细的教程,请阅读文档中的Installation部分。

快速启动

制作一个示例项目并运行测试。

$ altwalker init test-project -l python
$ cd test-project
$ altwalker online tests -m models/default.json "random(vertex_coverage(100))"
Running:
[2019-02-28 11:49:21.803956] ModelName.vertex_A Running
[2019-02-28 11:49:21.804709] ModelName.vertex_A Status: PASSED
[2019-02-28 11:49:21.821219] ModelName.edge_A Running
[2019-02-28 11:49:21.821443] ModelName.edge_A Status: PASSED
[2019-02-28 11:49:21.836176] ModelName.vertex_B Running
[2019-02-28 11:49:21.836449] ModelName.vertex_B Status: PASSED
Statistics:
{
    "edgeCoverage": 100,
    "edgesNotVisited": [],
    "failedFixtures": [],
    "failedStep": {},
    "steps": [
        {
            "id": "v0",
            "modelName": "ModelName",
            "name": "vertex_A"
        },
        {
            "id": "e0",
            "modelName": "ModelName",
            "name": "edge_A"
        },
        {
            "id": "v1",
            "modelName": "ModelName",
            "name": "vertex_B"
        }
    ],
    "totalCompletedNumberOfModels": 1,
    "totalFailedNumberOfModels": 0,
    "totalIncompleteNumberOfModels": 0,
    "totalNotExecutedNumberOfModels": 0,
    "totalNumberOfEdges": 1,
    "totalNumberOfModels": 1,
    "totalNumberOfUnvisitedEdges": 0,
    "totalNumberOfUnvisitedVertices": 0,
    "totalNumberOfVertices": 2,
    "totalNumberOfVisitedEdges": 1,
    "totalNumberOfVisitedVertices": 2,
    "vertexCoverage": 100,
    "verticesNotVisited": []
}
Status: True

设置开发环境

运行测试

安装python依赖项:

$ pip3 install -r requirements.txt && \
  pip3 install -r requirements-dev.txt

运行测试:

$ pytest tests -s -v

cli

安装python依赖项以从代码运行在本地设置altwalker cli之后:

$ pip3 install --editable .

然后从任何命令行都可以访问:

$ altwalker --help

文件

安装python依赖项以生成文档运行后:

$ cd docs && \
  make clean && \
  make html

要查看运行的文档:

$ open _build/html/index.html

进一步阅读/有用的链接

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过jamod读取控制器的输入状态?   java Back bean方法在使用两个h的单一表单时未调用:selectonemenus和command button   mockitojava中的单元测试Mock继承方法   java在不传递到构造函数的情况下,将一个类的实例使用到另一个类中的最佳方法是什么   java Spring MVC:如何通过API在Dozer的toplevel字段中允许空值?   java hibernate到MSSQL服务器的连接被拒绝:连接   java动态调用现有变量   在java中扩展多个类的泛型   java使用JNA Ptrace获取linux中外部进程的信息?   eclipse获取Java项目中所有构建错误的最快方法是什么?   java将动态数组拆分为多个数组   java安卓:将json保存到sqlite   java获取最近时间Android   java如何为多对多关联编写HQL查询?   java Docker compose for mysql和spring应用程序拒绝访问   java查找数组(如果它是另一个数组的子集)   java如何在另一个具有相同数据类型参数的泛型类(或接口)中使用泛型类(或接口),而无需强制转换   Apache POI java。lang.NoClassDefFoundError:org/apache/commons/compress/utils/InputStreamStatistics   java使用Jackson将JSON反序列化为异构元素列表   使用MapReduce实现java规范化