Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Dynamic program analysis

From Wikipedia, the free encyclopedia
Analysis of software performed when running a program
This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Dynamic program analysis" – news ·newspapers ·books ·scholar ·JSTOR
(February 2009) (Learn how and when to remove this message)
Program execution
General concepts
Types of code
Compilation strategies
Notable runtimes
Notable compilers & toolchains

Dynamic program analysis is the act ofanalyzing software that involves executing aprogram – as opposed tostatic program analysis, which does not execute it.

Analysis can focus on different aspects of the software including but not limited to:behavior,test coverage,performance andsecurity.

To be effective, the target program must be executed with sufficient test inputs[1] to address the ranges of possible inputs and outputs.Software testing measures, such ascode coverage, and tools such asmutation testing, are used to identify where testing is inadequate.

Types

[edit]

Functional testing

[edit]
Main article:Software testing

Functional testing includes relatively commonprogramming techniques such asunit testing,integration testing andsystem testing.[2]

Code coverage

[edit]

Computing thecode coverage of a test identifies code that is not tested.

Although this analysis identifies code that is not tested. It does not determine whether tested coded isadequately tested. Code can be executed even if the tests do not actually verify correct behavior.

  • Gcov is theGNU source code coverage program.
  • VB Watch injects dynamic analysis code into Visual Basic programs to monitorcode coverage, call stack, execution trace, instantiated objects and variables.

Dynamic testing

[edit]
Main article:Dynamic testing

Dynamic testing involves executing a program on a set of test cases.

Memory error detection

[edit]

Fuzzing

[edit]
Main article:Fuzzing

Fuzzing is a testing technique that involves executing a program on a wide variety of inputs; often these inputs are randomly generated (at least in part).Gray-box fuzzers use code coverage to guide input generation.

Dynamic symbolic execution

[edit]
Main article:Concolic testing

Dynamic symbolic execution (also known asDSE or concolic execution) involves executing a test program on a concrete input, collecting the path constraints associated with the execution, and using aconstraint solver (generally, anSMT solver) to generate new inputs that would cause the program to take a different control-flow path, thus increasing code coverage of the test suite.[3] DSE can be considered a type offuzzing ("white-box" fuzzing).

Dynamic data-flow analysis

[edit]

Dynamic data-flow analysis tracks the flow of information fromsources tosinks. Forms of dynamic data-flow analysis include dynamic taint analysis and evendynamic symbolic execution.[4][5]

Invariant inference

[edit]

Daikon is an implementation of dynamic invariant detection. Daikon runs a program, observes the values thatthe program computes, and then reports properties that were true over the observed executions, and thus likely true over all executions.

Security analysis

[edit]

Dynamic analysis can be used to detect security problems.

  • IBM Rational AppScan is a suite of application security solutions targeted for different stages of the development lifecycle. The suite includes two main dynamic analysis products: IBM Rational AppScan Standard Edition, and IBM Rational AppScan Enterprise Edition. In addition, the suite includes IBM Rational AppScan Source Edition—a static analysis tool.

Concurrency errors

[edit]
  • ParasoftJtest uses runtime error detection to expose defects such asrace conditions, exceptions, resource and memory leaks, and security attack vulnerabilities.
  • Intel Inspector performs run-time threading and memory error analysis in Windows.
  • ParasoftInsure++ is a runtime memory analysis and error detection tool. Its Inuse component provides a graphical view of memory allocations over time, with specific visibility of overall heap usage, block allocations, possible outstanding leaks, etc.
  • Google's Thread Sanitizer is a data race detection tool. It instrumentsLLVM IR to capture racy memory accesses.

Program slicing

[edit]
Main article:Program slicing

For a given subset of a program’s behavior, program slicing consists of reducing the program to the minimum form that still produces the selected behavior. The reduced program is called a “slice” and is a faithful representation of the original program within the domain of the specified behavior subset.Generally, finding a slice is an unsolvable problem, but by specifying the target behavior subset by the values of a set of variables, it is possible to obtain approximate slices using a data-flow algorithm. These slices are usually used by developers during debugging to locate the source of errors.

Performance analysis

[edit]

Mostperformance analysis tools use dynamic program analysis techniques.[citation needed]

Techniques

[edit]

Most dynamic analysis involvesinstrumentation or transformation.

Since instrumentation can affect runtime performance, interpretation of test results must account for this to avoid misidentifying a performance problem.

Examples

[edit]

DynInst is a runtime code-patching library that is useful in developing dynamic program analysis probes and applying them to compiled executables. Dyninst does not requiresource code or recompilation in general, however, non-stripped executables and executables with debugging symbols are easier to instrument.

Iroh.js is a runtime code analysis library forJavaScript. It keeps track of the code execution path, provides runtime listeners to listen for specific executed code patterns and allows the interception and manipulation of the program's execution behavior.

See also

[edit]

References

[edit]
  1. ^Khatiwada, Saket; Tushev, Miroslav; Mahmoud, Anas (2018-01-01)."Just enough semantics: An information theoretic approach for IR-based software bug localization".Information and Software Technology.93:45–57.doi:10.1016/j.infsof.2017.08.012.
  2. ^Myers, G. J. (1979).The Art of Software Testing. John Wiley and Sons.
  3. ^Chen, Ting; Zhang, Xiao-song; Guo, Shi-ze; Li, Hong-yuan; Wu, Yue (2013-09-01)."State of the art: Dynamic symbolic execution for automated test generation".Future Generation Computer Systems. Including Special sections: Cyber-enabled Distributed Computing for Ubiquitous Cloud and Network Services & Cloud Computing and Scientific Applications — Big Data, Scalable Analytics, and Beyond.29 (7):1758–1773.doi:10.1016/j.future.2012.02.006.ISSN 0167-739X.
  4. ^Chen, Ju; Han, Wookhyun; Yin, Mingjun; Zeng, Haochen; Song, Chengyu; Lee, Byoungyoung; Yin, Heng; Shin, Insik (2022).{SYMSAN}: Time and Space Efficient Concolic Execution via Dynamic Data-flow Analysis. pp. 2531–2548.ISBN 978-1-939133-31-1.
  5. ^Chang, Walter; Streiff, Brandon; Lin, Calvin (2008-10-27)."Efficient and extensible security enforcement using dynamic data flow analysis".Proceedings of the 15th ACM conference on Computer and communications security. CCS '08. New York, NY, USA: Association for Computing Machinery. pp. 39–50.doi:10.1145/1455770.1455778.ISBN 978-1-59593-810-7.S2CID 6888893.
Test levels
Test types,
techniques,
tactics
[x]-box
style
See also
Retrieved from "https://en.wikipedia.org/w/index.php?title=Dynamic_program_analysis&oldid=1318663270"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp