altwalker是一个开源的、基于模型的测试框架。
altwalker的Python项目详细描述
阿尔特沃克
altwalker是一个开源的、基于模型的测试框架,用于自动化测试执行。你 将测试设计为一个方向图,altwalker执行它们。它依赖于 Graphwalker通过测试图生成路径。
阅读https://altom.gitlab.io/altwalker/altwalker上的文档。
基于模型的测试
Model-Based Testing是一个测试 提供基于模型、模型生成测试用例的方法的技术 描述被测系统的行为(功能)。
模型的作用是描述被测系统。设计时的目标 模型是表示要测试的系统部分,通常 为系统的每个功能设计一个模型。
阿尔特沃克
Altwalker有以下组件:
model:用户以json或graphml文件的形式提供的有向图。 图由顶点列表和边列表组成。
generator和stop condition:用于指定如何生成 路径并决定路径何时完成。
测试代码:将模型实现为代码。每个顶点和边 映射到测试代码中的方法。
planner:它使用model和一对generator和stop condition 提供通过模型的路径(一系列步骤)。
目前,Altwalker提供两个计划者:
- 在线计划者
- 离线计划器
reporter:要报告测试结果,需要所有的报告器 每个事件(例如
step_start
,step_end
,…)。executor:对于计划中的每个步骤,都会查找并调用命名方法 从测试代码。除了step方法外,它还调用 夹具方法(如有)
setUpModel
,tearDownModel
…。目前Altwalker提供三个执行器:
- python执行器
- .net执行器
还有一个http执行器,它允许您通过http连接自己的执行器。你可以阅读 有关How to: Write your own executor上的http执行器的详细信息 第页。
walker:测试运行程序。协调测试的执行,要求 对于下一步,使用
Executor
执行该步骤并报告进度 使用Reporter
。
有两种方法可以运行测试:
联机模式(使用联机计划器):生成一个步骤,然后执行 步骤,直到路径完成。
脱机模式(使用脱机计划器):从一系列步骤运行路径。 通常使用
offline
命令生成路径。
安装
先决条件:
- Python3(带pip3)
- Java 8
- GraphWalker CLI
安装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
进一步阅读/有用的链接: