CSCI 338: Fall 2024

Software Engineering

CSCI 338: Fall 2024

Topic 5. Testing, Static Analysis, & Continuous Integration (CI)

Continuous integration (CI), static analysis, and testing are complementary software development techniques that ensure that teams can deploy software continuously with a high degree of confidence in the quality of their code. In this unit, we will learn about ways you and your team can automate code testing and validation procedures before merging code updates into the main branch. By setting up a few tools up front, you will save time and energy and increase the reliability of your code base.

Tuesday, 9/24

Slides & Activities

  • Lecture 7: Intro to Testing & Static Analysis
  • Activity 2: Practice writing tests and using some static analysis tools
    This activity didn't quite work out, but you will have another chance to practice with testing and static analysis in Lab 6.
    • This activity didn't quite work out, but you will have another chance to practice with testing and static analysis in Lab 6.

Readings

  • Forgot to post the readings :(

Tuesday, 10/29

Slides & Activities

  • Lecture 8: Shifting Left with Testing, Static Analysis, & Continuous Integration
  • Lab 6: Testing & Static Analysis

Readings

Study Questions

  1. general What does "shifting left" mean?
  2. testing What are some of the benefits of automated testing?
  3. testing What are some of the limits of automated testing?
  4. testing What are the different test "sizes"? Why are these distinctions important?
  5. testing What is meant by "nondeterminism" in testing?
  6. testing What are some important qualities of a testing suite?
  7. testing What are some considerations that go into writing testable code?
  8. testing What is the difference between an interpreted and a compiled language?
  9. static analysis What languages are interpreted? What languages are compiled?
  10. static analysis What do we mean by "static"?
  11. static analysis What are some examples of static analysis tools?
  12. static analysis What are some of the benefits of doing static analysis?
  13. static analysis What are some of the challenges / limitations of static analysis?
  14. CI What is continuous integration?
  15. CI What are some of the key benefits and headaches (i.e. tradeoffs) of continuous integration?
  16. CI Can you still use CI if you're working on a really big feature that’s not ready for prime time?
  17. CI What happens in the "presubmit" phase?
  18. CI What is release candidate testing? How is it similar / different from the "presubmit" phase?