As soon as we started programming, we
found to our surprise that it wasn’t as easy to get programs
right as we had thought. Debugging had to be discovered. I can
remember the exact instant when I realized that a large part of my
life from then on was going to be spent in finding mistakes in my
own
programs. – attributed to M.
Wilkes, 1949
A product's quality is a function of how much it
changes the world for the better.
–
T. DeMarco, “Management Can Make Quality (Im)possible”,
Cutter IT Summit, 1999.
-
Software Quality (read
through
Section 3):
- How would you define software “quality”? Does
your definition match either of those notions listed in the
introduction?
- Be familiar with Garvin’s five perspectives on
quality.
- How are software quality and testing related?
- Do you have any affinity with DeMarco’s alternate
definition of (software) quality?
-
Software Testing (read
Sections 1–5):
- What is the primary purpose of software testing?
- Be able to compare and contrast the definitions of the
following sets of testing terms:
- Concepts: software fault, programmer
error, defect, and
failure.
- Methods: static vs dynamic tests
and white vs black-box
testing.
- Levels: unit, integration,
system and acceptance
testing.
- Types: regression vs. acceptance
testing, alpha vs. beta
testing, functional vs.
non-functional testing and A/B
testing.
- According to McConnell (i.e., the cost vs time table and
reference 11), how costly is a defect introduced in the
requirements phase and not found until the system testing
phase?
- Software quality folk often use the phrase “V &
V”. What does it mean?
-
Project Management Tools & Practices — Familiarize
yourself with the following.
-
Martin Fowler’s Continuous
Integration (just read the first section —
the example):
- Why is software integration so hard?
- What is continuous integration?
Note that we’ll use the tools listed below rather
than CruiseControl.
- CI/CD
- What do CI and CD stand for?
- Which of the two have we implemented for your
project already?
We’ll use GitHub Actions and Workflows to implement
CI.
- ESLint
- What does ESLint do?
- Where does the name lint come from?
- Does it run the program being analyzed to do its
work?
- GitHub Issues
- For what are issue trackers commonly used?
- Make sure that you can find the issue tracker for
your team’s server and client repos.
- How would you integrate Git issue tracking with
Trello?
We’ll use the GitHub issue tracker to record issues
raised by external stakeholders during user testing.