{"id":17169347,"url":"https://github.com/alerighi/masters-degree-thesis","last_synced_at":"2026-05-06T05:32:10.461Z","repository":{"id":196589703,"uuid":"450848633","full_name":"alerighi/masters-degree-thesis","owner":"alerighi","description":"The implementation of my master's degree thesis on automated acceptance testing of embedded IoT devices","archived":false,"fork":false,"pushed_at":"2023-09-25T21:23:16.000Z","size":10412,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-29T23:41:38.074Z","etag":null,"topics":["acceptance-testing","embedded","iot","pytest","python","raspberrypi","test-auto"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alerighi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-01-22T14:59:00.000Z","updated_at":"2023-09-25T18:46:18.000Z","dependencies_parsed_at":"2023-09-26T10:20:27.714Z","dependency_job_id":null,"html_url":"https://github.com/alerighi/masters-degree-thesis","commit_stats":null,"previous_names":["alerighi/masters-degree-thesis"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alerighi%2Fmasters-degree-thesis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alerighi%2Fmasters-degree-thesis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alerighi%2Fmasters-degree-thesis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alerighi%2Fmasters-degree-thesis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alerighi","download_url":"https://codeload.github.com/alerighi/masters-degree-thesis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245334909,"owners_count":20598389,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acceptance-testing","embedded","iot","pytest","python","raspberrypi","test-auto"],"created_at":"2024-10-14T23:25:54.743Z","updated_at":"2026-05-06T05:32:05.435Z","avatar_url":"https://github.com/alerighi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Master's degree thesis\n\nIn this repository there are the files for my master's degree thesis on automated acceptance testing of embedded IoT devices. You can find the final document\n(in Italian) [here](https://github.com/alerighi/masters-degree-thesis-doc/blob/master/tesi.pdf).\n\n## Description\n\nThis software implements an automated system for automated performing acceptance tests (i.e. tests done before deploying\nthe firmware to thousands of devices) on embedded devices, in particular I took as a case study a Wi-Fi electric radiator from IRSAP s.p.a. of which I wrote the firmware while working in IOTINGA.\n\nThis system does test the firmware while considering it a black-box, and it does so by testing it on the real hardware.\nTo do so a test fixture was built.\n\n\u003cimg src=\"img/fixture.png\" alt=\"text fixture\"\u003e\n\nIt consists in the connection between a devkit of the device and a Raspberry Pi, that runs the test software. Tests\nare written with `pytest` with a custom fixture that passes a contexts that allows interacting with the device, both\nlocally and trough the cloud:\n\n- control inputs (GPIO) of the device\n- read the status of outputs (GPIO) of the device\n- send a message to the device trough the cloud\n- receive a message from the device trough the cloud\n- call a local local REST API on the device\n- write serial commands to the device\n- read serial logs from the device\n\nThe Raspberry Pi also acts as a Wi-Fi AP and client trough the integrated Wi-Fi interface. This allows the connection\nto the device as the mobile app would do, but also the test of different AP configurations and the introduction\nof network errors, to check if the device behaves correctly (what if the connection goes down, then back up again, what\nif some packets gets lost, what if the DNS doesn't work but internet does, etc).\n\n## Installation\n\nThis software requires python 3.11. Once installed, create a virtual environment, then just run:\n\n```bash\npip install -e .\n```\n\nto install the software in development mode.\n\nEverything that is needed is in the `pyproject.toml` file, that specifies all the project dependencies and stuff.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falerighi%2Fmasters-degree-thesis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falerighi%2Fmasters-degree-thesis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falerighi%2Fmasters-degree-thesis/lists"}