Lectures

LECTURE 1: Introduction to Software Quality

  • Course info. What Causes Software Errors? What is Quality? McCall’s Factor Model. What is Quality Assurance? Software Quality Assurance. Formal methods, testing, inspection, metrics. Achieving software quality.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 2: SOFTWARE PROCESS & SQA

  • Quality in context. Software process activities. The Waterfall model. The Prototyping model. Evolutionary development. The Spiral model. The Iterative Development Process (IDP).
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 3: AGILE METHODS I – XP

LECTURE 4: AGILE METHODS II – Scrum

  • Foundations of Scrum – empiricism, lean thinking, transparency. Scrum values. Scrum team members including product owner, scrum master, developers. Scrum framework activities including sprint, daily scrum, sprint review and sprint retrospective. Scrum artifacts including product backlog, sprint backlog and incremental releases. The Scrum metric of velocity.
  • Slides: [PDF]
  • Video: [YouTube]
  • Resources:

LECTURE 5: AGILE METHODS III – Kanban

LECTURE 6: SOFTWARE TESTING I

  • Testing vs. Debugging. Validation and Verification. Levels of Testing. Unit, integration, system, acceptance testing.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 7: SOFTWARE TESTING II

  • Testing in the Software Life Cycle. Test design, test strategy, test plans, test case design, test procedures. Black box vs. white box testing.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 8: BLACK BOX TESTING I

  • Black box testing methods including functionality coverage testing and input coverage testing. Different approaches to input coverage testing including exhaustive testing, Input partitioning, shotgun testing, input partition/shotgun hybrid testing, robustness testing (e.g., boundary testing).
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 9: BLACK BOX TESTING II

  • Black box methods – output coverage testing. Exhaustive output testing. Output partitioning. Handling multiple input/output streams/files. Black box methods at different levels. Gray box testing. Black box unit testing. Test harnesses and stubs. Assertions in test automation, tools. Black box class testing (interface / object oriented testing). Traces. Implementing assertions. Black box integration testing.
  • Slides: [PDF]
  • Video: [YouTube]

TEST #1 (LECTURES 1-9)

  • Test #1 will take place in class on Thursday, February 17, 2022 and will cover all materials in Lectures 1-9.

LECTURE 10: WHITE BOX TESTING I

  • Role and kinds of white box testing. Code injection. Implementation – source, executable and sampling. White box static analysis. Code coverage methods. Statement analysis methods: statement coverage, basic block coverage.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 11: WHITE BOX TESTING II

  • Code coverage methods. Decision analysis methods: decision (branch) coverage, condition coverage, loop coverage, path coverage. Data coverage methods. Data flow coverage.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 12: WHITE BOX TESTING III

  • Mutation testing, definition and role. Mutants: value, decision, statement mutations. Examples and coverage.
  • Notes:
    • Mutation testing notes
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 13: CONTINUOUS TESTING I

  • Software maintenance: corrective, adaptive and perfective maintenance. Continuous testing methods: functionality, failure and operational testing.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 14: CONTINUOUS TESTING II

  • Regression testing: purpose, method. Establishing and maintaining a regression test set. Observable artifacts: choosing, maintaining, normalizing, differencing. Version signatures. Regression test harnesses. A regression testing example: the TXL interpreter. Regression test organization, signatures and differencing for the TXL interpreter. Kinds of observations: functionality, performance, and internal diagnostic. Advantages and disadvantages of regression testing.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 15: Exploratory Software Testing

TEST #2 (LECTURES 10-15)

  • Test #2 will take place in class on Monday, March 21, 2022 and will cover all materials in Lectures 10-15.

LECTURE 16: Security Testing and Analysis

LECTURE 17: STATIC ANALYSIS

  • Using static analysis techniques to assess software quality and detect faults. Static analysis fault detection tools: Lint, FindBugs and CodeSurfer Path Inspector. A case study of the SCRUB tool at NASA JPL.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 18: SOFTWARE METRICS I

  • Software quality metrics – what they are, what they are for. Measurement basics – entities, attributes, measures. Assessment and prediction. Prediction models. A framework for software measurement.
    Product quality metrics. External metrics – faults, failures, defects. Defect density metric. Internal metrics – LOC, functionality, complexity. Complexity metrics – Halstead Software Science, McCabe Cyclomatic Complexity, flow graph metrics.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 19: SOFTWARE METRICS II

  • Process quality metrics. Predicting process properties such as effort time and cost. Function points.
  • Slides: [PDF]
  • Video: [YouTube]

LECTURE 20: CODE REVIEWS

  • Reviews, walkthroughs and inspections. Inspection in the software process. Code review techniques: checklists, paraphrasing, walkthroughs. and other lightweight code review practices. A discussion on bias in code review at Google.
  • Slides: [PDF]
  • Video: [Google Drive]

LECTURE 21: Advancing Test Automation Using AI

  • An overview of how AI methods including machine learning and deep learning can be applied to software testing automation problems. Two case studies are included: (1) Mutation testing using support vector machines, (2) Bug report severity prediction using natural language processing.
  • Slides: [PDF]
  • Video: [YouTube]

TEST #3 (LECTURES 16-21)

  • Test #3 will take place in class on Thursday, April 14, 2022 and will cover all materials in Lectures 16-21.