This unit covers the fundamental products, processes and techniques for system validation and verifications including testing methodologies, static program analysis and code quality measurement and monitoring. Open-source tools will be used to apply in practice knowledge learnt about software testing from a theoretical perspective. Inspection and testing methodologies, analysis of artefacts, robustness, performance analysis configuration management, quality assurance plan and standards, compliance, assessment, certification issues are covered. It shows how to predict, analyse and control defects in complex software systems.
At the completion of this unit students will have -
A knowledge and understanding of:
- the role of validation and verification methods in the system life cycle;
- key issues in software testing, testing levels and testing activities;
- testing techniques - based on testers experience - adhoc testing, exploratory testing - specification-based - equivalence partioning, boundary-value analysis, finite-state machine based, random testing - code-based - control-flow and data-flow technique - fault-based - error seeding, mutation testing - usage-based - reliability measures, operational profile - based on type of apps - web based, OO, component testing - selection and combination of techniques;
- test related measures - evaluation of software under test - fault density, types of faults - evaluation of tests done - criteria such as coverage, thoroughness; mutation score;
- empirical work, replication experiments vs case study.
Developed attitudes that enable them to:
- adhere to software quality engineering principles;
- recognise the importance of adhering to software engineering principles of Validation and Verification and standards in the design and development of test methods;
- have an understanding of inspection and debugging approaches, configuration management, performance, and quality standards issues.
Developed the skills to:
- use IDEs such as Eclipse, NetBeans and IntelliJ IDEA and unit testing with JUnit, build management tool such as Maven, continuous integration tool such as Hudson, and code quality monitoring tools such as Sonar and Cobertura, and other similar products to help detect software system defects;
- conduct continuous integration process for the application at unit, integration & system testing level with access to SVN, Hudson Continuous Integration (CI) server etc;
- appreciate how assertion mechanisms impact reasoning;
- be able to analyse and control defects in complex systems.
Examination (2 hours): 50%; In-semester assessment: 50%
FIT2004, FIT2024, FIT3042, FIT3077 and one of FIT2002 or FIT3086
or students must be enrolled in FIT Masters program at Monash