What is Software Testing?

What is Software Testing?

Understanding Software Testing

Motivation Behind Software Testing

  • The primary goal of software testing is to provide assurance that the system meets the expected quality level as defined by stakeholders.
  • However, it is important to note that absolute guarantees regarding stakeholder expectations cannot be achieved.

Evidence from Testing

  • Testing provides evidence that a system behaves as expected, but only in specific situations rather than all possible scenarios.
  • Due to the infinite potential states of a system, complete coverage through testing is unattainable. Thus, tests can only demonstrate functionality under certain conditions.

Quality of Test Suites

  • The strength of the evidence provided by tests depends on the quality of the test suite (the collection of tests available). A well-designed suite enhances reliability in detecting issues and deviations from stakeholder expectations.
  • Tests not only help identify problems but also assist in correcting defects by pinpointing where in the code these issues originate. This aids developers in addressing failures effectively.

System Behavior Expectations

  • Understanding what it means for a system to behave as expected typically relates to its functionalities and correctness concerning stakeholder requirements.
  • While it's impractical to verify every functionality, focus should be placed on complex, critical, or frequently used features during testing efforts. Criteria for selecting what to test are essential for effective testing strategies.

Robustness and Error Handling

  • In addition to verifying functional correctness, robustness must also be assessed; this includes how well a system handles incorrect inputs and whether it provides appropriate error messages when necessary.
  • Although various types of tests exist (e.g., performance, security), this discussion emphasizes ensuring correct implementation of functionalities and appropriate responses under improper usage conditions.

The Role of Requirements Engineering

Requirements Gathering Process

  • The process begins with a requirements engineer who interacts with stakeholders to gather specifications about what the system should do through interviews and observations. These specifications are documented comprehensively as requirement documents or user stories.

Tester’s Responsibilities

  • Testers analyze these requirement documents to understand stakeholder expectations better; they may conduct manual tests or more commonly write automated tests based on these specifications.

Automated Testing Process

  • Automated testing involves creating programs that simulate user interactions with the system's interface—this allows testers to verify if outputs align with stakeholder expectations after executing specific operations within the application context.
Playlists: Testing