Civil Rights
Movements, leaders, victories and the continuing fight for equality.
Explore the people, places, events, achievements, struggles and stories that shaped our journey.
Movements, leaders, victories and the continuing fight for equality.
Innovation, patents, science, technology and world-changing contributions.
Pioneers, champions, Negro Leagues, records, activism and excellence.
Meet the people whose lives, choices and achievements shaped the journey.
Black towns, communities, institutions and places where history happened.
Moments that changed communities, movements, institutions and the nation.
Katherine Johnson’s mathematical calculations helped guide some of America’s most important early space missions while she confronted the racial and gender barriers faced by Black women in twentieth-century America.
MORE →Reflects the personal views, recollections, and perspective of the author, Mike Davis.
This is a personal recollection on the Move fire on May 13, 1985
This article needs more citations. (February 2009) |
| Program execution |
|---|
| General concepts |
| Types of code |
| Compilation strategies |
| Notable runtimes |
|
| Notable compilers & toolchains |
|
Dynamic program analysis is the act of analyzing software that involves executing a program – as opposed to static 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 and security.
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 as code coverage, and tools such as mutation testing, are used to identify where testing is inadequate.
Functional testing includes relatively common programming techniques such as unit testing, integration testing and system testing.[2]
Computing the test code coverage identifies code that is not tested.
Although this analysis identifies code that is not tested, it does not determine whether the tested code is adequately tested. Code can be executed even if the tests do not actually verify correct behavior.
Dynamic testing involves executing a program on a set of test cases.
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 (also known as DSE or concolic execution) involves executing a test program on a concrete input, collecting the path constraints associated with the execution, and using a constraint solver (generally, an SMT 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 of fuzzing ("white-box" fuzzing).
Dynamic data-flow analysis tracks the flow of information from sources to sinks. Forms of dynamic data-flow analysis include dynamic taint analysis and even dynamic symbolic execution.[4][5]
Daikon is an implementation of dynamic invariant detection. Daikon runs a program, observes the values the program computes, and then reports properties that were true during the observed executions and are thus likely true over all executions.
Dynamic analysis can be used to detect security problems.
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 based on 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.
Most performance analysis tools use dynamic program analysis techniques.[6]
Most dynamic analysis involves instrumentation or transformation.
Since instrumentation can affect runtime performance, interpretation of test results must account for this to avoid misidentifying a performance problem.
DynInst is a runtime code-patching library useful for developing dynamic program analysis probes and applying them to compiled executables. Dyninst does not require source 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 for JavaScript. It keeps track of the code execution path, provides runtime listeners to detect specific executed code patterns and allows interception and manipulation of the program's execution behavior.
Source: Wikipedia. Article content is retrieved live through the MediaWiki API.
Mutation testing (or mutation analysis or program mutation) is used to design new software tests and evaluate the quality of existing software tests. Mutation testing involves making small changes to the program being tested. Each changed version is called a mutant. A test detects, and therefore rejects, a mutant upon test failure –– failure indicating that the test successfully discerned that the behaviour of the mutant differs from the behaviour of the original code. Rejection is called killing the mutant. The value of a test suite is measured by the percentage of mutants that it kills. The test suite can then be improved by adding new tests designed to kill additional mutants. Mutant creation is done using well-defined mutation operators that either mimic typical programming errors (such as using the wrong operator or variable name) or force the creation of valuable tests (such as dividing each expression by zero). Mutation testing is a form of white-box testing. Its purpose is to help the tester develop effective regression tests by locating weaknesses in the test data used to test the program and discovering sections of the tested program's code that are seldom or never accessed during execution.
Jeff Offutt is a professor of Software Engineering at the University at Albany, SUNY. His primary interests are software testing and analysis, web software engineering, and software evolution and change-impact analysis. He is the author of Introduction to Software Testing with Paul Ammann published by Cambridge University Press. He is the editor-in-chief of Software Testing, Verification and Reliability with Robert M. Hierons. He also helped create the IEEE International Conference on Software Testing, Verification, and Reliability and was the first chair of its steering committee. In 2019, Offutt received the Outstanding Faculty Award from the State Council of Higher Education for Virginia, the highest honor for faculty at Virginia's public and private colleges and universities. The award recognizes accomplishments in teaching, research, and public service. He won the Teaching Excellence Award, Teaching with Technology, from George Mason University in 2013. Offutt is known for many fundamental contributions to the field of software testing, in particular mutation testing, model-based testing, bypass testing of web applications, and automatic test data generation. Dr. Offutt received his undergraduate degree in mathematics and data processing in 1982 (double major) from Morehead State University, and master's (1985) and PhD (1988) in computer science from the Georgia Institute of Technology. He was on the faculty of Clemson University before joining George Mason in 1992. He is the son of Andrew J. Offutt and brother of Chris Offutt. He is married to Jian and has three children, Stephanie, Joyce, and Andrew.
Dynamic program analysis is the act of analyzing software that involves executing a program – as opposed to static 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 and security. To be effective, the target program must be executed with sufficient test inputs to address the ranges of possible inputs and outputs. Software testing measures, such as code coverage, and tools such as mutation testing, are used to identify where testing is inadequate.
Dr Martin R. Woodward (28 May 1948 – 27 October 2006) was a British computer scientist who made leading contributions in the field of in software testing. Martin Woodward was an academic in the Department of Computer Science at the University of Liverpool in England. As part of his leading role in software testing, for 13 years, until shortly before his death, Woodward was the Chief Editor of the journal Software Testing, Verification & Reliability (STVR), a major international journal in the field of software testing. Woodward undertook software testing research in areas such as mutation testing, maturity models, testability, etc.
Before the 1921 destruction of Tulsa’s Greenwood District, Black residents had created a remarkable center of business and community life. The district included stores, professional offices, entertainment venues and homes owned by Black citizens. Understanding Greenwood means learning what was built—not only what was burned.
MORE →The Greenwood District.