Title:

Automated Testing and Dynamic Analysis

Code:ATA
Ac.Year:2019/2020
Sem:Summer
Curriculums:
ProgrammeField/
Specialization
YearDuty
MITAINADE-Elective
MITAINBIO-Elective
MITAINCPS-Elective
MITAINEMB-Elective
MITAINGRI-Elective
MITAINHPC-Elective
MITAINIDE-Elective
MITAINISD-Elective
MITAINISY-Elective
MITAINMAL-Elective
MITAINMAT-Elective
MITAINNET-Elective
MITAINSEC-Elective
MITAINSEN-Compulsory
MITAINSPE-Elective
MITAINVER-Compulsory
MITAINVIZ-Elective
Language of Instruction:Czech
Credits:5
Completion:examination (written&oral)
Type of
instruction:
Hour/semLecturesSeminar
Exercises
Laboratory
Exercises
Computer
Exercises
Other
Hours:2600026
 ExamsTestsExercisesLaboratoriesOther
Points:7000030
Guarantor:Smrčka Aleš, Ing., Ph.D. (DITS)
Deputy guarantor:Rogalewicz Adam, doc. Mgr., Ph.D. (DITS)
Lecturer:Rogalewicz Adam, doc. Mgr., Ph.D. (DITS)
Smrčka Aleš, Ing., Ph.D. (DITS)
Faculty:Faculty of Information Technology BUT
Department:Department of Intelligent Systems FIT BUT
Schedule:
DayLessonWeekRoomStartEndLect.Gr.Groups
FrilecturelecturesA113 10:0011:501MIT 2MIT xx
 
Learning objectives:
  To provide an overview of different approaches to software testing. The focus is put on automated software verification. To gain practical skill of tracing the program run and subsystem communication. To gain practical skill of software testing required by a quality assurance analyst.
Description:
  Coverage criteria. Control flow graph. Unit testing. Test doubles. Requirement-based testing. Bug localisation. Data-driven testing. Automatic generation of test data. Fuzz testing. Performance testing. Run-time monitoring. Testing of parallel programs. Test management. Reliability of test reports.
Why is the course taught:
  Software testing is forefront in quality assurance. Since software designs rapidly increase in their complexity, there is a strong need for automation of each development phase, including quality assurance. Students will learn different approaches to automation of software testing and dynamic analysis based on tracing of program runs. Students are needed members of every development teams for their knowledge gained in this course.
Syllabus of lectures:
 
  1. Model-based testing I
    • Control flow graph, Interprocedural CFG.
    • Coverage-driven generation of test cases.
  2. Model-based testing II
    • Automation of unit tests.
    • xUni test patterns.
  3. Test fixture and test doubles.
  4. Requirement based testing.
    • Requirement classification.
    • Tracebility.
    • Automation in Behaviour-driven development.
  5. Bug localization.
  6. Data-driven testing I
    • Combinatorial testing.
    • Test data minimization.
    • API testing.
    • Systematic generation of test data.
    • Mutation testing.
  7. Data-driven testing II
    • Fuzz testing
  8. Performance testing
    • Performance parameters.
    • Types and processes of performance testing.
  9. Run-time verification I
    • Low-level tracing.
  10. Run-time verification II
    • Test properties, temporal properties, parametric properties..
    • Program instrumentation.
  11. Testing of parallel programs I
    • Concurrency bug classification.
    • Contracts for concurrency.
    • Systematic vs. random testing.
    • Noise injection methods.
  12. Testing of parallel programs II
    • Atomrace and Eraser algorithms.
    • Vector clocks.
    • Fasttrack algorithm.
  13. Test management
    • Test prioritisation.
    • Test suite evaluation. Test flakiness.
    • Test reports. Reliability of reports. Accuracy, Precision, Recall, F1.
Syllabus - others, projects and individual work of students:
 
  1. Design of automated test suite with knowledge of source code and/or requirements.
  2. Implementation of run-time monitor.
Fundamental literature:
 
  • P. Ammann, J. Offutt. Introduction to Software Testing. Cambridge University Press, 2008, 322 p. ISBN 978-0-511-39330-3.
  • G. J. Myers, C. Sandler, T. Badgett. The Art of Software Testing, 3rd edition. John Wiley & Sons, 2011, 256 p., ISBN 978-1118031964.
Study literature:
 
  • A. Spillner, T. Linz, H. Schaefer. Software Testing Foundations : A Study Guide for the Certified Tester Exam. Rocky Nook Computing. 2014. p. 296. ISBN 9781937538422.
  • 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.
  • P. Farrell-Vinay. Manage Software Testing. Auerbach Publications, 2008, 537 p., ISBN 978-0-8493-9383-9.
Progress assessment:
  Two projects, 15 points each.
Exam prerequisites:
  Gain at least 15 points from the projects.
 

Your IPv4 address: 54.162.151.77