Software Development Lifecycle and Testing Strategies
Software Development Lifecycle
Phase Components: The software development lifecycle consists of several key phases:
Planning
Maintenance
Implementation
Testing
Requirements Analysis
Design
The Implementation phase is highlighted as the most relevant to this chapter.
Implementation Phase
Definition: This phase involves the actual coding of the software system, based on detailed design documents and requirements that were established in earlier stages.
Key Elements in Implementation:
Refined class diagrams
Class skeletons
Interface designs
System architecture
Object persistence and data modeling details
Key Aspects of the Implementation Phase
Coding: Developers write code following design specifications:
Implement the algorithms, data structures, user interfaces, and functionalities as outlined in design documents.
Unit Testing: Conducted by developers to ensure individual code units function correctly.
Each function is tested in isolation to verify performance against expectations.
Debugging: Involves identifying and correcting bugs, errors, or issues within the code.
Version Control: Utilizes systems to manage code changes, track revisions, and facilitate collaboration among team members.
Implementation Style
Coding Experience:
Programmers choose languages and environments based on collective experience within the team.
Emphasis on writing simple and readable code:
Shorter code tends to be simpler.
Fewer decisions lead to simpler logic.
Avoid excessive nesting of logic.
Implementation Approaches
Component Organization: System components need to be effectively organized and divided.
Design Generation: Programmers will go through the full design to generate complete code.
Approach Selection: Various approaches exist for organizing implementation; selection depends on multiple factors, including advantages and disadvantages of each approach.
Implementation Plan
Purpose: Specifies the implementation strategy, divides the project into phases, and sets schedules for each:
Phases Include:
Coding
Unit testing
Functional testing
Integration testing
User testing (if applicable)
Next Steps After Implementation
Verification: The written code requires verification for correctness through several testing methods:
Unit Testing
Functional Testing
Integration Testing
System Testing
Validation: Validate against collected requirements and design documentation.
Software Testing Strategies
Testing Definition: A systematic process for identifying software errors by executing software in controlled environments and analyzing results prior to deployment.
Process Steps:
Development of test cases
Execution of test cases
Analyze test results
Execution of Test Cases
When implementation is complete, execute developed test cases on the system under test (SUT).
Objective: To observe actual implementation outputs and compare them with expected outputs.
Types of Testing Dimensions
Levels of Testing
Unit Testing: Tests the correctness of the smallest unit of the SUT (e.g., a function).
Component Testing: Focuses on testing each subsystem individually.
Integration Testing: Checks the interaction of multiple correct components.
System Testing: Validates overall system functionality.
Aspects of Testing
Conformance Testing: Verifies whether the SUT meets required specifications from the Requirements Analysis phase.
Reliability Testing: Confirms the SUT operates consistently without failure under expected conditions over time.
Performance Testing: Assesses execution time for tasks performed by the SUT.
Robustness Testing: Evaluates the SUT's reactions to unexpected inputs or hardware failures.
Stress Testing: Analyzes behavior under heavy loads.
Accessibility Dimension of Testing
White Box Testing:
A method examining the internal structure and workings of the application.
Testers have access to source code, design documents, and application architecture.
Black Box Testing:
Focuses solely on testing functionality without knowledge of internal structures.
Testers interact with the software as end-users.
Definitions Relevant to Testing
Error: A difference between actual measured value and expected value.
Fault: A condition leading to software malfunction or failure.
Verification: Tasks ensuring correct implementation of specific functions.
*Question: