Informatics 215: Software Analysis and Testing
Spring Quarter 2016
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):
•DBH 5013
•DBH 5054
•DBH 5th floor atrium
•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
•Class participation (10%)
•Homeworks (20%)
•Project (40%)
•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.
•Testing Fundamentals
•Specifications
•Combinatorial Testing
•Structural Testing
•Fault-based Testing
•Regression Testing
•Testing Object-Oriented Programs
•Testing and Profiling
•Testing Process
•Debugging
•Static Analysis
•Dynamic Analysis
•Slicing
•Model checking
•Formal Verification
•Fault localization
•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.