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:

    1. Development of test cases

    2. Execution of test cases

    3. 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: