Software Testing, Analysis, and Quality Assurance

 

Informatics 115: Software Testing, Analysis, and Quality Assurance

Fall Quarter 2016

General Information

Instructor: Professor James A. Jones

Email: jajones@uci.edu

Class Time: Monday, Wednesday 6:30pm–7:50pm

Class Location: DBH 1100

Course TAs: Jungyoun Ku <jungyok@uci.edu>, Archit Dey <architd1@uci.edu>, and Soumya Mishra <ssmishra@uci.edu>

TA Office Hours:

  1. Soumya Mishra: Mondays 5:30pm–6:30pm in DBH 5th floor lobby.

  2. Archit Dey: Tuesdays 11:00am–12:00pm in CS364 (ICS Open Lab).

  3. Jungyoun Ku: Wednesdays 10:30am–11:30am in DBH 5243.

Instructor Office Hours: After class, or by appointment.

EEE Dropbox: https://eee.uci.edu/toolbox/dropbox/index.php?op=openfolder&folder=470842

Course Exam: Wednesday, Nov. 30. 6:30pm–7:50pm

Web Forum to ask questions and discussion: https://eee.uci.edu/boards/f16/INF115-F16/

Description

Course Description:

Preparation for developing high-quality software through successful verification and validation techniques. Fundamental principles of software testing, implementing software testing practices, ensuring the thoroughness of testing to gain confidence in the correctness of the software.


Course Prerequisites:

(I&C SCI 45J or I&C SCI 45C or I&C SCI 65 or I&C SCI 23 or CSE 23 or I&C SCI 46 or CSE 46 or IN4MATX 45) and (IN4MATX 43 or I&C SCI 52). I&C SCI 45J with a grade of C or better. I&C SCI 45C with a grade of C or better. I&C SCI 65 with a grade of C or better. I&C SCI 23 with a grade of C or better. CSE 23 with a grade of C or better. I&C SCI 46 with a grade of C or better. CSE 46 with a grade of C or better. IN4MATX 45 with a grade of C or better. IN4MATX 43 with a grade of C or better. I&C SCI 52 with a grade of C or better.


Requirements and Expectations of Students:

This course requires a strong programming background and a good understanding of complex programs. Completion of ICS 31, ICS 32, and ICS 33 (or equivalent) should give a sufficient background in programming. There will be homeworks and projects that require programming. As such, I expect students to:

  1. Be familiar and comfortable with software programming. We will mostly focus on Java, but may include other languages — so a comfortability and eagerness to learn new programming languages is important.

Topics

  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

Homeworks

  1. Homework 1. Assigned Monday, Oct. 3. Due 11:59pm, night of Monday, Oct. 10. Link to assignment. Upload your assignment here.

  2. Homework 2. Assigned Monday, Oct. 17. Due 11:59pm, night of Monday, Oct. 24. Link to assignment. Link to JAR file. Upload your PDF here. Upload your Java source-code file here.

  3. Homework 3. Assigned Monday, Nov. 14. Due 11:59pm, night of Monday, Nov. 21. Link to assignment. Upload your assignment here.

Schedule (Tentative)

  1. Week 1 (Sep 26, 28): Course Introduction. Testing fundamentals. Survey link will be sent on Monday at 8pm. Complete the survey by noon on Wednesday.

  2. Week 2 (Oct 3, 5): Monday: Testing fundamentals continued. Mistake/fault/error/failure. Exploratory testing. Acceptance testing. Homework 1 assigned. Wednesday: JUnit.

  3. Week 3 (Oct 10, 12): Monday: Black-box/functional testing. Homework 1 due. Wednesday: Combinatorial testing.

  4. Week 4 (Oct 17, 19): Monday: Combinatorial testing. Finite functional models. Homework 2 assigned. Wednesday: Finite structural models. Control-flow graphs. Parameterized Testing in JUnit.

  5. Week 5 (Oct 24, 26): Monday: Structural Testing. Instrumentation. Homework 2 due. Wednesday: Testing Principles. Coverage Tools in JUnit.

  6. Week 6 (Oct 31, 2): Monday: Midterm exam review. Wednesday, Nov. 2: Midterm Exam.

  7. Week 7 (Nov 7, 9): Regression testing. Regression test selection. Regression test minimization and prioritization. Wednesday: Midterm Return

  8. Week 8 (Nov 14, 16): Monday: GUI Testing, Test input generation. Homework 3 assigned. Wednesday: Scaffolding & Mocking. Code Review & Static analyzers.

  9. Week 9 (Nov 21, 23): Monday: Debugging. Homework 3 due. Wednesday: No class for Thanksgiving

  10. Week 10 (Nov 28, 30): Monday: Course exam review. Wednesday, Nov. 30, 6:30pm–7:50pm: Course Exam.

  11. Finals week: Please note that there will be no “Final Exam,” which is scheduled in the Friday, December 9, 7:00–9:00pm assigned time slot. Instead, we will have a Course Exam that is held on November 30.

Grading

  1. Class participation (5%)

  2. Homeworks (and any quizzes) (30%)

  3. Midterm exam (30%)

  4. Course Exam (35%)


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.

Policies