ST: Software Testing

Welcome to Software Testing

The software testing course is entriely structured accoring to the Learning Outcomes for the course.  The course is assed entirely by one coursework where you will demonstrate how you have achieved each of the learning outcomes.


Learning Outcomes

On successful completion of this course, you should be able to: 

  • LO1. Analyze requirements to determine appropriate testing strategies.
  • LO2. Design and implement comprehensive test plans with instrumented code.
  • LO3. Apply a wide variety of testing techniques and compute test coverage and yield according to a variety of criteria.
  • LO4. Evaluate the limitations of a given testing process, using statistical methods where appropriate, and summarise outcomes.
  • LO5. Conduct reviews and inspections and design and implement automated testing processes.


Should I choose Software Testing? 

This brief video that points you to some resources and questions that might help you choose. You can find it here in Media Hopper Create.  It is less than three minutes long and a quick look will either suggest you might be interested in the course or convince you never to take the course!

Course Outline

Software testing is embedded in all software development processes and in recent years with the widespread adoption of DevOps and Continuous Integration, Delivery and Deployment, testing tools, automated testing, and the use of operational data in testing have become increasingly important. 

The course syllabus includes the following topics:
 

  • Testing techniques and principles: Defects vs. failures, equivalence classes, boundary testing.
  • Types of defects.
  • Black-box vs. Structural testing.
  • Testing strategies: Unit testing, integration testing, profiling, test driven development.
  • State based testing; configuration testing; compatibility testing; web site testing.
  • Alpha, beta, and acceptance testing.
  • Coverage criteria.
  • Test instrumentation and tools.
  • Developing test plans.
  • Managing the testing process: Development Lifecycles
  • Problem reporting, tracking, and analysis. 


Relevant QAA Computing Curriculum Sections: Software Engineering

Class members will take the development of tests for a small software project as their focus. For students taking the Informatics Large Practical course we recommend they take the software developed there as their focus. However, students are free to choose other software projects if they prefer. The goal is to gain experience of the full spectrum of testing techniques, test planning, testing process and demonstrate that experience on the chosen software project. 

Class members will work in groups of 10 and will be encouraged to share experience by providing comment and reviews of others work. Weekly tutorials will be structured around different aspects of the course and the development of a portfolio describing the work done on the selected software project.

Each class member will develop an individual portfolio demonstrating they have achieved the learning outcomes of the course. This will use work on the testing of their chosen software project as evidence, augmented by appropriate other evidence. Acceptable kinds of evidence demonstrating achievement of the learning outcomes are diverse so part of the assessment is the design of the portfolio in advance of its construction. There are two or three "standard" portfolio designs but class members are encouraged to develop their own approaches that take account of their personal strengths and weaknesses. Portfolio designs will include specific assessment criteria. 

Each week there will be a group meeting, some recorded material covering reading and lecture material in the course together with two in-person lectures that will be recorded.  Guest lectures given by a practitioner on their experience of testing in different contexts may illustrate the application of the concepts covered in the course in the development of a real-world product.

License
All rights reserved The University of Edinburgh