Testing, Static Analysis, and Continuous Integration (Cont’d)
Fall 2024
1
Post-Helene Welcome Back
Welcome back! I recognize that the past month has been challenging for everyone, and that each of you have been impacted differently, depending a variety of factors and circumstances. My goal is to help you navigate the remaining course content in a way that is manageable, but that helps you learn some of the core software development competencies that will help you going forward. Before talking about content, I wanted to discuss three items of business:
Syllabus & Schedule Updates
Syllabus & Schedule Walkthrough
Course Format & Participation
What’s Left
In my view, you’ve already done a lot of the tricky stuff (Docker, bash, and git / GitHub). Good job! What’s left now is the fun stuff (IMO), including:
Office Hours & Scheduling Meetings
If you are concerned that you will not be able to engage with the course assignments as planned, please talk to me as soon as possible so that I can make reasonable accommodations.
For any other questions on labs, projects, or course content, please attend my office hours, which are Mondays, Tuesdays, and Fridays from 3:30pm - 4:30pm on zoom or by appointment.
Questions?
Now onto the course content…
Introduction to the Idea of “Shifting Left”
Prior to Helene, we kind of talked about testing (but I forgot to post the readings so the scope of our discussion was limited).
Today – one month later (!!) – we are boarding our testing, static analysis, and continuous integration discussion based on the following three Google Chapters:
Outline
Outline
Testing: Discussion Questions
Some testing questions you should be able to answer by the end of this unit:
1. What are some of the benefits of automated testing?
Your answers from Tuesday, September 24…
2. What are the challenges / limits of automated testing?
3. What are the different test "sizes"?
Outline
Static Analysis: Discussion Questions
Some static analysis questions you should be able to answer by the end of this unit:
3. What do we mean by "Static"?
“Static analysis refers to the process of analyzing source code to find potential issues such as bugs, antipatterns, and other issues that can be diagnosed without executing the program.”
4. What are some examples of static analysis tools?
5. What are some of the benefits of static analysis?
Your answers here…
6. What are some of the drawbacks / tradeoffs os static analysis?
Outline
Continuous Integration (CI): Discussion Questions
Some continuous integration questions you should be able to answer by the end of this unit:
1. What is Continuous Integration?
“Continuous Integration, or CI, is generally defined as “a software development practice where members of a team integrate their work frequently [...] Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.”1
Simply put, the fundamental goal of CI is to automatically catch problematic changes as early as possible.”
2. What is “Shifting Left”
The cost of a bug increases exponentially the later it is caught (has it already been deployed, or are we still in early development). Therefore, the more tools you have in place to catch bugs earlier in the development process, the better!
5, 6. What happens in these phases?
What kinds of testing / validation happens in…
3. What are some of the benefits and headaches (i.e. tradeoffs) of continuous integration?
main
Options:
Outline