-
Notifications
You must be signed in to change notification settings - Fork 1
Quality Assurance
Franz Miltz edited this page Sep 16, 2021
·
3 revisions
Quality Assurance is the Software Team's last line of defense. It is their job to make sure that whatever code we compile and load on to the computers involved in a run is suitable for the job. Due to our limited resources, namely money and time, it is paramount that we avoid failures as they could potentially set us back a lot!
There are three main measures to determine the quality of our code base:
- Correctness - Are we confident that the code does what it's supposed to?
- Maintainability - Will it be easy for other HYPED members to read, understand and verify the code in the future?
- Efficiency - Does the code perform in practice?
To ensure the quality of our code, the QA team has the following means:
- Reading the code: This goes for what's already there as well as the changes that we will be making over the year.
- Correctness: Are there any obvious flaws? Are the provided tests sufficient?
- Maintainability: Are there any style guide violations? Is the code too complicated?
- Efficiency: If there are any dynamic memory allocations, are they truly required? Are the right data structures being used? Is anything being done that would be block the other subsystems from running? (locks, I/O, ...)
- Talking to the other members: What is it they are trying to achieve?
- Correctness: Do all projects/sub-teams have the same idea? Maybe the hardware people are expecting different behaviour?
- Maintainability: Are different projects trying to do the same thing? Maybe this should be handled centrally.
- Efficiency: Is it feasible on paper? Some rough calculations may be helpful here.
- Continuous Integration (CI): We can run checks on every commit to verify that everything works correctly.
- Researching large modificaitons: Would a certain systematic changes improve the code? If so, how long would it take to implement? What are the drawbacks?
Fundamentally, it is the Quality Assurance Project's job to put the finger where it hurts.
Here are two fundamental rules that every contribution should follow:
- If it's not documented, it doesn't exist.
- If it's not tested, it doesn't work.
- Utilites and core. I.e. all C++ that does not belong to another project.
- Configuration files
- CI
- Home
- How to add and edit pages on the wiki
- Glossary
- Admin
- Projects & Subsystems
- Motor Controllers
- Navigation
- Quality Assurance
- Sensors
- State Machine
- Telemetry
- Technical Guides
- BeagleBone Black (BBB)
- Configuration
- Contributing
- Testing
- Install VM on Mac
- Makefiles
- Reinstall MacOS Mojave
- Travis Troubleshooting
- Knowledge Base