View on GitHub

Notes

reference notes

Software testing:

• Goal :

Can reveal the presence of errors NOT their absence.

Testing is part of a more general verification and validation process, which also includes static validation techniques.

Aim and Goal of V&V Process

V & V confidence level(this explains why “fit for purpose” is a subjective decision, it dependes on the user)

Inspections(verification) and testing(validation) are the two main techniques used in V & V:

f

Advantages of inspections:

Inspections and testing are complementary and not opposing verification techniques.

Both should be used during the V & V process.

Inspections can check conformance with a specification but not conformance with the customer’s real requirements.

Inspections cannot check nonfunctional characteristics such as performance, usability, etc.

A traditional model of the software testing process:

f

f

Stages of testing:

  1. Development testing(by developers)
    • the system is tested during development to discover bugs and defects.
  2. Release testing(by testers)
    • a separate testing team test a complete version of the system before it is released to users.
  3. User testing(tester and also users)
    • users or potential users of a system test the system in their own environment.
    • this is when user makes a decision whether the system is fit for purpose or not.

Development testing

divided into 3 activities:

  1. Unit testing
    • individual program units or object classes are tested.
    • focus on testing the functionality of objects or methods.
  2. Component testing
    • several individual units are integrated to create composite components.
    • focus on testing component interfaces.
  3. System testing
    • some or all of the components in a system are integrated and the system is tested as a whole.
    • focus on testing component interactions.

Unit testing

Automated test components:

Choosing unit test cases:

Two designs of test case:

Strategies to choose test cases:

Partition testing

Guidelines for partition testing with sequences, arrays, or lists:

General testing guidelines

Component testing

Testing interfaces between program components

Interface errors

Interface testing guidelines

System testing

System and component testing

Use-case testing

Test cases derived from sequence diagram

System Testing policies

Release testing

Release testing:

Release testing vs System testing:

Goal of Release Testing:

Requirements based testing

Example of Requirements tests

Mentcare system requirements:

Proposed Test Cases

Scenario Testing

A usage scenario for the Mentcare system

Features tested by scenario from Mentcare System:

Performance testing

Purpose of Stress Testing

User testing

Types of user testing

The acceptance testing stages

The acceptance testing stages

  1. Define acceptance criteria
    • take place early in the process before the contract for the system is signed.
    • The acceptance criteria should be part of the system contract and be approved by the customer and the developer.
  2. Plan acceptance testing
    • involves deciding on the resources, time, and budget for acceptance testing and establishing a testing schedule.
    • discuss the required coverage of the requirements and the order in which system features are tested.
    • define risks to the testing process and discuss how these risks can be mitigated.
  3. Derive acceptance tests
    • Tests have to be designed to check whether or not a system is acceptable.
    • aim to test both the functional and non-functional characteristics
    • should ideally provide complete coverage of the system requirements.
  4. Run acceptance tests
    • should take place in the actual environment where the system will be used, but this may be disruptive and impractical.
    • Otherwise, a user testing environment may have to be set up to run these tests
  5. Negotiate test results
    • It is very unlikely that all of the defined acceptance tests will pass and that there will be no problems with the system.
    • the developer and the customer have to negotiate to decide if the system is good enough to be used.
    • They must also agree on how the developer will fix the identified problems.
  6. Reject/accept system
    • involves a meeting between the developers and the customer to decide on whether or not the system should be accepted.
    • If the system is not good enough for use, then further development is required to fix the identified problems.
    • Once complete, the acceptance testing phase is repeated.