CS6340 Exam Notes - Software Analysis and Testing

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/52

flashcard set

Earn XP

Description and Tags

Flashcards on Software Analysis and Testing

Last updated 11:28 PM on 6/11/25
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai

No analytics yet

Send a link to your students to track their progress

53 Terms

1
New cards

Program Analysis

A body of techniques and tools that automatically discover useful properties or facts about computer programs.

2
New cards

Dynamic Program Analysis

Analyzing a program during its execution.

3
New cards

Purify

Detects memory access errors like array bounds violations during dynamic analysis.

4
New cards

Eraser

Identifies data races in multithreaded programs during dynamic analysis.

5
New cards

Valgrind

Detects memory leaks, use-after-free bugs, etc. during dynamic analysis.

6
New cards

Daikon

Dynamically infers program invariants during dynamic analysis.

7
New cards

Static Program Analysis

Examines source code or intermediate representations without executing the program.

8
New cards

Lint, FindBugs, Coverity

Detect suspicious code patterns and possible bugs during static analysis.

9
New cards

Infer (by Facebook)

Identifies memory leaks and null pointer issues in Android and iOS apps during static analysis.

10
New cards

SLAM (Microsoft Research)

Verifies that Windows device drivers correctly use the Windows kernel API during static analysis.

11
New cards

ESC/Java

Checks correctness properties (invariants) of Java programs during static analysis.

12
New cards

Hybrid Program Analysis

Combines both static and dynamic analysis.

13
New cards

Program Invariant

A property or fact that holds true at a particular program point during all possible executions.

14
New cards

Control Flow Graph (CFG)

A representation of all paths that might be traversed through a program during its execution.

15
New cards

Concrete State

Exact variable values at runtime (available in dynamic analysis).

16
New cards

Abstract State

Approximate or symbolic representations of values (used in static analysis).

17
New cards

Termination

The analysis process should eventually halt.

18
New cards

Completeness

An analysis is complete if it finds all possible issues, but static analysis is rarely complete because it relies on approximation.

19
New cards

Soundness

An analysis is sound if all the reported facts are guaranteed to be true across all program executions.

20
New cards

False Positive

Analysis wrongly flags correct code as buggy.

21
New cards

False Negative

Analysis misses an actual issue in the code.

22
New cards

Testing

Checks whether the actual behavior matches the intended behavior.

23
New cards

Consistency Checking (in Testing)

Verify consistency between implementation and specification.

24
New cards

Black-Box Testing

Tests the external behavior of the software; does not require code access or knowledge of internal structure.

25
New cards

White-Box Testing

Leverages knowledge of internal code structure to design tests; helps with path coverage, checking all branches, loops, conditions, etc.

26
New cards

Pre-Condition

What must be true before a function executes.

27
New cards

Post-Condition

What must be true after the function executes, if the pre-condition held.

28
New cards

Frame Conditions

Assumptions about unchanged parts of the program.

29
New cards

Code Coverage Metrics

Measures how much of the code has been exercised.

30
New cards

Function Coverage

Which functions were executed?

31
New cards

Statement Coverage

Which lines were run?

32
New cards

Branch Coverage

Were all decision branches taken?

33
New cards

Basic Block Coverage

Execution of straight-line code sequences.

34
New cards

Competent Programmer Hypothesis

Real programs are close to correct, so small changes (mutants) are meaningful tests.

35
New cards

Mutation Testing

Introduce small changes (mutants) to code (e.g., change x > 0 to x < 0).

36
New cards

Equivalent Mutants

A mutant behaves identically to the original for all inputs.

37
New cards

Korat

Automatically generate small, valid, and diverse test inputs satisfying pre-conditions.

38
New cards

Randoop

Automatically generate valid method call sequences that explore new object states and violate contracts if bugs exist; uses execution feedback to guide generation of new test sequences.

39
New cards

Pointer Aliasing

Occurs when the same memory address is referred to through different variables.

40
New cards

May-Alias Analysis (Pointer Analysis)

Assumes that two variables may point to the same object; initially, all pairs are assumed to alias, and analysis removes false pairs as it gathers more information.

41
New cards

Must-Alias Analysis

Assumes two variables must point to the same object and builds constraints based on this.

42
New cards

Heap Abstraction

How to model dynamically allocated memory (heap).

43
New cards

Allocation-Site Based Heap Abstraction

One abstract object per allocation site (new, malloc).

44
New cards

Type-Based Heap Abstraction

One abstract object per type.

45
New cards

Heap-Insensitive Heap Abstraction

One abstract object for entire heap.

46
New cards

Flow-Insensitive

Ignores the order of statements; performs weak updates (accumulates new facts without removing old ones).

47
New cards

Flow-Sensitive

Considers the exact flow of control; performs strong updates (can remove old facts).

48
New cards

Context-Insensitive

Analyzes each procedure once.

49
New cards

Context-Sensitive

Analyzes each procedure per abstract calling context.

50
New cards

Arrays (in Pointer Analysis)

Use a single field [ * ] to represent all elements; loses ability to distinguish between elements.

51
New cards

Field-Insensitive

All fields of a record merged.

52
New cards

Field-Based

Same-named fields across records are merged.

53
New cards

Field-Sensitive

Most precise — each field of each object is separate.