Software Testing - Emory University

24
Software Testing An Overview Thursday, November 18, 2010

Transcript of Software Testing - Emory University

Software TestingAn Overview

Thursday, November 18, 2010

Software Testing Defined

Software testing is the process of verifying & validating that a program or application:

Meets technical specifications

Meets business requirements

Works as expected

Thursday, November 18, 2010

Verification vs. Validation

Verification: Have we built the program correctly?

Does the software match the specification?

Validation: Have we built the right program?

Does it actually do what the customer wants it to do?

Thursday, November 18, 2010

General approach to testing

Black box: no knowledge of internal implementation

White box: tester has access to the internal data structures & algorithms

Gray box: a combination of the above

Thursday, November 18, 2010

Levels of testing

Unit (or Component)

Integration

System

Thursday, November 18, 2010

Unit level

Tests created to exercise the algorithm being developed

Performed by the developer

Finds defects as early as possible

Thursday, November 18, 2010

Integration level

Testing that verifies the interfaces between components against software design

Exposes defects in interfaces and interactions between components

Progressively larger groups of components are tested until the software works as a system

Thursday, November 18, 2010

System level

System-level testing focuses on a completely integrated system to verify that it meets requirements

Thursday, November 18, 2010

Types of testsAlpha & Beta

Regression

Usability

Security

Performance

Internationalization (I18n) & localization

Acceptance

Thursday, November 18, 2010

Alpha & Beta type

This testing focuses on how the customer uses the program

Alpha and beta releases are tested by the target customers

Purpose is to gather feedback

Thursday, November 18, 2010

Regression type

Focuses on finding defects after a major code change has occurred

Seeks to uncover software regressions (old bugs that have reappeared)

Thursday, November 18, 2010

Usability type

Designed to determine if the user interface is easy to use and understand

Thursday, November 18, 2010

Security type

Essential for software that processes confidential data to prevent system intrusion by hackers

Thursday, November 18, 2010

Performance typeLoad, stress, and endurance tests

Determine how the system performs under a particular workload

Can validate and verify other quality attributes of the system:

Scalability

Reliability

Resource usage

Thursday, November 18, 2010

Internationalization & Localization type

Determines that the application still works even after it has been:

Translated into a new language

Adapted for a new culture, different currency or time zone

Thursday, November 18, 2010

Acceptance type

Purpose is to verify issues encountered in Alpha/Beta testing have been resolved

Normally performed by the customer in their environment

Often known as user acceptance testing (UAT)

Thursday, November 18, 2010

Testing process

Tied to the development process in use:

Waterfall

Modified waterfall

Agile or Extreme

Thursday, November 18, 2010

Waterfall test process

Testing performed by an independent group AFTER all functionality is developed

DEV tosses ‘finished’ product over the wall to QA at set milestone dates

Testing is considered the last stage

Definitely ‘old school’

Thursday, November 18, 2010

Modified waterfall process

Testers are a bit more integrated with development team

Test activities begin earlier in the project

Testing is more of a continuous process

Thursday, November 18, 2010

Agile/Extreme process

Testers more fully integrated with DEV team

Unit tests are created by DEV before coding; focus is on passing unit test

DEV produces regular interim builds for integration & system-level tests

Testing is a continuous process

Thursday, November 18, 2010

General testing cycle

Requirements analysis (determine what can be tested)

Test planning (strategy, test plan, test bed)

Test development (procedures, scenarios, cases, scripts)

Test execution (following the above)

Test reporting (results and metrics)

Thursday, November 18, 2010

Testing cycle (cont.)

Test result analysis (defect analysis)

Defect retesting (after DEV has fixed)

Regression testing

Test closure (capturing results, logs, lessons learned for archive)

Repeat

Thursday, November 18, 2010

ReviewTest approach (black, white, gray box)

Levels of testing (unit, integration, system)

Types of testing (alpha & beta, regression, usability, security, performance, I18N, acceptance)

Testing process (waterfall, modified waterfall, agile/extreme)

Test cycle

Thursday, November 18, 2010

DEV versus QA

Avoid ending up in an adversarial relationship

Recognize and respect each other’s role and abilities

Focus on working as a team to create a better product

Realize that EVERYONE makes mistakes

Keep egos in check

Thursday, November 18, 2010