{ "info": { "author": "Jonathan Jacky", "author_email": "jon.p.jacky@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.6", "Topic :: Software Development :: Quality Assurance", "Topic :: Software Development :: Testing" ], "description": "PyModel: Model-based testing in Python\n======================================\n\n**PyModel** is an open-source model-based testing framework in Python.\n\nIn model-based testing, you code a *model* that can generate as many\ntest cases as needed. The model also checks the test outcomes.\nModel-based testing is helpful where so many test cases are needed\nthat it is not feasible to code them all by hand.\n \nIn the samples included with PyModel, there are models and test\nscripts for network sockets, a communication protocol, embedded\ncontrollers, some data structures, a multithreaded application, and a\nweb application.\n\nPyModel includes an analyzer for validating models, visualizing their\nbehavior, and checking their safety properties.\n\nPyModel can generate *offline tests* which are similar to unit tests,\nbut the typical way to use PyModel is *on-the-fly testing*, where the\ntest runner uses the model to compute the test run as it executes, so\ntest runs can be as long as needed. On-the-fly testing can cope with\nnondeterminism and asynchrony in the system under test.\n\nPyModel can combine models using *composition*, guide tests through\nprogrammed *scenarios*, and focus test coverage according to\nprogrammed *strategies*.\n\nPyModel provides three main programs:\n\n- **pma**, PyModel analyzer: generates a finite state machine (FSM) \n and computes properties by exploring a model program, FSM, test suite, \n or a product of these.\n \n- **pmg**, PyModel graphics: generates a file of graphic commands from an FSM,\n that can be processed by the Graphviz *dot* command to produce graphics\n files in various formats including *svg*, *pdf*, and *ps*.\n \n- **pmt**, PyModel tester: displays traces, generates tests offline, \n executes offline tests, or generates and executes tests on-the-fly.\n\nThere is also a fourth program:\n\n- **pmv**, PyModel viewer: invokes *pma*, *pmg*, and the Graphiz *dot*\n command (to display the graphics generated by *pmg*). The *pmv*\n program provides brevity and convenience, so analysis and display\n can be accomplished by a single command.\n\nUse *pma* and *pmg* (or *pmv*) to visualize and preview the behavior of *pmt*.\nEvery path through the graph created by *pma* (and drawn by *pmg*) is a\ntrace (test run) that may be generated by *pmt*, when *pma* and *pmt* are\ninvoked with the same arguments. The *pma* program is also useful on\nits own for visualization and safety analysis.\n\nPyModel work in progress is available at GitHub:\nhttps://github.com/jon-jacky/PyModel\n\nThe PyModel distribution is also available at the\nauthor's web page: http://staff.washington.edu/jon/pymodel/www/\n\nPyModel requires Python 2.6 or higher (because it uses *itertools.product*)\n\nPyModel is influenced by NModel, but is not a translation or\nre-implementation.\n\nPyModel is covered by the BSD License.\n\nCode and documents are copyright (C) 2009-2013, Jonathan Jacky.\n\n\nRevised May 2013", "description_content_type": null, "docs_url": null, "download_url": "https://pypi.python.org/pypi/PyModel", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jon-jacky/PyModel", "keywords": "model-based testing python model on-the-fly offline composition finite state machine harness stepper automated test run suite oracle nondeterminism synchronizing interleaving strategy coverage protocol trace scenario", "license": "BSD License", "maintainer": null, "maintainer_email": null, "name": "PyModel", "package_url": "https://pypi.org/project/PyModel/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/PyModel/", "project_urls": { "Download": "https://pypi.python.org/pypi/PyModel", "Homepage": "https://github.com/jon-jacky/PyModel" }, "release_url": "https://pypi.org/project/PyModel/1.0/", "requires_dist": null, "requires_python": null, "summary": "Model-based testing in Python", "version": "1.0" }, "last_serial": 640594, "releases": { "0.85": [], "0.9": [ { "comment_text": "", "digests": { "md5": "168467569ac81d785f4b1a06cf96f973", "sha256": "a9297e6d9de1aefd0dd4e22cf2b886d091c51c465f588db58491c4f9c14188e5" }, "downloads": -1, "filename": "PyModel-0.9.tar.gz", "has_sig": false, "md5_digest": "168467569ac81d785f4b1a06cf96f973", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 306327, "upload_time": "2011-07-12T05:58:53", "url": "https://files.pythonhosted.org/packages/76/fb/6dcb1d409d5c375df1fd81e0ded35aa074bd0e2a932377d145de92620600/PyModel-0.9.tar.gz" }, { "comment_text": "", "digests": { "md5": "9519fc40aa285e010f56ec421075ae52", "sha256": "439ace0d86885cd2e9fed26647cfc09e64ea3d08113c58c21fc8d0b156b4b695" }, "downloads": -1, "filename": "PyModel-0.9.zip", "has_sig": false, "md5_digest": "9519fc40aa285e010f56ec421075ae52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 364648, "upload_time": "2011-07-12T05:59:31", "url": "https://files.pythonhosted.org/packages/d2/6f/be5077201d82b935748129ac62396ac5c8558227de2133155731b826c534/PyModel-0.9.zip" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "3d97b5263a7a04f7a2d324362063db72", "sha256": "6e99d049550caa1171561395bcf28446ab04aaae7e3f661ffe8d75b2b9d939fc" }, "downloads": -1, "filename": "PyModel-1.0.tar.gz", "has_sig": false, "md5_digest": "3d97b5263a7a04f7a2d324362063db72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 673866, "upload_time": "2013-05-18T04:53:27", "url": "https://files.pythonhosted.org/packages/84/ba/4ac09d73488e0cf55602df81dfcba5e5cba009ff824346e25f675cb8aa03/PyModel-1.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "3d4217faa4297d041f8195b22f51448c", "sha256": "2028147a3edc371ae9bc98e0f260110bbfc5354b6082cc504abd2fee92f1dfae" }, "downloads": -1, "filename": "PyModel-1.0.zip", "has_sig": false, "md5_digest": "3d4217faa4297d041f8195b22f51448c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 813243, "upload_time": "2013-05-18T21:55:17", "url": "https://files.pythonhosted.org/packages/17/b9/751bd210daaf86c73d93c5b500860eee16beb8a76a1a7d59927096c44e8d/PyModel-1.0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3d97b5263a7a04f7a2d324362063db72", "sha256": "6e99d049550caa1171561395bcf28446ab04aaae7e3f661ffe8d75b2b9d939fc" }, "downloads": -1, "filename": "PyModel-1.0.tar.gz", "has_sig": false, "md5_digest": "3d97b5263a7a04f7a2d324362063db72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 673866, "upload_time": "2013-05-18T04:53:27", "url": "https://files.pythonhosted.org/packages/84/ba/4ac09d73488e0cf55602df81dfcba5e5cba009ff824346e25f675cb8aa03/PyModel-1.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "3d4217faa4297d041f8195b22f51448c", "sha256": "2028147a3edc371ae9bc98e0f260110bbfc5354b6082cc504abd2fee92f1dfae" }, "downloads": -1, "filename": "PyModel-1.0.zip", "has_sig": false, "md5_digest": "3d4217faa4297d041f8195b22f51448c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 813243, "upload_time": "2013-05-18T21:55:17", "url": "https://files.pythonhosted.org/packages/17/b9/751bd210daaf86c73d93c5b500860eee16beb8a76a1a7d59927096c44e8d/PyModel-1.0.zip" } ] }