Informatics 215: Software Analysis and Testing

Spring Quarter 2016

General Information

Instructor: Professor James A. Jones

Instructor email: jajones@uci.edu

Instructor Office Hours: Immediately following class, or appointment upon request

Course Reader: Rishabh Shah (rishabas@uci.edu)

Reader Office Hour: Thursdays, 5:45–6:30pm

Reader Office Hour Locations: Given that none of the following rooms can be reserved, please check these locations, in this order. Rishabh will be in one of these locations (prioritized in order of most-to-least preference):

  1. DBH 5013

  2. DBH 5054

  3. DBH 5th floor atrium

  4. DBH 5022

Class Time: Tuesday, Thursday 6:30pm to 7:50pm

Class Location: ICS 174

Web Site: http://www.ics.uci.edu/~jajones/Informatics215-Spring2016.html

Class Files: https://eee.uci.edu/toolbox/dropbox/index.php?op=openfolder&folder=454489

Description

Course Description:

Aims to prepare students to develop high quality software through successful verification and validation techniques. Students learn both: (1) the fundamental principles of software testing, how to test software, and how to ensure the thoroughness of testing to gain confidence in the correctness of the software; and (2) state of the art research methods for analyzing and testing software. This course aims to give both immediately practical knowledge and exposure to future trends.

Topics

Text Book

No text books are required, however course material is inspired by a number of sources, including research papers and the following books:

Software Testing and Analysis by Mauro Pezzè and Michal Young

Software Testing Techniques by Boris Beizer


Policies

Grading

  1. Class participation (10%)

  2. Homeworks (20%)

  3. Project (40%)

  4. Exam (30%)


Course Evaluations

The window for spring quarter online evaluations will be open near the end of the quarter. Once the dates for evaluations are known, this information will be posted here.


Cheating

The UCI academic honesty policy applies. Consequences of cheating in this class: a letter in your UCI file, and the course grade is lowered, most likely to F. Material that is copied from any source needs to be quoted and the source must be cited. If you plagiarize, you run the severe risk of failing the class, in a most disgraceful manner. All work should be assumed to be individual work (not group work) unless stated otherwise on the assignment.


Disabilities

If you need an accommodation because of a disability, please contact the instructor and the Disability Services Center as soon as possible.

  1. Testing Fundamentals

  2. Specifications

  3. Combinatorial Testing

  4. Structural Testing

  5. Fault-based Testing

  6. Regression Testing

  7. Testing Object-Oriented Programs

  8. Testing and Profiling

  9. Testing Process

  10. Debugging

  11. Static Analysis

  12. Dynamic Analysis

  13. Slicing

  14. Model checking

  15. Formal Verification

  16. Fault localization

  17. Software visualization

Schedule (will likely change throughout the quarter)

Week 1 | Tues, Mar 29: Introduction to course, Overview of topics

Week 1 | Thurs, Mar 31: Testing Fundamentals, Survey Results. Homework 1 assigned. Link to Homework 1 instructions.

Week 2 | Tues, Apr 5: Testing Fundamentals

Week 2 | Thurs, Apr 7: Testing Fundamentals (continued). Homework 1 due. Read “Exploratory Testing Explained” by Tuesday.

Week 3 | Tues, Apr 12: Exploratory and Acceptance Testing. “Exploratory Testing Explained” article to be read before class.

Week 3 | Thurs, Apr 14: Functional Testing (BDD Reading assigned, read before class on Tuesday) BDD Article Link

Week 4 | Tues, Apr 19: Behavior Driven Development, Mocking, Mockito (Read BDD article before class)

Week 4 | Thurs, Apr 21: Behavior Driven Development, Mocking, Mockito (continued)

Week 5 | Tues, Apr 26: Combinatorial Testing

Week 5 | Thurs, Apr 28: Static Analysis, Control Flow Analysis

Week 6 | Tues, May 3: Structural Testing

Week 6 | Thurs, May 5: Structural Testing (continued), Instrumentation

Week 7 | Tues, May 10: Course Project described. Coverage-tools in-class exercise. “Static Analyzers” (e.g., FindBugs)

Week 7 | Thurs, May 12: Test-input generation, Pex, Symbolic Execution, Model Checking, Static Analyzers (Code checking tools, such as FindBugs, PMD, CheckStyle).

Week 8 | Tues, May 17: No in-class lecture. Instead: Watch the Continuous Integration Lecture and Reading (see your email for the links)

Week 8 | Thurs, May 19: No class. Instead: Work with your group on the course project.

Week 9 | Tues, May 24: Continuous Integration, Mutation Testing, GUI Testing & Capture/Replay Tools

Week 9 | Thurs, May 26: Regression Testing, Regression Test Selection, Regression Test Minimization & Prioritization, Debugging

Week 9 | Friday, May 27: ISR Forum

Week 10 | Tues, May 31: Course Evaluations, Exam Review

Week 10 | Thurs, Jun 2: Exam

Week 10 | Friday Jun 3, Course Project Due (or earlier if your scheduled demo with the Course Reader is earlier.

Course Project

There will be a final project for the course that involves practical use of testing, analysis, and debugging tools on real software code. The project will allow group work, but working in a group is optional (i.e., you may choose to work alone).


Project Description (These instructions will likely be updated to add any new thoughts or ideas that come up in the course.)


Sign up your team and for your software system here.