Software Analysis and Testing
Software Static and Dynamic Analysis
Static analysis checks the software without running it (like checking spelling), while dynamic analysis checks
while the program runs (like testing how it works).
Code Inspections
A group checks the code to find mistakes before running it. It's like proofreading an essay.
Software Testing Fundamentals
Testing is checking if the software works properly and meets user needs.
Software Test Process
It includes planning, creating test cases, running them, and checking the results.
Testing Levels
Testing is done at different stages: Unit (small parts), Integration (combined parts), System (whole app), and
Acceptance (by user).
Test Criteria
These are rules to decide if a test passed or failed.
Software Analysis and Testing
Test Case Design
Creating inputs and steps to check if the software behaves as expected.
Test Oracles
They tell us what the correct output should be so we can compare it with actual output.
Test Techniques
Different ways to test like using input/output (Black-Box) or looking at code (White-Box).
Black-Box Testing
Testing the software from outside, without knowing how it works inside.
White-Box Unit Testing
Testing the code by knowing how it works inside. Usually done by developers.
Unit Testing Frameworks
Tools that help test individual parts of code like JUnit (Java), PyTest (Python).
Integration Testing
Software Analysis and Testing
Checking if different parts of the software work together properly.
System Testing and Other Specialized Testing
Testing the whole system. Specialized tests include performance, security, usability etc.
Test Plan
A document that explains what to test, how, when, and who will do it.
Test Metrics
Numbers that help measure test effectiveness like number of bugs found.
Testing Tools
Software like Selenium, JUnit, etc. that help in testing automatically or manually.
Introduction to Object-Oriented Analysis and Design
OO analysis focuses on objects (real-world things) and how they interact. Design organizes these into
software structure.
Comparison with Structured Software Engineering
Software Analysis and Testing
Structured engineering focuses on functions and processes. OO focuses on objects and data. OO is more
flexible and reusable.