Fall 2025 — Schedule

Tentative class schedule (may be updated without prior notice)
Note: AO-Ch x means chapter x in Ammann and Offutt text book
K-Ch x means chapter x in Koskela's Test Driven (This is recommended reading. You don't have to buy the book. Free trial available.)
Meet Date Topics and Handouts Readings Assignments Quizzes Activities / POTDs
Course overview and intro to software testing
1 Wed 08/27 Get Familiar with Our Course,
Let's Set Expectation

A bit about this course and how we shall work together

      DIY: complete the Let's start form

(please complete it by 5-Sep-2025, 11:59pm)


Activity: Get to know you

(no submission)

Activity: Check-in

(no submission)

2 Fri 08/29 Why Test?

Who cares? So what?

AO-Ch1
Some examples of why
CWE Top 25 Most Dangerous Software Weaknesses

[31-Aug] Assignment 1 posted

  What could go wrong? (tldraw)

Activity: How do you test?

(no submission)

3 Mon 09/01 Intro to Software Testing

What is Software Testing? What are differences between testing and debugging? What are some testing categories? How mature is your testing?

AO-Ch1,
AO-Ch2.1
    Activity: How do you test?

(no submission, wrap up)

Activity: Rubber duck debugging

(no submission)

4 Wed 09/03 Faults−Errors−Failures, and RIPR model

What aspects must be analyzed when designing tests and how do we analyze them?

AO-Ch1,
AO-Ch2.1
    Activity: RIPR (countPositive)

(no submission)
(sample solution — in Canvas/Files)

5 Fri 09/05 Model Driven Test Design (MDTD)

How does testing fit in the software development process? What are testing activities? How do we work at a higher level of abstraction, using mathematical structures to design tests?

AO-Ch2     Activity: Model for testing

(no submission)
This is an open-ended activity. No sample solution provided.

Test automation and test framework
6 Mon 09/08
Add deadline 09/09
Test Automation
  • Designing for testability
  • Test code quality

How do we test software automatically? What makes test automation hard? What are characteristics of good tests?

Guest speaker:
CS 3250 staff: Chaitanya's picture
Chaitanya Rajendra Shahane
AO-Ch3
Flaky tests
    DIY: Set up test environment (JUnit)

Please try to set up the test environment (JUnit) before next class. The class discussion will be more effective and enjoyable if your environment is readily available.

7 Wed 09/10 JUnit

One of the most commonly used test automation frameworks for Java

Guest speakers:
CS 3250 staff: Nathan's picture
Nathan Kim
CS 3250 staff: Hugo's picture
Hugo Barnes
AO-Ch3, JUnit 5 user guide     Activity: Get started with JUnit

(no submission)
(sample solution — in Canvas/Files)

JUnit5

You are recommended to use Eclipse; JUnit 5 comes with it. (Note: You may use any Java IDE or command line, and set up / set class path JUnit)

There are a number of good tutorials on how to set up (or use) JUnit 5, such as https://blog.codefx.org/libraries/junit-5-setup/ and https://www.eclipse.org/community/

If you do not already have Java on your machine, download and install it. JUnit 5 requires Java 8 or higher.

8 Fri 09/12 JUnit

Let's explore more JUnit features

Guest speakers:
CS 3250 staff: Nathan's picture
Nathan Kim
CS 3250 staff: Hugo's picture
Hugo Barnes
AO-Ch3

[14-Sep] Assignment 2 posted

  SUT: Calculator.java
CalculatorTest_template.java

(no submission)
(require Java environment and JUnit)
(sample solution — in Canvas/Files)

Additional practice: JUnit – Hangman

(no submission)
(require Java environment and JUnit)
(sample solution — in Canvas/Files)

DIY: Set up test environment (Selenium)

Please try to set up the test environment (Selenium) before next class. Class discussion will be more effective and enjoyable if your environment is readily available.

9 Mon 09/15 Selenium

One of the most commonly used test automation frameworks for web apps

Selenium documentation Assignment 1: RIPR, MDTD (due 09/15, before class)

(sample solution — in Canvas/Files)

  Activity: Selenium – ComputeGPA

(no submission)
(require Java environment, JUnit, Selenium)
(sample solution — in Canvas/Files)

Selenium

There are a number of good tutorials on how to set up and use Selenium.

You may follow Get started with Selenium to set up your test environment.

How do you know if your test environment works?
Try running the provided test template. You should see a web browser open and close. The test should pass.

Note: the templates were created for Mac. For Windows users, please verify the paths to your browser driver and attach .exe to your drivers


Chrome driver installation with Selenium

Thanks to Andrea Jerausek for creating the installation tutorial (for Windows)


JUnit/Selenium setup and troubleshooting

Thanks to all the CS 3250 teaching teams for sharing their experience. Special thanks to Jonah Kim for creating detailed instructions on the installation.

If you are familiar with Gradle, Maven, Ant, or any dependency management tools/frameworks, and prefer to use them to set up your Selenium, please feel free to use them instead of manually setting up Selenium. We choose not to introduce them in class to minimize additional tools/frameworks/software that you need to deal with.

10 Wed 09/17 Selenium

Let's explore more Selenium features

      POTD 1: Selenium
(Due 09/18, 11am EST)

(require Java environment, JUnit, Selenium)
(sample solution — in Canvas/Files)

Test design, generation, execution, evaluation and analysis, and improvement
11 Fri 09/19 Coverage-based Test Design

How do we know if we have tested enough? Why coverage criteria? How should we design tests? Why don't we need all possible tests? How to design tests using coverage criteria?

AO-Ch.5     Activity: Coverage-based test design

(no submission)
(see slides for sample solution)

12 Mon 09/22 Coverage-based Test Design in Action

Let's put the concept into action — invent our own coverage criterion, derive tests to satisfy the criterion, execute and evaluate our tests, and analyze the coverage level.

AO-Ch.5 Assignment 2: RIPR, test automation (due 09/22, before class)

(sample solution — in Canvas/Files)

[22-Sep] Assignment 1 grades released

Quiz 1 guide Activity: Candy Tasting testing

(no submission)
(this is an open-ended activity; no sample solution provided)

Input Space Partitioning (ISP) Testing
13 Wed 09/24 Input Space Partition (ISP) Testing

How do we design tests without having source code (of a program under test)? Is ISP black-box testing?


An Industrial Study of Applying Input Space Partitioning to Test Financial Calculation Engines

(This is an example of how the concepts have been applied to industry; recommended reading, it will not be tested)

AO-Ch6.1

Who said ISP can't be fun!!
    POTD 2: IDM
(Due 09/25, 11am EST)
[sample solution]
14 Fri 09/26 ISP: Coverage Criteria
  • All Combination
  • Each Choice
  • Pair-Wise
  • Base Choice
  • Multiple Base Choice

Which ISP coverage criterion should we use? Why? How do we apply the criterion to derive tests? How many tests do we need?

AO-Ch6.2, 6.3

[26-Sep] Assignment 3 posted

  Activity: ISP coverage

(no submission)

[sample solution]

More practice: ISP — GenericStack

(no submission)

[sample solution]

15 Mon 09/29 General Ideas: Web App Testing

(read on your own, we'll discuss if needed so that we have enough time to complete the activity)

ISP: Apply to Web Apps

Can we test web apps the same way we test traditional software? How should we test? What are web-specific features that must be taken into account when designing tests? Here is one way to test web apps systematically.

 

[30-Sep] Assignment 2 grades released

[30-Sep] Quiz 1 grades released (refer to Canvas Announcement)

Activity: Web app testing with ISP

(no submission)

[sample solution]
Graph-based Testing
16 Wed 10/01 Graph-based Testing
Graph: Structural Coverage Criteria
  • Node
  • Edge

One of the most commonly used coverage criteria

AO-Ch7.1
AO-Ch7.2
  POTD 3: Graph coverage
(Due 10/02, 11am EST)

[sample solution]

Graph coverage web app

17 Fri 10/03 Graph: Structural Coverage Criteria
  • Edge-Pair
  • Complete Path
  • Prime Path

How should we handle loops in graphs? Execute loop once, 0 time, many times?

worksheet–2: Derive Prime Paths
AO-Ch7.2     worksheet–1, worksheet–2

(no submission)
(refer to class discussion and see slides for sample solutions)


Prime Path Coverage tutorial
18 Mon 10/06

Prime Path (wrap up)

Structural Graph Coverage: Apply to Source Code

How do we create graph representation of the software under test? Let's put graph coverage criteria into action.

AO-Ch7.3.1

[7-Oct] Assignment 4 posted

Quiz 2 guide

Quiz 1 regrade request due 10/07, 11:59pm EST

Activity: CFG

(no submission)

[sample solution]
19 Wed 10/08 Structural Graph Coverage: Apply to Source Code (wrap up) AO-Ch7.3.1 Assignment 3: IDM, ISP, test automation (due 10/08, before class)

(Note: This assignment may be time-consuming. Please plan and manage your time properly)

(sample solution — in Canvas/Files)

  POTD 4: Graph for source (LCM)
(Due 10/09, 11am EST)

[sample solution]

20 Fri 10/10
Drop deadline 10/14
Graph: Data Flow Coverage Criteria
  • All-Defs
  • All-Uses
  • All-DU-Paths

How do we analyze data flow of a software artifact and integrate them into a graph model? How do we design tests to ensure that the program states / values are created and used correctly?

AO-Ch7.2   Quiz 1 reflection & correction
(Due 10/10, 11:59pm EST, no late submission, no extension)

(Quiz 1: sample solution — in Canvas/Files)

Activity: Data flow coverage

(no submission)

Data flow coverage web app
  10/11−10/14 Fall reading days, no class (refer to UVA Academic Calendar)
21 Wed 10/15 Data flow Coverage: Apply to Source Code

Putting it all together and designing unit-level tests to satisfy data flow coverage criteria.

AO-Ch7.3.2    

Activity: Data flow coverage (wrap up)

[sample solution]

POTD 5: Data flow for source (FizzBuzz)
(Due 10/16, 11am EST)

[sample solution]
22 Fri 10/17 Graph Coverage for Design Elements

Software usually consists of multiple components (or modules or subsystems) and there are data flow couplings between these components. How do we design tests beyond unit-level testing?

Graph coverage for Specification

How do we apply graph coverage criteria to other kinds of software artifacts (non-source code? — (Recommended reading. Read on your own. It will not be tested)

AO-Ch7.4
AO-Ch7.5
    Activity: Graph for design elements

(no submission)

[sample solution]
Logic-based Testing
23 Mon 10/20
Withdraw deadline 10/21
Logic-based Testing
Logic: Coverage Criteria
  • Predicate
  • Clause
  • Combinatorial

How should we design tests based on semantic of the logic expressions? Will tests designed for equivalent predicates always be the same?

AO-Ch8.1

[21-Oct] Assignment 3 grades released

[21-Oct] Quiz 2 grades released (refer to Canvas Announcement)

Let's refresh our memory (some) Algebra Laws

Activity: Logic coverage

(no submission)

[sample solution]

Logic coverage web app

24 Wed 10/22 Logic: Determination

A clause determines the value of its predicate when the other clauses have certain values. How do we know what values the other clauses should have? Under which condition(s) will the clause determine the predicate?

AO-Ch8.1   Quiz 3 guide Start working on POTD 6 (if time allows)
25 Fri 10/24 Logic: Active Clause Coverage Criteria (ACC)
  • GACC
  • RACC
  • CACC

When some aspects are supposed to impact the behavior of a software under test, how should we design tests to check if they actually do impact?

ACC – A form of "Modified Condition Decision Coverage" (MCDC), required by the US Federal Aviation Administration (FAA) for safety critical avionics software

AO-Ch8.1

[26-Oct] Assignment 5 posted

POTD 6: ACC
(Due 10/25, 11am EST)
[sample solution]
26 Mon 10/27 Logic: Apply to Source Code

How do we identify test requirements according to logical expressions found in program source code? How should we derive tests to ensure proper evaluation of the expressions? How are reachability and controllability issues handled when applying logic coverage criteria?

AO-Ch8.3 Assignment 4: Graph, test automation (due 10/27, before class)

(Note: This assignment may be time-consuming. Please plan and manage your time properly)

Model solution: Thanks to Mia Ark in Canvas/Files
Quiz 2 regrade request due 10/28, 11:59pm EST Logic for source (gfc)

(no submission)

27 Wed 10/29 Logic: Apply to Source Code

Can we reuse tests when a software is refactored (or gets evolved)? How do we analyze? How much can we reuse? Some ideas toward regression testing.

AO-Ch8.3     Wrap up Logic for source (gfc)

(no submission)

[sample solution]

start working on POTD 7 (if time allows)

28 Fri 10/31 Logic: Apply to Source Code

More practice with logic-based testing for source code

AO-Ch8.3   Quiz 2 reflection & correction
(Due 10/31, 11:59pm EST, no late submission, no extension)

(Quiz 2: sample solution — in Canvas/Files)

[2-Nov] Quiz 3 grades released (refer to Canvas Announcement)

POTD 7: Logic for source (highEnough)
(Due 11/01, 11am EST)
[sample solution]
Syntax-based Testing
29 Mon 11/03 Syntax-based testing:

How to design tests based on the syntax of the software artifacts. How do we design valid and invalid test inputs using regular expressions and context free grammars?

AO-Ch9.1     Grammar-based mutation testing

(no submission)

[sample solution]
30 Wed 11/05 Syntax: Apply to input space

Let's mutate the software artifact, apply grammar-based mutation testing to some simple real-world scenarios

AO-Ch9.1   Quiz 4 guide

Please refer to Piazza @49 and Piazza's email announcement for an exception—early quiz 4. 

Input space grammar

(no submission)

[sample solution]
31 Fri 11/07 Syntax-based testing:

Why do we need variations of the software under tests? Why mimic developers' common mistakes or difficult to detect faults. How to mimic the mistakes and encourage common test heuristics.

AO-Ch9.2, 9.3   Quiz 3 regrade request due 11/09, 11:59pm EST POTD 8: Program mutation
(Due 11/08, 11am EST)
[sample solution]
32 Mon 11/10 Syntax: Apply to Source Code

Though mutation testing is the strongest coverage criterion, it is very expensive. What can we do to reduce the testing cost? How is it used in practice? Let's mutate the software artifact to create effective test requirements

AO-Ch9.2, 9.3 Assignment 5: Logic (due 11/10, before class)

[11-Nov] Assignment 6 posted

[11-Nov] Assignment 4 grades released

  Activity: Program mutation (CountWords)

(no submission)

[sample solution]
33 Wed 11/12 Syntax: Apply to Source Code

More practice on mutation testing.

AO-Ch9.2, 9.3   Quiz 3 reflection & correction
(Due 11/12, 11:59pm EST, no late submission, no extension)

(Quiz 3: sample solution — in Canvas/Files)

Activity: Program mutation (gfc)

(no submission)

[sample solution]
34 Fri 11/14 Putting it all together

RIPR → mutation testing → test automation

AO-Ch9.2, 9.3     POTD 9: Code defenders
(Due 11/15, 11am EST)

(require: your laptop/computer and internet connection)
(This is an open-ended activity; no sample solution)

Testing as central activity, TDD
35 Mon 11/17 Shift Testing Left, Test-Driven Development (TDD)

Users always change their mind and software continues to evolve. How do we use testing as central activity to embrace evolutionary design? How do we use test harnesses as guideline in software development?

AO-Ch4,
K-Ch1 to Ch4,
TDD (wikipedia)
 

[17-Nov] Quiz 4 grades released (refer to Canvas Announcement)

Activity: Get started with TDD (Catapult)

(no submission)
This is an open-ended activity. No sample solution.

36 Wed 11/19 TDD

More TDD practice. How do we use tests to guide the refactoring? We try to be productive with TDD, but when not to use TDD.

K-Ch1 to Ch4   Quiz 5 guide Activity: Get started with TDD

(require: JUnit and Java environment)
(no submission)

More practice: TDD Tic-Tac-Toe

(require: JUnit and Java environment)
(no submission)

DIY: Set up test environment

Please try to set up the test environment before class. Please try to have your Selenium and web server working before next class. One free and easy set up web server that we will use in class is XAMPP. However, you may use any web server of your choice. If you choose to use another web server of your choice — Please make sure that you know how to deploy and access your web resources). Class discussion will be more effective and enjoyable if your environment is readily available.

37 Fri 11/21 TDD web app

We have used TDD to build a standalone Java program. How do we use TDD to build a web app?

K-Ch1 to Ch4 Assignment 6: Syntax (due 11/21, before class)   POTD 10: TDD web app
(Due 11/22, 11am EST)

(require: Selenium, JUnit, Java environment, web server)

38 Mon 11/24 Test Doubles

What do we do if some parts of the software are unavailable but we need them to test another part? Using stubs, fakes, and mocks to simplify testing. What to mock, when to mock, and when not to mock.

    Quiz 4 regrade request due 11/24, 11:59pm EST

Quiz 4 reflection & correction
(Due 11/27, 11:59pm EST, no late submission, no extension)
No class meeting.
Please see announcement on 11/24 and watch a video in Canvas > Panopto.
  11/26−11/30 Thanksgiving recess, no class (refer to UVA Academic Calendar)
Course wrap-up
39 Mon 12/01 Bypass testing

Although client-side and server-side input validations can be used as double safeguard to prevent unacceptable users' entries, users can still bypass the validations. How should we design tests targeting the validations and web-specific constraints?

   
40 Wed 12/03 Course wrap-up and final exam guide

Q&A. No additional topic/discussion.

       
41 Fri 12/05 Q&A, Office hours on demand

No class meeting; feel free to drop by to chat or discuss about anything.

 
42 Mon 12/08 Last minutes Q&A

No class meeting. Please use Piazza for Q&A.

   
FE Fri 12/19 Final Exam: Friday, 19-December-2025, 9:00am-12:00pm EST, Room: RICE 130
Please refer to Course wrap-up and final exam guide for time and detail
(please refer to the university final exam schedule)

Copyright © 2025 Upsorn Praphamontripong
Released under the Creative Commons License CC-BY-NC-SA 4.0 license.
Last updated 2025-11-23 19:18
  Top