Software Testing Principles and Concepts

Document Sample
Software Testing Principles and Concepts Powered By Docstoc
					Software Testing Principles and

    By: Abel Almeida
How to reduce the frequency of
defects in software?
 Use the maturity model1
     There are five levels1
          One is AD Hoc – unstructured.
          Two Control – Discipline, training and leadership.
          Three – Core Competency -communication,
           hardware and software selection.
          Four –Predictable- management can become coaches
           to help people address their day-to-day challenges in
           performing work processes in a predictable manner.
          Innovative
What are the Factors Affecting Software Testing?

 People relationships -              several variables that affect the
  testing process including: the development process itself,
  software risk, customer/user participation, the testing process, a
  tester’s skill set, use of tools, testing budget and resource
  constraints, management support, and morale and motivation of
  the testers.
 Scope of Testing- A narrow scope may be limited to determining
  whether or not the software specifications were correctly implemented
 Misunderstanding Life Cycle Testing – Testing after
  coding is the only method used to determine the adequacy of the
  system. When testing is constrained to a single phase and confined to
  the later stages of development, severe consequences can develop.
 Requirements- Both product requirements and validation requirements
   should be established.
 Design-       During detailed design, validation support tools should be acquired
   or developed and the test procedures themselves should be produced.
 Program (Build/Construction) -                     Actual testing occurs during
   the construction stage of development. Many testing tools and techniques exist
   for this stage of system development.
 Test Process-              During the test process, careful control and management
   of test information is critical
 Installation- The process of placing tested programs into production is an
   important phase normally executed within a narrow time span.
 Maintenance- Test cases generated during system development
   are reused or used after appropriate modifications. The quality of the
   test documentation generated during system development and
   modified during maintenance will affect the cost of regression testing.
What are some Testing Constraints?
 Budget and Schedule Constraints
 Lacking or Poorly Written Requirements
 Changes in Technology
 Limited Tester Skills
Life Cycle Testing?
 Life cycle testing involves continuous testing of the
  solution even after software plans are complete and the
  tested system is implemented
 IT must provide and agree to a strict schedule for
  completing various phases of the process for proper life
  cycle testing to occur.
Test Matrices
 The test matrix shows the interrelationship
  between functional events and tests.
 The completed test matrix defines the
  conditions that must be tested during the test
  process to verify the proper functioning of the
  application system.
Cascading Test Matrices
 In the creation of the test plan, IT people
  sometimes lose track of the interrelationship
  of functional events.
 The creation of the cascading test matrix
  reinforces the interrelationship of functional
  events and enables that aspect of systems to
  be better tested.
Independent Testing ?
 Where an independent test team exists, they
  are usually responsible for system testing, the
  oversight of acceptance testing, and
  providing an unbiased assessment of the
  quality of an application. The team may also
  support or participate in other phases of
  testing as well as executing special test types
  such as performance and load testing.
Tester’s Workbench
 a pictorial representation of how a specific
  test task is performed. (Need to understand
  work process).
 Process - a set of activities that represent the
  way work is performed. The outcome from a
  process is usually a product or service.
      Work bench built on:
      1. Objective – States why the process exists, or its purpose
      2. People Skills - The roles, responsibilities, and associated skill
       sets needed to execute a process.
   Workbench components –
       Inputs – The entrance criteria or deliverables needed to perform
       Procedures – Describe how work must be done; how methods,
        tools, techniques, and people are applied to perform a process.
       Deliverables – Any product or service produced by a process.
       Standards – Measures used to evaluate products and identify
       Tools – Aids to performing the process.
Levels of Testing?
 • Verification Testing -Static testing of development interim
    deliverables (Examples? Ask the class!)
   • Unit Testing -These tests verify that the system functions
    properly; for example, pressing a function key to complete an
    action. (Examples? Ask the class!)
   • Integration Testing -The system runs tasks that involve more
    than one application or database to verify that it performed the
    tasks accurately. (Examples? Ask the class!)
   • System Testing - These tests simulate operation of the entire
    system, and verify that it ran correctly. (Examples? Ask the
   • User Acceptance Testing - This real-world test means the most
    to your business; and, unfortunately, there’s no way to conduct it
    in isolation. Once your organization staff, customers, or vendors
    begin to interact with your system, they’ll verify that it functions
    properly for you (Examples? Ask the class!)
Verification versus Validation?
 Verification ensures that the system
  (software, hardware, documentation, and
  personnel) complies with an organization’s
  standards and processes, relying on review
  or non-executable methods. (“Did we build
  the right system”)
 Validation physically ensures that the system
  operates according to plan by executing the
  system functions through a series of tests that
  can be observed and evaluated.(“Did we
  build the system right?”)
Static versus Dynamic Testing
 Static testing is performed using the software
 Dynamic testing requires the code to be in an
  executable state to perform the tests.
The “V” Concept of Testing
Testing Techniques
 Structural VS Functional Technique
     Functional testing ensures that the
      requirements are properly satisfied by the
      application system.
     Structural testing ensures sufficient testing of
      the implementation of a function