Testing and Dynamic Analysis
|Hour/sem||Lectures||Sem. Exercises||Lab. exercises||Comp. exercises||Other|
|Guarantee:||Smrčka Aleš, Ing., Ph.D., DITS|
|Lecturer:||Smrčka Aleš, Ing., Ph.D., DITS|
|Instructor:||Smrčka Aleš, Ing., Ph.D., DITS|
|Faculty:||Faculty of Information Technology BUT|
|Department:||Department of Intelligent Systems FIT BUT|
| || ||To provide an overview of verification stage of development of a software system, the main focus is on dynamic analysis of software. To get practical skills with software testing required by a QA engeneer. Mastering development of automatic tests of different aspects of verified programs. To get basic knowledge of test planning and management.|
| || ||Test specification. Coverage criteria for source code (EC, NC, EPC, PPC). Logic coverage criteria (PC, CC, MCDC). Input space partitioning. Input space coverage criteria. Black-box dynamic analysis. Tracing of shared resource usage. Testing multi-threaded applications. Testing network applications. Testing GUI. Performance testing. Test management.|
|Knowledge and skills required for the course:|
| || ||formal languages and compilers, algorithms, operating systems|
|Subject specific learning outcomes and competences:|
| || ||Student knows fundamental techniques of software testing. Student is able to develop effective test suites of a software product. Student can analyse source codes, knows typical locations in a source code which are sensitive to be flawed. Student can analyse behaviour of a program with finite or infinite runs with no explicit knowledge of the source code. Student can test and/or analyse program communications, program performance, usage of shared resources, manipulation with data storages, and a function of graphical user interface. Student is able to find bugs in programs in a systematic way. Student knows fundamentals of test planning and management. Student acquaints with English terminology in the subject.|
|Generic learning outcomes and competences:|
| || ||Student will learn through project excercise how to analyse a software product to rise its quality. Student gain a knowledge how to create a test suite and how to find bugs in programs.|
|Syllabus of lectures:|
- Role of testing and dynamic analysis in development of a computer-based system. Introduction to terms in testing. Models of testing process. Test requirements, test specification, and test plan. Test-driven development.
- Subsystem testing. Coverage criteria for source code. Control flow graph. Graph coverage criteria. Data flow coverage criteria.
- Relation of a graph coverage and the source code. Relation of a data flow coverage and the source code.
- Logic coverage criteria.
- Input domain modelling. Input space coverage criteria.
- Syntax-based testing.
- Test case development based on specification requirements of a system. Testing according to V-model.
- Combining test cases. Test-based bug localization. Bug-reporting.
- Black-box dynamic program analysis. Analysis based on tracing library and system calls. Constructing data and control flow graph. Constraints of event sequence.
- Virtualization in dynamic analysis. Analysis of shared resource usage. Coverage criteria based on shared resource usage.
- Testing multi-threaded applications.
- Testing network applications. Testing graphical user interface and its automation. Testing non-functional requirements.
- Performance testing. Test planning and management. Brief introduction to static analysis.
|Syllabus - others, projects and individual work of students:|
- Design of a test suite satisfying specified test criteria for a given software project.
- Implementation of a software analyzer according to the specification.
- P. Ammann, J. Offutt. Introduction to Software Testing. Cambridge University Press, 2008, 322 p. ISBN 978-0-511-39330-3.
- G. J. Myers. The Art of Software Testing, 2nd edition. John Wiley & Sons, 2004, 234 p., ISBN 0-471-46912-2.
- C. Kaner, J. Bach, B. Pettichord. Lessons Learned in Software Testing: A Context-Driven Approach. Wiley Computer Publishing, 2002, 286 p., ISBN 0-471-08112-4.
- B. Marick. The Craft Of Software Testing, Subsystem Testing, Prentice Hall PTR, 1995, ISBN 0-13-177411-5.
- A. Spillner, T. Linz, H. Schaefer. Software Testing Foundations, 2nd ed., 2007, 296 p., ISBN 978-1-9339-5278-9.
- P. Farrell-Vinay. Manage Software Testing. Auerbach Publications, 2008, 537 p., ISBN 978-0-8493-9383-9.
| || ||Realization and defence of projects in due dates.|
| || ||Students can obtain up to 40 points from 2 projects and up to 60 points from the final exam.|
| || ||For receiving the credit and thus for entering the exam, students have to earn at least 15 points from all projects.|