Spring 2025 — Schedule

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 Thur 01/23 Get Familiar with Our Course,
Let's Set Expectation

A bit about this course and how we shall work together

  Pre-assignment: Verify access to class platforms (due ASAP)

[25-Jan] Assignment 1 released

  DIY: complete the Let's start form

(please complete it by 31-Jan-2025, 11:59pm)

Activity: Get to know you

(no submission)

Activity: Check-in

(no submission)

2 Tue 01/28 Why Test?

Who cares? So what?

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)

Activity: Rubber duck debugging

(no submission)

3 Thur 01/30 Faults−Errors−Failures, and RIPR model

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

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: RIPR

(no submission)
[sample solution]

Activity: Model for testing

(no submission)

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.

Test automation and test framework
4 Tue 02/04 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?

JUnit

One of the most commonly used test automation frameworks for Java

AO-Ch3
Flaky tests
    Activity: Model for testing

(wrap-up)
This is an open-ended activity. No sample solution provided.


Activity: Get started with JUnit

(no submission)
(require Java environment and JUnit)
[sample solution]

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.

5 Thur 02/06 JUnit

Let's explore more JUnit features

AO-Ch3 Assignment 1: RIPR & MDTD
(due 02/06, before class)

[02/09] sample solution -- in Brightspace

[02/18] Assignment 1 grades released

 
Class meets on Zoom. Please use Zoom link

(remember to log in with your UAlbany account)
(Zoom link also in Brightspace's 02/06 announcement and your mailbox)


SUT, test template

(no submission)
(require Java environment and JUnit)
[sample solution]


POTD 1: JUnit
(Due 02/07, 10:30am EST)

(require Java environment and JUnit)
[Sample solution -- in Brightspace]

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.

6 Tue 02/11 Selenium

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

Selenium documentation

[11-Feb] Assignment 2 released

Quiz 1 guide

[02/18] Quiz 1 grades released


Quiz 1 reflection & correction
(Due 02/28, 11:59pm EST)

(Quiz 1: sample solution — in Brightspace)

Get started with POTD 2

(require Java environment, JUnit, Selenium)

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 (UVA Spring 2023 TA) for creating the installation tutorial (for Windows)


Disable Chrome auto update in Windows

Thanks to Sharmista Kuri (UAlbany Fall 2024, Spring 2025 TA) for creating the instructions (for Windows)


JUnit/Selenium setup and troubleshooting

Thanks to all my former Software Testing teaching teams for sharing their experience. Special thanks to Jonah Kim (UVA Spring 2024 TA) 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.

7 Thur 02/13 Selenium

Let's explore more Selenium features

      POTD 2: Selenium
(Due 02/14, 10:30am EST)

(require Java environment, JUnit, Selenium)
[Sample solution -- in Brightspace]

Test design, generation, execution, evaluation and analysis, and improvement
8 Tue 02/18 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?

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

(no submission)
[sample solution]

9 Thur 02/20 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 & JUnit
(due 02/20, before class)

[03/24] partial sample solutions -- in Brightspace

[03/24] Assignment 2 grades released

[21-Feb] Assignment 3 released

  POTD 3: Candy Tasting testing
(Due 02/21, 10:30am EST)

This is an open-ended activity. No sample solution provided.

Input Space Partitioning (ISP) Testing
10 Tue 02/25 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   Quiz 2 guide

[03/24] Quiz 2 grades released

Quiz 2 reflection & correction
(Due 03/31, 11:59pm EST)
Activity: IDM

(no submission)
[sample solution]

11 Thur 02/27 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     POTD 4: ISP coverage
(Due 02/28, 10:30am EST)
[sample solution]

More practice: ISP

(no submission)
[sample solution]

12 Tue 03/04 General Ideas: Web App Testing
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.

      Activity: ISP web app

(no submission)
[sample solution]

Graph-based Testing
13 Thur 03/06 Graph-based Testing
Structural Coverage Criteria
  • Node
  • Edge
  • Edge-Pair
  • Complete Path

One of the most commonly used coverage criteria

AO-Ch7.1
AO-Ch7.2
    POTD 5: Graph coverage
(Due 03/07, 10:30am EST)
[sample solution]

Graph coverage web app
14 Tue 03/11 Visited by (slides)
Professor Jeff Offutt's picture
Jeff Offutt

Professor and Chair, Computer Science, UAlbany,
Software Testing textbook co-author,
Prime path coverage inventor

Structural Coverage Criteria
  • Prime Path

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

AO-Ch7.2,
AO-Ch7.3.1
Assignment 3: ISP, JUnit, Selenium
(due 03/11, before class)

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

[04/10] This is an open-ended assignment. No sample solution provided.

[04/10] Assignment 3 grades released

  More graph coverage practice: worksheet–1, worksheet–2

(no submission)

15 Thur 03/13
[03/11: Updated the class schedule] — Per the class discussion and vote, we will follow

Option 3: No class meeting on 03/13. Attend the Bunshaft lecture on 03/13 at 11am, take attendance, and receive 50% on Quiz 3 and POTD 6 grades. Submit a write-up/reflection on what you have learned from the talk and how that applies to your future career. You will receive the remaining 50% on Quiz 3 and POTD 6.

  • The class meets at the Bunshaft lecture at 11am.
  • No quiz 3 will be administered in class.
  • No POTD 6 will be done in class.
  • Bunshaft lecture attendance will receive 50% on Quiz 3 and POTD 6.
  • Please be sure to look for the teaching team and sign your name on the attendance sheet.
  • Submit a reasonable write-up/reflection on what you have learned from the talk and how that applies to your future career to Gradescope (deadline 27-March, 10:30am, no late submission, no extension). You will receive the remaining 50% on Quiz 3 and POTD 6.
  • The write-up/reflection is an individual task — thus, the write-up will be specific and individualized.
  03/15−03/21 Spring break, no class (refer to Albany's Academic Calendar)
16 Tue 03/25 Apply to Source Code

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

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 properly?

AO-Ch7.2

[26-Mar] Assignment 4 released

Activity: CFG

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

Activity: Structural graph

(no submission)
[sample solution]

Activity: Data flow coverage

(no submission)
[sample solution]

Data flow coverage web app
17 Thur 03/27 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,
AO-Ch7.4
    POTD 7: Data flow for source
(Due 03/28, 10:30am EST)
[sample solution]
[03/27: Updated the class schedule] — Per the class discussion, we decided to move a class discussion on graph coverage for design element, assignments 4 and 5, and showcase checkpoint 1 (for CSI 561) down by one class meeting.
18 Tue 04/01 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?

AO-Ch7.3.2,
AO-Ch7.4
    Activity: Graph for design

(no submission)
[sample solution]

Logic-based Testing
19 Thur 04/03 Logic-based Testing
  • 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 Quiz 4 guide

[20-Apr] Quiz 4 grades released

Quiz 4 reflection & correction
(Due 04/30, 11:59pm EST)

Let's refresh our memory
(some) Algebra Laws

POTD 8: Logic coverage
(Due 04/04, 10:30am EST)
[sample solution]

Logic coverage web app

20 Tue 04/08 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?

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 Assignment 4: Graph & JUnit
(due 04/08, before class)

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

[04/28] partial sample solutions -- in Brightspace

[04/28] Assignment 4 grades released

  Activity: ACC

(no submission)
[sample solution]

21 Thur 04/10 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

[11-Apr] Assignment 5 released

  POTD 9: Logic for source
(Due 04/11, 10:30am EST)
[sample solution]
22 Tue 04/15 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   Activity: Logic for source

(no submission)
[sample solution]

Testing as central activity, TDD
23 Thur 04/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 and refactoring? We try to be productive with TDD, but when not to use TDD.

AO-Ch4,
K-Ch1 to Ch4,
TDD (wikipedia)
  Quiz 5 guide

[21-Apr] Quiz 5 grades released

Quiz 5 reflection & correction
(Due 05/01, 11:59pm EST)
Activity: TDD (Java program)

(require: JUnit and Java environment)
(no submission)
[sample solution]

24 Tue 04/22 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 K-Ch1 to Ch4 Assignment 5: Logic
(due 04/22, before class)

[05/01] sample solutions -- in Brightspace

[05/01] Assignment 5 grades released

  POTD 10: TDD web app
(Due 04/23, 10:30am EST)

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

[sample solution]
25 Thur 04/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.

K-Ch1 to Ch4     Recap-TDD

(no submission)
[sample solution]

Another testing technique; Course wrap-up
26 Tue 04/29 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?

    Activity: Bypass testing

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

Link for discussion:
Client-side input validation

SQL injection: [bad], [good]

27 Thur 05/01 Course wrap-up and final exam guide

Q&A. No additional topic/discussion.

      More practice: drawing CFG

Based on our class discussion, we used one of last semester's graph homework questions and practiced drawing a control flow graph. Additional practices and sample solutions are posted for your reference.

[sample solution]
28 Tue 05/06 Last minutes Q&A

No additional topic/discussion. Feel free to drop by to chat or discuss about anything.

Examples from our conversation: RACC example, CACC example

Class meets on Zoom. Please use Zoom link

(remember to log in with your UAlbany account)

FE Wed 05/14 Final Exam: Wednesday, 14-May, 1:00pm-3:00pm EST, Room: Lecture Center 22
[Please refer to final exam guide for detail]

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