Software Testing, Verification and Validation
Keywords |
Classification |
Keyword |
OFICIAL |
Software Engineering |
Instance: 2024/2025 - 1S 
Cycles of Study/Courses
Acronym |
No. of Students |
Study Plan |
Curricular Years |
Credits UCN |
Credits ECTS |
Contact hours |
Total Time |
M.EIC |
48 |
Syllabus |
2 |
- |
6 |
39 |
162 |
Teaching Staff - Responsibilities
Teaching language
English
Objectives
The objective of this curricular unit is: familiarization with the terminology used in software testing; raising awareness of issues related to software quality; and exploring and practicing different Verification and Validation (V&V) techniques necessary for building quality software systems.Learning outcomes and competences
At the end of the course, students should be able to design and execute a Verification and Validation (V&V) plan. More specifically, students are expected to be able to:
- Plan a Verification and Validation strategy.
- Select the best software testing techniques and tools for a given context.
- Design and develop tests at different levels (e.g., unit, integration, system and acceptance).
- Test exceptional situations (e.g., boundary value analysis).
- Reflect on the limitations and quality of the tests developed.
- Use metrics to assess test quality (e.g., instruction coverage).
- Write maintainable test code, avoiding known issues (e.g., flakiness, unreadable, dependent, fat testing, etc.).
Working method
Presencial
Program
1. Introduction to Software Verification and Software Validation
2. Equivalence Class Partitioning / Category Partition and Boundary Value Analysis
3. Model-based Testing
4. Structural Testing (Line and Decision coverage) and Logical Coverage (Condition coverage and Modified Condition/Decision Coverage (MC/DC))
5. Mutation Testing
6. Test-Driven Development (TDD), Behavior-Driven Development (BDD) Testing, e Property-Based Testing (PBT)
7. Automatic test case generation with random, fuzzing, and search-based approaches
8. Automatic test case generation with artificial intelligence
9. Integration Testing, System Testing, Acceptance Testing, Performance Testing, Security Testing, and Regression Testing
10. Test management and documentation
11. Static Testing
Mandatory literature
Maurício Aniche;
Effective software testing, 2022. ISBN: 978-1-633-43993-1
Paul Ammann;
Introduction to software testing, 2016. ISBN: 978-1-107-17201-2
Paul C. Jorgensen;
Software Testing A Craftsman's Approach, 2013. ISBN: 978-1-466-56069-7
Dorothy Graham, Rex Black, Erik van Veenendaal;
Foundations of Software Testing: ISTQB Certification, 2020. ISBN: 978-1-473-76479-8
Ilene Burnstein;
Practical Software Testing, 2003. ISBN: 978-0-387-95131-7
Gordon Fraser and José Miguel Rojas; Software Testing, 2019. ISBN: 978-3-030-00262-6
Mark Utting;
Practical Model-Based Testing, 2007. ISBN: 978-0-12-372501-1
Tomek Kaczanowski; Bad Tests, Good Tests, 2013. ISBN: 978-8-393-84713-6
Complementary Bibliography
Kent Beck;
Test Driven Development: By Example, 2002. ISBN: 978-0-321-14653-3
Petar Tahchiev, Felipe Leme, Vincent Massol, and Gary Gregory; JUnit 4.8 In Action, 2010. ISBN: 978-1-935-18202-3
Tomek Kaczanowski; Practical Unit Testing with JUnit and Mockito, 2019. ISBN: 978-8-393-48939-8
Chak Shun Yu, Christoph Treude, Maurício Aniche; Comprehending Test Code: An Empirical Study, 2019. ISBN: 978-1-7281-3095-8
Michal Young and Mauro Pezzè; Software testing and analysis: process, principles, and techniques, 2008. ISBN: 978-0-471-45593-6
Teaching methods and learning activities
This curricular unit promotes the continuous involvement of students through the study, discussion and practical application of the topics presented. In order to contribute to continuous and autonomous learning, students carry out assignments throughout the semester. In addition to these assignments, students have to carry out a project where they apply the concepts presented, in particular, different V&V strategies and tools.
Theoretical classes are used to formally explain the concepts and fundamental aspects of V&V. Whenever possible, theoretical concepts are accompanied by the presentation and discussion of real practical cases.
Theoretical-practical classes are used to carry out exercises, apply V&V techniques, use/experiment various testing tools and to support the implementation of the final project.
keywords
Technological sciences > Engineering > Computer engineering
Technological sciences > Technology > Computer technology > Software technology
Evaluation Type
Distributed evaluation with final exam
Assessment Components
Designation |
Weight (%) |
Exame |
60,00 |
Trabalho prático ou de projeto |
40,00 |
Total: |
100,00 |
Amount of time allocated to each course unit
Designation |
Time (hours) |
Estudo autónomo |
100,00 |
Frequência das aulas |
39,00 |
Trabalho laboratorial |
23,00 |
Total: |
162,00 |
Eligibility for exams
To successfully complete this curricular unit, students must obtain:
- minimum grade of 47.5% in the project (P)
- minimum grade of 47.5% in the final exam (E)
Calculation formula of final grade
The final ranking is calculated as follows: P x 40% + E x 60%
P: project
E: final exam
Special assessment (TE, DA, ...)
Students with a special status (e.g., part-time, athletic, etc) which are allowed to not attend classes, must complete all components successfully as any other regular student.
Classification improvement
- The classification of the final project can be improved in the next edition of the course.
- The classification of the final exam can be improved in the appeal exam.