In4matx 115: Software Testing, Analysis, and Quality Assurance

Overview

Software testing is more than just error detection.It plays an important role in Software development lifecycle by improving the quality, reliability & performance of the system by checking what the software is supposed to do and also checking that the Software is not doing what its not supposed to do. After the completion of the course, students will be able to

General Information

Description

Topics

Tentative Schedule

This schedule is subject to change

Date Topic Reading Assignments Posted assignments Due assignments
Week 1
Overview and Thinking about Testing
Tuesday, October 1st, 2019 Testing fundamentals   Assignment 0  
Thursday, October 3rd,2019 Testing fundamentals   Assignment 1  
Week 2
Tuesday, October 8th, 2019 Builds & Static Analysis     Assignment 0
Thursday, October 10th, 2019 Introduction to Software Testing      
Week 3
Tuesday, October 15th, 2019 Kinds of Testing   Assignment 2 Assignment 1
Thursday, October 17th, 2019 How Tested Is It? Coverage Metrics      
Week 4
Tuesday, October 22nd, 2019 Random testing      
Thursday, October 24th, 2019 Lessons Learned in Software Testing II     Assignment 2
Week 5
Tuesday, October 29th, 2019 Debugging I      
Thursday, October 31st, 2019 Midterm      
Week 6
Monday, November 4th, 2019 Assignment 3
Tuesday, November 5th, 2019 Debugging II
Thursday, November 7th, 2019 Causality, Fault Localization and Agan's Rules for Debugging      
Week 7
Tuesday, November 12th, 2019 Software Inspections   Assignment 4 Assignment 3
Thursday, November 14th, 2019 Software Inspections II   Final Project  
Friday, November 15th, 2019       Group formation for final project
Week 8
Tuesday, November 19th, 2019 Testing a conversational agent skill      
Thursday, November 21st, 2019 Testing intelligent systems     Assignment 4
Week 9
Tuesday, November 26th, 2019 Formal verification     Final Project
Thursday, November 28th, 2019 No class      
Week 10
Tuesday, December 3rd, 2019 Mutation analysis      
Thursday, December 5th, 2019 Final Exam      

Policies

Grading

Grading weights: 10% for each of the 4 assignments (Total 40%),20% Midterm exam, 20% Final exam,15% Final Project, 5% Quiz

Assignments - 40%
* There are 4 total assignments to be completed over the course of this class.
* Assignments include a mixture of written documents and code submissions.
* Assignments are all submitted via checking in to the git repository for the class!
* If you have a problem with an assignment grade, you must contact the instructor through EMAIL within ONE WEEK of receiving your grade.
* Be forewarned that every single assignment will require a lot of work. Do not wait until the night before to start the homework; you will be dismayed. Start on each homework the week before it is due, and spread the work throughout the week.

Midterm Exam - 20%
* These tests are designed to take 60-90 minutes each.
* If you have a problem with the grade, you must contact the instructor through EMAIL within ONE WEEK of receiving your grade.

Final Exam - 20%
* These tests are designed to take 60-90 minutes each.
* If you have a problem with the grade, you must contact the instructor through EMAIL within ONE WEEK of receiving your grade.

Final Project - 15%
* There is a final project designed to check for a cumulative understanding, which includes some of the work for assignments.
* Final project include a mixture of written report and code submission.
* For this project, you will work alone.
* Like assignments, all submission is via CANVAS.
* Like assignments be forewarned that the project will require a lot of work. Do not wait until the last moment to start; you will be dismayed. Start as early as possible.
* If you have a problem with the grade, you must contact the TA through EMAIL within ONE WEEK of receiving your grade.

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.

Students with Disabilities

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

Additional Resources

Few additional resources
1. Maintenance and Source Control
http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
http://www.gnu.org/software/make/manual/make.html
2. Builds & Static Analysis
http://www.thegeekstuff.com/2011/04/svn-command-examples/
http://www.spinroot.com/uno/
3. Introduction to Software Testing
http://cs.gmu.edu/~offutt/softwaretest/powerpoint/
4. Coverage Metrics
http://gcc.gnu.org/onlinedocs/gcc/Gcov.html
5. Lessons Learned in Software Testing: The Testing Role
http://www.associationforsoftwaretesting.org/
6. How to Write a Simple Random Tester
http://blog.regehr.org/archives/896
http://blog.regehr.org/archives/856
http://blog.regehr.org/archives/872
http://web.cecs.pdx.edu/~omse535/hamlet94random.pdf
https://www.udacity.com/course/cs258
7. Random Testing: Not Just For Toys
http://www.st.cs.uni-saarland.de/dd/
http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/
http://blog.chromium.org/2012/04/fuzzing-for-security.html
http://embed.cs.utah.edu/csmith/
http://embed.cs.utah.edu/creduce/
8. Introduction to Debugging
http://www.whyprogramsfail.com/slides.php
9. Quick Intro to Debuggers
http://www.cs.cmu.edu/~gilpin/tutorial/

Most of this course was adapted from teaching material designed by Dr. James A. Jones.

Last Updated: November 3, 2019