tailieunhanh - Lecture Software testing and analysis: Chapter 19 - Mauro Pezzè, Michal Young

After studying this chapter you will be able to: Understand how automated program analysis complements testing and manual inspection; understand fundamental approaches of a few representative techniques (Lockset analysis, pointer analysis, symbolic testing, dynamic model extraction; recognize the same basic approaches and design trade-offs in other program analysis techniques). | Program Analysis (c) 2007 Mauro Pezzè & Michal Young Ch 19, slide 1 Learning objectives • Understand how automated program analysis complements testing and manual inspection – Most useful for properties that are difficult to test • Understand fundamental approaches of a few representative techniques – Lockset analysis, pointer analysis, symbolic testing, dynamic model extraction: A sample of contemporary techniques across a broad spectrum – Recognize the same basic approaches and design trade-offs in other program analysis techniques (c) 2007 Mauro Pezzè & Michal Young Ch 19, slide 2 Why Analysis • Exhaustively check properties that are difficult to test – Faults that cause failures • rarely • under conditions difficult to control – Examples • race conditions • faulty memory accesses • Extract and summarize information for inspection and test design (c) 2007 Mauro Pezzè & Michal Young Ch 19, slide 3 Why automated analysis • Manual program inspection – effective in finding faults difficult to detect with testing – But humans are not good at • repetitive and tedious tasks • maintaining large amounts of detail • Automated analysis – replace human inspection for some class of faults – support inspection by • automating extracting and summarizing information • navigating through relevant information (c) 2007 Mauro Pezzè & Michal Young Ch 19, slide 4 Static vs dynamic analysis • Static analysis – examine program source code • examine the complete execution space • but may lead to false alarms • Dynamic analysis – examine program execution traces • no infeasible path problem • but cannot examine the execution space exhaustively (c) 2007 Mauro Pezzè & Michal Young Ch 19, slide .