{ "info": { "author": "Altom Consulting", "author_email": "altwalker@altom.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: C#", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Testing" ], "description": "# AltWalker\n\nAltWalker is an open source, Model-Based Testing framework.\n\n## Table of Contents\n\n* [Overview](#overview)\n* [Installation](#installation)\n* [Quickstart](#quickstart)\n* [Setting Up a Development Environment](#setting-up-a-development-environment)\n* [Support](#support)\n* [License](#license)\n\n## Overview\n\nAltWalker is an open source, Model-Based testing framework for automating your test execution. You\ndesign your tests as a directed graph and AltWalker executes them. It relies on\n[GraphWalker](http://graphwalker.github.io/) to generate paths through your graph.\n\nRead the documentation on https://altom.gitlab.io/altwalker/altwalker.\n\n### Model-Based Testing\n\n[Model-Based Testing](https://en.wikipedia.org/wiki/Model-based_testing) is a testing\ntechnique which offers a way of generating test cases based on models that describe the behaviour\n(functionality) of the system under test.\n\nThe goal when designing models is to represent the part of the system under test, usually\nby one model for each functionality of your system.\n\nWith the help of graph theory we can dynamically generate multiple test scripts. A test script is a path passing through the model from a starting point till\na condition is met.\n\nWhy use Model-Based Testing:\n\n* the abstraction layer added by the model gives your tests a better structure\n* the model can be updated to reflect the requirements changes making the tests easy to maintain\n* dynamically generates multiple test scripts based on different conditions (like coverage or length)\n* allows for a large number of tests to be created which results in a larger part of the system under test to be covered.\n\n### AltWalker\n\nAltWalker is a test execution tool, which aims to make it easy to write and run your model-based tests. AltWalker uses GraphWalker to generate a path through the models.\n\nFor the test structure it uses an Object-Oriented approach inspired by python's `unittest` module. Every model is mapped to a class with the same name and each vertex and edge from the model is mapped to a method inside the class.\n\nAltWalker also borrows the concept of test fixture from unit tests, and implements the following fixtures:\n`setUpRun`, `tearDownRun`, `setUpModel` and `tearDownModel`.\n\nNow it supports running tests written in .NET/C# and Python3.\n\n### AltWalker Components\n\nAltWalker has the following components:\n\n* __Model__: a directed graph, supplied by the user as a json or graphml file.\n A graph is composed from a list of vertices and a list of edges.\n\n* __Generator__ and __Stop Condition__: used to specify how to generate a\n path and to decide when a path is complete.\n\n* __Test Code__: the implementation of the model(s) as code. Each model is mapped to a\n class and each vertex and edge is mapped to a method.\n\n* __Planner__: uses the _model(s)_ and a pair of _generator_ and _stop condition_\n to provide a path (a sequence of steps) through the model(s).\n\n Currently AltWalker provides two planners:\n\n * Online Planner\n * Offline Planner\n\n* __Reporter__: reports the output of the tests, the reporter is called on\n each event (e.g. `step_start`, `step_end`, ...).\n\n* __Executor__: for each step in the plan it looks up and calls the named method\n from the _test code_. In addition to the step methods, it also calls\n fixture methods if present (e.g. `setUpModel`, `tearDownModel` ...).\n\n Currently AltWalker provides three executors:\n\n * Python Executor\n * .NET Executor\n\n And an __Http Executor__ that allows you to hook up your own executor via HTTP. You can read\n more about the Http Executor on the [How to: Write your own executor](https://altom.gitlab.io/altwalker/altwalker/how-tos/custom-executor.html)\n page.\n\n* __Walker__: the test runner. Coordinates the execution of a test asking the `Planner`\n for the next step, executing the step using the `Executor` and reporting the progress\n using the `Reporter`.\n\n\nThere are two way to run your tests:\n\n* __Online Mode__ (using the Online Planner): Generate one step and then execute\n the step, until the path is complete.\n\n* __Offline Mode__ (using the Offline Planner): Run a path from a sequence of steps.\n Usually the path is generated using the `offline` command.\n\n## Installation\n\nPrerequisites:\n\n* [Python3](https://www.python.org/) (with pip3)\n* [Java 8](https://openjdk.java.net/)\n* [GraphWalker CLI](http://graphwalker.github.io/)\n* [.NET Core](Optional) (Optional)\n* [git](https://git-scm.com/) (Optional)\n\n### Install GraphWalker\n\n* MacOS/Linux:\n\n```bash\n$ wget https://github.com/GraphWalker/graphwalker-project/releases/download/LATEST-BUILDS/graphwalker-cli-4.0.0-SNAPSHOT.jar && \\\n mkdir -p ~/graphwalker && \\\n mv graphwalker-cli-4.0.0-SNAPSHOT.jar ~/graphwalker/ && \\\n echo -e '#!/bin/bash\\njava -jar ~/graphwalker/graphwalker-cli-4.0.0-SNAPSHOT.jar \"$@\"' > ~/graphwalker/graphwalker-cli.sh && \\\n chmod +x ~/graphwalker/graphwalker-cli.sh && \\\n ln -s ~/graphwalker/graphwalker-cli.sh /usr/local/bin/gw\n```\n\n* Windows:\n\n```\n$ setx PATH \"%PATH%;C:\\graphwalker\" & :: Adds graphwalker to current user PATH\n cd C:\\\n mkdir graphwalker\n cd graphwalker\n 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\n @echo off\n @echo @echo off> gw.bat\n @echo java -jar C:\\graphwalker\\graphwalker-cli-4.0.0-SNAPSHOT.jar %*>> gw.bat\n @echo on\n```\n\nAfter running the command check that you correctly installed GraphWalker by running:\n\n```\n$ gw --version\n```\n\n### Install AltWalker\n\nUse the following command to install AltWalker:\n\n```\n$ pip3 install altwalker\n```\n\nAltWalker is now installed. Check that you correctly installed AltWalker by running:\n\n```\n$ altwalker --version\n```\n\n#### Living on the edge\n\nIf you want to work with the latest code before it\u2019s released, install or update the code from the `develop` branch:\n\n```\n$ pip3 install -U git+https://gitlab.com/altom/altwalker/altwalker\n```\n\nFor a more detailed tutorial read the [Installation](https://altom.gitlab.io/altwalker/altwalker/installation.html) section from the documentation.\n\n## Quickstart\n\nMake a sample project and run the tests.\n\n```\n$ altwalker init test-project -l python\n$ cd test-project\n$ altwalker online tests -m models/default.json \"random(vertex_coverage(100))\"\nRunning:\n[2019-08-06 16:28:44.030077] ModelName.vertex_A Running\n[2019-08-06 16:28:44.030940] ModelName.vertex_A Status: PASSED\n\n[2019-08-06 16:28:44.048492] ModelName.edge_A Running\n[2019-08-06 16:28:44.048729] ModelName.edge_A Status: PASSED\n\n[2019-08-06 16:28:44.064495] ModelName.vertex_B Running\n[2019-08-06 16:28:44.064746] ModelName.vertex_B Status: PASSED\n\nStatistics:\n{\n \"edgeCoverage\": 100,\n \"edgesNotVisited\": [],\n \"totalCompletedNumberOfModels\": 1,\n \"totalFailedNumberOfModels\": 0,\n \"totalIncompleteNumberOfModels\": 0,\n \"totalNotExecutedNumberOfModels\": 0,\n \"totalNumberOfEdges\": 1,\n \"totalNumberOfModels\": 1,\n \"totalNumberOfUnvisitedEdges\": 0,\n \"totalNumberOfUnvisitedVertices\": 0,\n \"totalNumberOfVertices\": 2,\n \"totalNumberOfVisitedEdges\": 1,\n \"totalNumberOfVisitedVertices\": 2,\n \"vertexCoverage\": 100,\n \"verticesNotVisited\": []\n}\n\nStatus: True\n```\n\n## Setting Up a Development Environment\n\nClone the repository:\n\n```\n$ git clone https://gitlab.com/altom/altwalker/altwalker/\n$ cd altwalker\n```\n\nInstall python dependencies:\n\n```\n$ pip3 install -r requirements.txt && \\\n pip3 install -r requirements-dev.txt\n```\n\n### Running Tests\n\n```\n$ pytest tests -s -v\n```\n\n### CLI\n\nAfter you install the python dependencies to setup AltWalker CLI locally from code run:\n\n```\n$ pip3 install --editable .\n```\n\nThen from any command line you can access:\n\n```\n$ altwalker --help\n```\n\n### Documentation\n\nAfter you install the python dependencies to generate the documentation run:\n\n```\n$ cd docs && \\\n make clean && \\\n make html\n```\n\nTo see the documentation run:\n\n```\n$ open _build/html/index.html\n```\n\n__Further Reading/Useful Links__:\n\n* [Google Style Docstring Example](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html#example-google)\n* [Google Style Guide](https://google.github.io/styleguide/pyguide.html)\n\n## Support\n\nJoin our Gitter chat room [here](https://gitter.im/altwalker/community) to chat with us or with other members of the community.\n\n## License\n\nAltWalker is licensed under the GNU General Public License v3.0.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/altom/altwalker/altwalker/", "keywords": "model-based-testing testing tests", "license": "GNU GPLv3", "maintainer": "", "maintainer_email": "", "name": "altwalker", "package_url": "https://pypi.org/project/altwalker/", "platform": "", "project_url": "https://pypi.org/project/altwalker/", "project_urls": { "Bug Tracker": "https://gitlab.com/altom/altwalker/altwalker/issues?label_name=Bug", "Documentation": "https://altom.gitlab.io/altwalker/altwalker/", "Homepage": "https://gitlab.com/altom/altwalker/altwalker/", "Source": "https://gitlab.com/altom/altwalker/altwalker/" }, "release_url": "https://pypi.org/project/altwalker/0.2.4/", "requires_dist": null, "requires_python": ">=3.4.0", "summary": "Altwalker is an open source, Model-Based Testing framework.", "version": "0.2.4" }, "last_serial": 5769821, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "c33f726c9960a39fd77b7e38e449f8c0", "sha256": "75045849146a039487ea2d71aa023e98ba11b639b660ef2e8a9b5f5287cd282f" }, "downloads": -1, "filename": "altwalker-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c33f726c9960a39fd77b7e38e449f8c0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 38541, "upload_time": "2019-02-28T13:29:58", "url": "https://files.pythonhosted.org/packages/30/63/8bda882c9ae600caa112e26666d9d41901551e08bea45aecc54c5bbea843/altwalker-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "db48113f3babed6a52acdccb542e8cf3", "sha256": "c0e5a711105d60ba4bdec9e13793cc201cb7e07ea02aa7902a0512e21760d5c6" }, "downloads": -1, "filename": "altwalker-0.1.1.tar.gz", "has_sig": false, "md5_digest": "db48113f3babed6a52acdccb542e8cf3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 38764, "upload_time": "2019-03-13T13:45:10", "url": "https://files.pythonhosted.org/packages/2b/5f/46818f9fae2c39c90a566bcf96b2667e2e2d3cf2d07ed8136f78bdcf38ba/altwalker-0.1.1.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f71d22385e7257af104102a937d07cce", "sha256": "9bc338c4ae4025df2fe04f0380be43091792713d794705d9672059f11771025d" }, "downloads": -1, "filename": "altwalker-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f71d22385e7257af104102a937d07cce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.0", "size": 53994, "upload_time": "2019-05-08T14:27:36", "url": "https://files.pythonhosted.org/packages/c2/69/49816b6e3486f15b4771169f286072b141f07cd1fdefb73b8a84f18f65bf/altwalker-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "985c47f322414b1c3b70cdbda98d9e1c", "sha256": "a728edcc19d2be50c16a43df5f291b87c11cd5f1909e68dbfa3d2457fbf8827b" }, "downloads": -1, "filename": "altwalker-0.2.1.tar.gz", "has_sig": false, "md5_digest": "985c47f322414b1c3b70cdbda98d9e1c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 46687, "upload_time": "2019-05-08T14:27:37", "url": "https://files.pythonhosted.org/packages/86/b9/1b1183ceca44a34be2a546a168327b9d9d198313a4c1a1f926f7f00028de/altwalker-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "82b96be7b1f7b1f28f04abd4c3c6bdba", "sha256": "a28efc696da3394372061e3bad73435bb80050ae975189752c8e75ef11196ed1" }, "downloads": -1, "filename": "altwalker-0.2.2.tar.gz", "has_sig": false, "md5_digest": "82b96be7b1f7b1f28f04abd4c3c6bdba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 50018, "upload_time": "2019-06-21T07:37:58", "url": "https://files.pythonhosted.org/packages/ec/56/fb4b6348dd90ff33e5a221e11a471315d32783caeec65a1448ab076ee298/altwalker-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "dfcbd3fafd6a0250d1ce5c776137ee69", "sha256": "72d6c362a6afcf921bb222c3ce1c2f7d673543a9549ca0149c1d1b36aa1a6a07" }, "downloads": -1, "filename": "altwalker-0.2.3.tar.gz", "has_sig": false, "md5_digest": "dfcbd3fafd6a0250d1ce5c776137ee69", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 52685, "upload_time": "2019-07-30T10:47:02", "url": "https://files.pythonhosted.org/packages/67/09/a483672a7d75a3b833073ea0966d8016fb21b0c477ceb7c16663d79e2e4a/altwalker-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "32cf548dc09b76563ef7105a77485441", "sha256": "6cbd9c7393509e808dcb222ed05a08ec4a14323115729d4e329f65965a3a683e" }, "downloads": -1, "filename": "altwalker-0.2.4.tar.gz", "has_sig": false, "md5_digest": "32cf548dc09b76563ef7105a77485441", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 54498, "upload_time": "2019-09-02T09:10:24", "url": "https://files.pythonhosted.org/packages/08/d7/c4ff090580552cc9bd919365febd8abaf3f5059b530fc237e604a3ae691a/altwalker-0.2.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "32cf548dc09b76563ef7105a77485441", "sha256": "6cbd9c7393509e808dcb222ed05a08ec4a14323115729d4e329f65965a3a683e" }, "downloads": -1, "filename": "altwalker-0.2.4.tar.gz", "has_sig": false, "md5_digest": "32cf548dc09b76563ef7105a77485441", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 54498, "upload_time": "2019-09-02T09:10:24", "url": "https://files.pythonhosted.org/packages/08/d7/c4ff090580552cc9bd919365febd8abaf3f5059b530fc237e604a3ae691a/altwalker-0.2.4.tar.gz" } ] }