Testing and Dynamic Analysis

Public info:http://www.fit.vutbr.cz/study/courses/ITS/public/
Completion:accreditation+exam (written)
Type of
Hour/semLecturesSem. ExercisesLab. exercisesComp. exercisesOther
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
Algorithms (IAL), DIFS
Formal Languages and Compilers (IFJ), DIFS
Operating Systems (IOS), DITS
Learning objectives:
  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:
  1. 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.
  2. Subsystem testing. Coverage criteria for source code. Control flow graph. Graph coverage criteria. Data flow coverage criteria.
  3. Relation of a graph coverage and the source code. Relation of a data flow coverage and the source code.
  4. Logic coverage criteria.
  5. Input domain modelling. Input space coverage criteria.
  6. Syntax-based testing.
  7. Test case development based on specification requirements of a system. Testing according to V-model.
  8. Combining test cases. Test-based bug localization. Bug-reporting.
  9. Black-box dynamic program analysis. Analysis based on tracing library and system calls. Constructing data and control flow graph. Constraints of event sequence.
  10. Virtualization in dynamic analysis. Analysis of shared resource usage. Coverage criteria based on shared resource usage.
  11. Testing multi-threaded applications.
  12. Testing network applications. Testing graphical user interface and its automation. Testing non-functional requirements.
  13. Performance testing. Test planning and management. Brief introduction to static analysis.
Syllabus - others, projects and individual work of students:
  1. Design of a test suite satisfying specified test criteria for a given software project.
  2. Implementation of a software analyzer according to the specification.
Fundamental literature:
  • P. Ammann, J. Offutt. Introduction to Software Testing. Cambridge University Press, 2008, 322 p. ISBN 978-0-511-39330-3.
Study literature:
  • 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.
Controlled instruction:
  Realization and defence of projects in due dates.
Progress assessment:
  Students can obtain up to 40 points from 2 projects and up to 60 points from the final exam.
Exam prerequisites:
  For receiving the credit and thus for entering the exam, students have to earn at least 15 points from all projects.