KTH / devops-course

Repository of the DevOps course at KTH Royal Institute of Technology DD2482
191 stars 427 forks source link

Executable tutorial proposal (Schemathesis) #2632

Closed RafDevX closed 1 month ago

RafDevX commented 1 month ago

Assignment Proposal

Title

REST API Fuzzing using Schemathesis

Names and KTH ID

Deadline

Category

Description

As software solutions increasingly turn to web-based stacks, it becomes paramount to include comprehensive API testing within CI pipeline processes. We believe that performing automated testing of API endpoints, in a continuous fashion, is of great benefit to any project used by consuming clients and so it is very relevant for (aspiring) developers to get a sense of how one might do that in a systematic fashion.

Thus, we propose creating an executable tutorial that can pedagogically introduce developers unacquainted with these techniques to a specific workflow that they might use later in their professional lives. In particular, we wish to introduce learners to the Schemathesis tool, which allows for automated fuzzing of REST APIs based on an OpenAPI contract document.

We will include a simple sample project with non-obvious logic errors, guide the user to run Schemathesis and explore the potential vulnerabilities it detects, as well as show them how to use the information reported to easily fix or mitigate the problems in question.

Relevance

Automated fuzzing, especially in this particular context of REST APIs, is at the heart of automated testing, which we have discussed in week 2 of this course and is essential to allow for effective Continuous Integration without compromising robustness. Our proposed tutorial hopes to demonstrate how to use a tool like Schemathesis as a key component in a testing pipeline to complement human-written and human-driven tests to ensure all stakeholders have confidence in the system's continuous reliability.

RafDevX commented 1 month ago

Since this PR has not yet been reviewed, and we have now had more time to try out different tools, we no longer believe that CATS is powerful enough for what we wish to demonstrate in our tutorial. As such, we would like to change our proposal to be the exact same topic, except using the tool Schemathesis as an example instead of CATS, if that works for you too.

We will update this pull request accordingly.

sofiabobadilla commented 1 month ago

Interesting. Merging.

@RafDevX