Applications Open now for May 2023 Batch | Applications Close: May 10, 2023 | Exam: July 16, 2023

Applications Open now for May 2023 Batch | Applications Close: May 10, 2023 | Exam: July 16, 2023

Degree Level Course

Software Testing

To prepare the students to understand the phases of testing based on requirements for a project, to apply the concepts taught in the course to formulate test requirements precisely, to design and execute test cases as a part of a standard software development IDE, and to apply specially designed test case design techniques for specific application domains.

by Meenakshi D'Souza

Course ID: BSCCS3002

Course Credits: 4

Course Type: Core Option I

Pre-requisites: None

Course structure & Assessments

12 weeks of coursework, weekly online assignments, 2 in-person invigilated quizzes, 1 in-person invigilated end term exam. For details of standard course structure and assessments, visit Academics page.

WEEK 1 Motivation, Software Development Life Cycle, Terminologies and Processes, Software Test Automation using JUnit
WEEK 2 Basics of Graphs, Fundamental Graph Algorithms, Elementary Graph Algorithms, Structural Graph Coverage Criteria, Algorithms: Structural Graph Coverage Criteria
WEEK 3 Graph Coverage Criteria, Data Flow in Graphs, Data Flow Graph Coverage Criteria, Unit Testing Based on Graphs
WEEK 4 Software Design and Integration Testing, Design Integration Testing and Graph Coverage, Specification Testing and Graph Coverage, Graph Coverage and Finite state machines, Classical Coverage Criteria
WEEK 5 Basics needed for Software Testing, Coverage Criteria Part-1, Making clauses to determine predicate, Logic Coverage Criteria
WEEK 6 Logic coverage example, Logic coverage specification, Logic coverage FSM, Logic coverage summary, SMT - Solvers
WEEK 7 Symbolic testing, Concolic execution, Example and summary of symbolic execution
WEEK 8 Functional testing, ISP and example
Regular Expressions CFGs, Mutation testing, Mutation operators source code, Mutation testing vs other criteria, Mutation testing for integration and tools
Basics of integration concepts, Mutation operators OO integration, OO integration testing, OO faults, OO coupling criteria
Web apps intro, Client side testing, Server side testing
Regression testing, Software quality metrics, Non-functional testing, TDD, Course Summary
+ Show all weeks

Prescribed Books

The following are the suggested books for the course:

Paul Ammann and Jeff Offutt, Introduction to Software Testing, Cambridge University Press, 2008.

Glenford J. Myers, The Art of Software Testing, Second edition, 2008.

Paul C. Jorgensen, Software Testing: A Craftsman’s Approach, Fourth edition, CRC Press, 2014.

Lisa Crispin and Janet Gregory, Agile Testing: A Practical Guide for Testers and Agile Teams, Addison-Wesley, 2009.

Appropriate research papers on testing techniques, information regarding testing tools, as applicable.

About the Instructors

Meenakshi D'Souza
Associate Professor, Department of Computer Science and Engineering, IIIT Bangalore

Meenakshi D'Souza is an Associate Professor at IIIT-Bangalore and has been with the institute for the past ten years. Prior to joining IIIT-Bangalore, Meenakshi worked for Honeywell Technology Solutions, Bangalore. Meenakshi is a council member of ACM India and an Associate Editor of Sadhana, a journal of Indian Academy of Sciences.

...  more

Her research interests are in the areas of software testing and formal verification of embedded software. Meenakshi teaches courses on Theory of Computation, Software Testing (in NPTEL too), Design and Analysis of Algorithms and Graph Theory. Meenakshi is also interested in gender diversity and accessibility in STEM and IT.

  less