Carnegie Mellon University

Electrical and Computer Engineering

College of Engineering

Course Information

18-654SV: Software Testing and Operations




Testing is an integral part of any software endeavor and underpins building dependable systems. Testing activities, which nowadays rely greatly on automation and target both functional and non-functional requirements, form the backbone of a high-quality software solution that performs its function as intended. Operations activities involve configuration, monitoring, and troubleshooting software in a live environment. DevOps practices like containerization help streamline both testing and operations processes by encapsulating an application and its dependencies in a container to yield repeatable and resource-efficient testing environments. This course introduces the students to concepts, principles, theory, types, tools, and techniques of software testing. Students will learn fundamentals of testing principles, approaches to testing (specification-based and structural), input space analysis, and designing for testability. Moreover, students will gain sufficient breadth in testing types - targeting both functional requirements (unit and end-to-end testing) and quality attributes (security, performance testing). In its second half, the course syllabus introduces DevOps practices through a project component organized around micro services - an architectural style that gained significant adoption in the industry for building scalable and maintainable systems. Students will get practical experience with Docker to containerize such software and streamline testing automation. Each team will build various types of tests for one of the services whose quality they safeguard and put in place a resource-efficient and reliable testing process.

Last Modified: 2024-06-28 10:38AM

Semesters offered:

  • Fall 2024
  • Fall 2023
  • Fall 2021
  • Fall 2020
  • Fall 2019
  • Fall 2018
  • Fall 2017
  • Fall 2016
  • Fall 2015
  • Spring 2015