Monday, 1 October 2012

software testing introduction


What is Software Testing?

Several definitions:

“Testing is the process of establishing confidence that a program or system does what it is supposed to.”             

“Testing is the process of executing a program or system with the intent of finding errors.”           

“Testing is any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results.”
           
“Testing an software application in order verify that software package functions according to the expectations defined by the requirements/specifications and also to ensure that it meets business requirement of a customer/user”

Testing Objectives

The Major Objectives of Software Testing:

·         Uncover as many as errors (or bugs) as possible in a given timeline.
·         Demonstrate a given software product matching its requirement specifications.
·         Validate the quality of software testing using the minimum cost and efforts.
·         Generate high quality test cases, perform effective tests, and issue correct and helpful problem reports.

Major goals:

Uncover the errors (defects) in the software, including errors in:
·         Requirements from requirement analysis
·         Design documented in design specifications
·         Coding (implementation)
·         System resources and system environment
Hardware problems and their interfaces to software


Who does Software Testing

Test manager

·         Manage and control a software test project 
·         Supervise test engineers
·         Define and specify a test plan

Software Test Engineers and Testers
·         Define test cases, write test specifications, run tests

 Independent Test Group

 Development Engineers
·         Only perform unit tests and integration tests

Quality Assurance Group and Engineers
·         Perform system testing
·         Define software testing standards and quality control process

Software Testing Activities

Test Planning

  Define a software test plan by specifying:
            a test schedule for a test process and its activities, as well as assignments
            test requirements and items
            test strategy and supporting tools

Test Design and Specification

            Conduct software design based well-defined test generation methods.
            Specify test cases to achieve a targeted test coverage.

Test set up:

            Testing Tools and Environment Set-up
            Test Suite Set-up

Test Operation and Execution 

            Run test cases manually or automatically

Test Result Analysis and Reporting

            Report software testing results and conduct test result analysis 


Problem Reporting

            Report program errors using a systematic solution.

Test Management and Measurement

            Manage software testing activities, control testing schedule, measure testing complexity and cost

Test Automation

            Define and develop software test tools
            Adopt and use software test tools
            Write software test scripts and facility

Test Configuration Management

            Manage and maintain different versions of software test suites, test environment and tools, and documents for various product versions. 

Software Quality Factors

Functionality (exterior quality)
  Correctness, reliability, usability, and integrity

Engineering (interior quality)
  Efficiency, testability, documentation, structure

Adaptability (future qualities)
  Flexibility, reusability, maintainability




Software Testing Principles

·         Principle 1: Complete testing is impossible.
·         Principle 2: Software testing is not simple.

·         Reasons:
·         Quality testing requires testers to understand a system/product completely
·         Quality testing needs adequate test set, and efficient testing methods
·         A very tight schedule and lack of test tools.

·         Principle 3: Testing is risk-based.
·         Principle 4: Testing must be planned.
·         Principle 5: Testing requires independence.
·         Principle 6: Quality software testing depends on:

·         Good understanding of software products and related domain application
·         Cost-effective testing methodology, coverage, test methods, and tools.
·         Good engineers with creativity, and solid software testing experience

                       Test Issues in Real World

·         Software testing is very expensive.
·         How to achieve test automation?????
·         When should we stop software testing?
·         Test criteria, test coverage, adequate testing.
·         Other software testing:
·         GUI Testing
·         Object-Oriented Software Testing
·         Component Testing and Component-based Software Testing




No comments:

Post a Comment