{ "info": { "author": "Ronie Martinez", "author_email": "ronmarti18@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Testing" ], "description": "# Human Framework: Test Automation Framework for Humans\u2122\n\n> NOTICE: Human Framework is still in the **Proof-of-Concept** stage\n\n> CONTRIBUTE! I am releasing Human Framework under GPLv3 which makes it open source and free.\n> \n> Contribute by:\n> 1. Localization of training data (translation)\n> 2. Adding more intents and actions\n> 3. Reporting bugs\n> 4. Suggesting new features\n\n> NOTICE: I am working on a [Rasa NLU](https://rasa.com/docs/rasa/nlu/about/) support\n\nHuman Framework is a test automation framework designed for testers without software programming background by allowing them to write test steps or instructions in their own language like English.\n\nHuman Framework uses Natural Language Understanding (NLU) for intent classification and entity extraction to be able to perform specific actions. \nIt currently depend on [Microsoft LUIS (Language Understanding)](https://www.luis.ai/).\n\nBelow is an example of test instructions that Human Framework can understand.\nTo get an idea of what specific sentences are supported, check the the content of `trials` and `tests` folder.\n\n```\nOpen chrome browser https://devpost.com\nPage title should be \"Devpost - The home for hackathons\"\nPage should contain link \"About\"\nClick link \"About\"\nPage title should be \"About us \u00b7 Devpost\"\nClose browser\n```\n\nLUIS (and other NLU tools) makes it possible to write test cases on any human language. \nCurrent version of Human Framework only supports English. \n\nHuman Framework was inspired by [Robot Framework](https://robotframework.org/) but leans towards \nNatural Language Processing (NLP) for writing test cases.\n\n**\"Human Framework is the Siri or Alexa of automation testing.\" (minus the voice, but it is possible in the future)**\n\n## How it works\n\n![Architecture](images/architecture.png)\n\nThe architecture of Human Framework can be simplified into 2 steps- Intent Classification and Action Execution:\n\n1. Human Framework reads the test case files and then uses an Intent Classifier (e.g. LUIS.ai) to identify intents and entities.\nFor example, the sentence \"**open chrome browser**\" will be identified with the intent \"**web.open_browser**\" and entity \"**chrome**\" as the browser type.\n2. Human Framework then executes the action specific for the classified intent. \nFor example, the intent \"**web.open_browser**\" will use [Selenium](https://www.seleniumhq.org/) to automate opening a chrome browser.\n\n## Usage / Installation\n\n### Create an Azure account\n\n1. Go to [Azure portal](https://portal.azure.com) and create an account.\n2. On the Azure portal dashboard, click `Create a resource`, look for `Cognitive Services` and click `Create`\n\n ![Create a resource](images/create-a-resource.PNG)\n\n ![Search cognitive services](images/search-cognitive-services.PNG)\n\n ![Create cognitive service](images/create-cognitive-services.PNG)\n\n3. Fill up form and click `Create` button\n\n ![Create cognitive service form](images/form-cognitive-services.PNG)\n\n### Create a LUIS.ai account\n\n1. Download the Human Framework training data from https://raw.githubusercontent.com/roniemartinez/HumanFramework/master/train/en.json and save it with `.json` extension\n2. Go to [LUIS.ai](https://luis.ai) and create an account\n3. Click `Import new app`\n\n ![Import new app](images/import-new-app.PNG)\n\n4. Click `Choose app file (JSON format) ...` and select the downloaded Human Framework training data\n\n ![Choose app file](images/choose-app-file.PNG)\n\n5. Optionally, type your desired app name\n\n ![Done import new app](images/done-import-new-app.PNG)\n\n6. Click `Done`\n7. Click on the application you created.\n8. On the application dashboard, click `Train` to train your LUIS.ai app\n\n### Connecting Azure account to LUIS.ai and publishing\n\n1. Click `MANAGE` > `Azure Resources` > `Add prediction resource`\n\n ![Manage LUIS.ai](images/manage-luis.PNG)\n\n2. Fill form\n\n ![Assign a resource to your app](images/assign-a-resource-to-your-app.PNG)\n\n3. Click `Publish`, select `Production` and then click the `Publish` button\n\n ![Publish LUIS.ai app](images/publish-app.PNG)\n\n4. Go back to `Azure Resources`. If you published your application to `Staging` environment, use `Change query parameters` to switch between environments.\n\n ![Copy Endpoint](images/copy-endpoint.PNG)\n\n5. Copy the endpoint assigned resource in #2\n\n**NOTE: After copying the endpoint, enter it to a browser's address bar to make sure that it is accessible., Otherwise, repeat the steps or use the `Starter_Key` which will only give you 1000 API calls**\n\n### Installing Human Framework\n\nHuman Framework is written in Python 3. Start by downloading/installing Python from [python.org](https://python.org). \n\nTo install Human Framework, enter the following command into the terminal/cmd:\n\n#### Directly from Github\n```bash\npip install -e git+git@github.com:roniemartinez/HumanFramework.git#egg=humanframework\n```\n\n#### From PyPI\n```bash\npip install humanframework\n```\n\n### Setting up Human Framework\n\nUse the copied endpoint from LUIS.ai and setup Human Framework. Paste the endpoint enclosed in double quotes.\n\n```bash\nhuman config --luis-endpoint \"\"\n```\n\n### Installing Drivers\n\nHuman Framework depends on [Selenium](https://www.seleniumhq.org/) for testing web applications. Download your desired \n[webdriver](https://www.seleniumhq.org/about/platforms.jsp) and extract them to your local working directory.\n\n### Writing tests\n\nWrite a text file (test_*.txt) containing your tests and save it to local working directory where you placed the Selenium Drivers.\nFor example, if we have a file named `test_web.txt`:\n\n```text\nopen chrome https://python.org\npage title should be \"Welcome to Python.org\"\nclose browser\n```\n\n### Running tests\n\nTo run the tests in `test_web.txt`, enter the following on the terminal/cmd:\n\n```bash\nhuman --test test_web.txt\n```\n\n### Test autodiscovery\n\nFiles inside the `trials` folder that starts with the text `test_` are automatically executed.\n\n```text\ntrials\n|- test_simple.txt\n|- test_simple_2.txt\n|- ...\n```\n\nWith this structure, you can simply type `human` to run the test cases.\n\n## The future of Human Framework\n\n- **Integrated Editor** - While testing was greatly simplified because Human Framework will just execute sentences, \nusing the terminal to install Python and several libraries is still more developer-centric.\nTo remove this technical requirement, another major goal of the Human Framework project is to release a \none-click installer which should include new features like an integrated IDE/Editor. \nThis will greatly increase tester's productivity.\n- **Language Support** - Not all testers use the English language. Supporting most languages will benefit more testers around the world. \n- **NLU Options** - While LUIS.ai is very simple to use and accurate compared to other Intent Classifiers, it is not cheap.\nTo support more testers, a free option like [Rasa NLU](https://rasa.com/docs/rasa/nlu/about/) can be used as an alternative.\n\n## Limitations\n\nI only implemented a few intents and actions for the proof-of-concept stage.\nTo know what are the possible tests that you can do with Human Framework, check the contents of `trials` and `tests` folders.\n\n## Author\n\n- [Ronie Martinez](mailto:ronmarti18@gmail.com)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/roniemartinez/HumanFramework/tarball/0.6.2", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/roniemartinez/HumanFramework", "keywords": "", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "humanframework", "package_url": "https://pypi.org/project/humanframework/", "platform": "", "project_url": "https://pypi.org/project/humanframework/", "project_urls": { "Download": "https://github.com/roniemartinez/HumanFramework/tarball/0.6.2", "Homepage": "https://github.com/roniemartinez/HumanFramework" }, "release_url": "https://pypi.org/project/humanframework/0.6.2/", "requires_dist": [ "diskcache (==4.0.0)", "Jinja2 (==2.10.1)", "python-dotenv (==0.10.3)", "requests (==2.22.0)", "selenium (==3.141.0)" ], "requires_python": "", "summary": "Human Framework: Test Automation Framework for Humans\u2122", "version": "0.6.2" }, "last_serial": 5800412, "releases": { "0.6.0": [ { "comment_text": "", "digests": { "md5": "a67393df6b6ab16662856367bef2ddab", "sha256": "7a4cd33a0ef522e57fa118063998b10ae836be4a6a20c1c5dbf5b60c82e7da99" }, "downloads": -1, "filename": "humanframework-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a67393df6b6ab16662856367bef2ddab", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25726, "upload_time": "2019-09-08T01:48:28", "url": "https://files.pythonhosted.org/packages/e5/6c/7aea88f2f43f0588b6b1163f45df6c89f59134933539509db64532fe99b4/humanframework-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4356e412ed926b42a59c39d6037a11f7", "sha256": "a458606b0ecab7a332e0dde82905c807233e5126bca89e54bd8751877a2c2884" }, "downloads": -1, "filename": "humanframework-0.6.0.tar.gz", "has_sig": false, "md5_digest": "4356e412ed926b42a59c39d6037a11f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13901, "upload_time": "2019-09-08T01:48:31", "url": "https://files.pythonhosted.org/packages/16/70/260ac4a84824992fb3a3860d9d504f878d778f57d5842334e07c85ddd31e/humanframework-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "666fbe35f863f18c8c9e077e11d9ac0b", "sha256": "f2817b1cf3c7faa20c0c032a8b5b12204c71d8c6882b57a5c3ba9684cc2a18f6" }, "downloads": -1, "filename": "humanframework-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "666fbe35f863f18c8c9e077e11d9ac0b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25816, "upload_time": "2019-09-08T12:29:00", "url": "https://files.pythonhosted.org/packages/c5/49/698bd8f6756cbdb1e28ecbc8cc95f690695135ee69130a3ed440baf7f171/humanframework-0.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32bbf21a5c0b8bc2c4dccb3ee8c2aab1", "sha256": "ea5199b13349f5e60a39d943568d38f8b027553eca28bd6758fb1ad091f6418a" }, "downloads": -1, "filename": "humanframework-0.6.1.tar.gz", "has_sig": false, "md5_digest": "32bbf21a5c0b8bc2c4dccb3ee8c2aab1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14103, "upload_time": "2019-09-08T12:29:01", "url": "https://files.pythonhosted.org/packages/73/b0/29c757c81cf83913d554a86405b4d27ce9a4d7ffdcc4abce9546b207e594/humanframework-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "4c44f314a95b19ff42eb01425daa4ffb", "sha256": "26db4d4d1044e86762029d99d1da957141ceeccf5e1b7904ca74808c7e27508e" }, "downloads": -1, "filename": "humanframework-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4c44f314a95b19ff42eb01425daa4ffb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25870, "upload_time": "2019-09-08T20:21:14", "url": "https://files.pythonhosted.org/packages/21/39/395db646c713c4df3c1d13e2f87e94aafebb447451cd2f76cee241881a5d/humanframework-0.6.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2c32d6e7dbd517c58f284fd8aacf1ecc", "sha256": "6c5847926acb58d0f401413899b394641ca02b83025dcc44adf96f2fe77fa220" }, "downloads": -1, "filename": "humanframework-0.6.2.tar.gz", "has_sig": false, "md5_digest": "2c32d6e7dbd517c58f284fd8aacf1ecc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14229, "upload_time": "2019-09-08T20:21:15", "url": "https://files.pythonhosted.org/packages/c0/44/dc82dc8b82c9e620c2a09c5538fbbfe5aba23aa85bb66ebc2caf6e4f8d31/humanframework-0.6.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4c44f314a95b19ff42eb01425daa4ffb", "sha256": "26db4d4d1044e86762029d99d1da957141ceeccf5e1b7904ca74808c7e27508e" }, "downloads": -1, "filename": "humanframework-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4c44f314a95b19ff42eb01425daa4ffb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25870, "upload_time": "2019-09-08T20:21:14", "url": "https://files.pythonhosted.org/packages/21/39/395db646c713c4df3c1d13e2f87e94aafebb447451cd2f76cee241881a5d/humanframework-0.6.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2c32d6e7dbd517c58f284fd8aacf1ecc", "sha256": "6c5847926acb58d0f401413899b394641ca02b83025dcc44adf96f2fe77fa220" }, "downloads": -1, "filename": "humanframework-0.6.2.tar.gz", "has_sig": false, "md5_digest": "2c32d6e7dbd517c58f284fd8aacf1ecc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14229, "upload_time": "2019-09-08T20:21:15", "url": "https://files.pythonhosted.org/packages/c0/44/dc82dc8b82c9e620c2a09c5538fbbfe5aba23aa85bb66ebc2caf6e4f8d31/humanframework-0.6.2.tar.gz" } ] }