esciencecenter-digital-skills / research-software-support

Content for the Research Software Support platform
https://esciencecenter-digital-skills.github.io/research-software-support/
Other
0 stars 3 forks source link

Add Software Testing Module #8

Closed Cmurilochem closed 3 months ago

Cmurilochem commented 3 months ago

Idea

Learning objectives

Planned exercises

  1. Two multiple choice questions on software testing and why it is important.
  2. Matching activity worksheet where the main purpose is to match the type of test with its description/purpose.
  3. Describe a scenario where a team of researchers is collaboratively developing a research software but the project is facing several problems with code integration and breaks/bugs with new functionalities. Choose a correct alternative that describes what is CI and its benefits for this project.

Design of the Slides Deck

What is "software testing"?

Consequences of not testing your (research) software

What can tests help you do?

Types of tests

Continuous Integration (CI)

CI is a practice in software development where team members regularly integrate their individual code changes, often several times a day, into a shared remote repository. After every integration, a working version of the project is build and the software's test suite is run automatically, making it possible to identify defects, errors, flaws, or bugs introduced by changes early. This process helps keep the code up-to-date and reduces the chances of major issues when combining everyone's work.

### Importance of CI CI has a number of key benefits: - Helps bugs to be found early, minimising their damage and making them easier to fix. - Keeps project contributors up to date with each other’s work so they can benefit from new features as soon as possible. - Encourages users to write tests. - Automates running of tests. - Ensures tests are run frequently. ## Useful resources for learning about software testing & CI/CD - https://the-turing-way.netlify.app/reproducible-research/testing - https://coderefinery.github.io/testing/motivation/ - https://www.ibm.com/topics/software-testing - https://the-turing-way.netlify.app/reproducible-research/ci - https://coderefinery.github.io/testing/continuous-integration/
JaroCamphuijsen commented 3 months ago

Hi Carlos. Looks like a good start. I think eventually most of the automation content will go into the CI/CD module (whenever we decide to make that) but for now you can definitely put it in here.

Regarding the learning objectives, I would also add a short chapter about testing types and what they are useful for, researchers could come up with having heard about terms like integration test vs unit test vs regression test etc. They might want a short description of what these different types of tests mean.

If I understand correctly you now specified the design and structure of the main slide deck? It looks good, however it might be a good idea to first think about what assignments/exercises you would like to make such that it will be tested that the learning objectives are actually covered.