Basic Concepts of Software Testing

What is Testing?

The process of testing the application to make sure that the application is working according to the requirements.

What is Software Testing?

Software testing is the process of executing a program / application under positive  and negative conditions by manual or automated means. It checks for the :-

  •  Specification
  •  Functionality
  •  Performance

Why Software Testing ?

Software Testing is important as it may cause mission failure, impact on operational performance and reliability if not done properly.

Effective software testing delivers quality software products satisfying user’s requirements, needs and expectations.

Who should test?

  • Developer

    • Understands the system
    • But,will test gently
  • Independent Tester

    • Must learn system
    • But,will attempt to break it

What is an “Error”,”Bug”,”Fault” and “Failure”?

A person makes an Error
That creates a fault in software
That can cause a failure in operation

Error : An error is a human action that produces the incorrect result that results in a fault.
Bug : The presence of error at the time of execution of the software.
Fault : State of software caused by an error.
Failure : Deviation of the software from its expected result. It is an event.

Who is a Software Tester?

Software Tester is the one who performs testing and find bugs, if they exist in the tested application.

The Testing Team

Program Manager

  • The planning and execution of the project to ensure the success of a project minimizing risk throughout the lifetime of the project.
  • Responsible for writing the product specification, managing the schedule and making the critical decisions and trade-offs.

QA Lead

  • Coach and mentor other team members to help improve QA effectiveness
  • Work with other department representatives to collaborate on joint projects and initiatives
  • Implement industry best practices related to testing automation and to streamline the QA Department.

Test Analyst / Lead

  • Responsible for planning, developing and executing automated test systems, manual test plans and regressions test plans.
  • Identifying the Target Test Items to be evaluated by the test effort.
  • Defining the appropriate tests required and any associated Test Data.
  • Gathering and managing the Test Data.
  • Evaluating the outcome of each test cycle.

Test Engineer

  • Writing and executing test cases and Reporting defects.
  • Test engineers are also responsible for determining the best way a test can be performed in order to achieve 100% test coverage of all components.

Importance of Testing In SDLC

  • SDLC stands for Software Development Life Cycle. Every software has to go through a development process. Software development methodologies are used for the computer based information systems. The growth of the information has to pass through various phases/ stages, these stages are known as System Development Life Cycle (SDLC).
    • Requirement
    • Analysis
    • Design
    • Coding
    • Testing
    • Implementation
    • Maintenance

Requirements

  • This is the first phase/stage of SDLC. In this stage, the required informations are gathered from the customer. The Analyst makes a survey by collecting all the available information needed for the system elements and allocation of the requirements to the software.

Analysis

  •  In this phase, the system engineer analyze the requirement for the proposed system. From the available information, the system engineer develops a list of use cases and system level requirement for the project. With the help of key user the list of use case and requirement is reviewed. Refined and updated in an iterative manner until the user is satisfied that it represents the essence of the proposed system.

Design

  • The design is the process of designing exactly how the specifications are to be implemented. Analysis and design are very important in the whole development cycle. Any fault in the design could effect the product or could be very expensive to solve in the later stage of software development.

Implementation or Coding:

  •  In this section, only developers are involved for coding or programming.

Testing

  • Once the coding is done, the analyst go through it and test the system for the product requirements.

Maintenance & Support

  • This stage plays a major role to the software product. After releasing of the product, customers or clients give their feedback with respect to the product performance and requirements. If it is found any bug at any time then the product will go for the maintenance.
SDLC

SDLC

 

Importance of Testing In STLC

STLC

Test Planning

Test Plan

A test plan is a systematic approach to testing a system i.e. software. The plan typically contains a detailed understanding of what the eventual testing workflow will be.

Test Case

A test case is a specific procedure of testing a particular requirement.
It will include:

  • Identification of specific requirement tested
  • Test case success/failure criteria
  • Specific steps to execute test
  • Test Data

Levels of Testing

  1. Unit Testing
  2. Integration Testing
  3. System Testing
  4. Usability Testing
  5. Functional Testing
  6. Performance Testing
  7. Security Testing
  8. Smoke Testing
  9. Alpha Testing
  10. Acceptance Testing
  11. Beta Testing
  12. Regression Testing
  13. Monkey Testing

Unit Testing

  • Test each module individually.
  • Follows a white box testing (Logic of the program)
  • Done by Developers

Integration Testing

  • After completing the unit testing and dependent modules development, programmers connect the modules with respect to HLD for Integration Testing through below approaches.

System Testing

  • After completing Unit and Integration testing through white box testing techniques development team release an .exe build (all integrated module) to perform black box testing
  • Usability Testing
  • Functional Testing
  • Performance Testing
  • Security Testing

Usability Testing

During this test, testing team concentrates on the user friendliness of build interface. It consists of following sub tests.

  • User Interface Test: Ease of use (screens should be understandable to operate by End User.
  •  Look & Feel :-  attractive
  • Speed in interface :-  Less number of task to complete task
  • Manual Support Test :-  Context sensitiveness of user manual.

Functional Testing

  • The process of checking the behavior of the application.
  • It is geared to functional requirements of an application.
  • To check the correctness of outputs.
  • Data validation and Integration i.e. inputs are correct or not.

Performance Testing

  • LOAD TESTING – Also Known as Scalability Testing. During this test, test engineers execute application build under customer expected configuration and load to estimate performance.
  • STRESS TESTING – During this test, Test engineers estimates the peak load. To find out the maximum number of users for execution of out application user customer expected configuration to estimate peak load.
  • PEAK LOAD > CUSTOMER LOAD (EXPECTED)
  • DATA VOLUME TESTING — Testing team conducts this test to find the maximum limit of data volume of your application.

Security Testing

  • Testing how well the system protects against unauthorized internal or external access, willful damage, etc, may require sophisticated testing techniques

Smoke testing

  • Smoke testing is non-exhaustive software testing, ascertaining that the most crucial functions of a program work, but not bothering with finer details.

Alpha Testing

  • The application is tested  by the users who doesn’t know about the application.
  • Done at developer’s site under controlled conditions
  • Under the supervision  of the  developers.

Acceptance Testing

  • A formal test conducted to determine whether or not a system satisfies its acceptance criteria and to enable the customer to determine whether or not to accept the system.
  • It is the final test action before deploying the software. The goal of acceptance testing is to verify that the software is ready and can be used by the end user to perform the functions for which the software was built.

Beta Testing

  • This Testing is done before the final release of the software to end-users.
  • Before the final release of the software  is released to users for testing where there will be no controlled conditions and the user here is free enough to do what ever he wants to do on the system to find errors.

Regression Testing

  • Testing with the intent of determining if bug fixes have been successful and have not created any new problems. Also, this type of testing is done to ensure that no degradation of baseline functionality has occurred.

Monkey Testing

  • Testing the application randomly like hitting keys irregularly and try to breakdown the system there is no specific test cases and scenarios for monkey testing.

Verification  & Validation

Verification

  • Verification is the process confirming that -software meets its specification, done  through inspections and walkthroughs
  • Use – To identify defects in the product early in the life cycle

Validation

  • Validation is the process confirming that it meets the user’s requirements. It is the actual testing.

Verification : Is the Product Right

Validation   : Is it the Right Product

Quality Assurance & Quality Control

What is Quality ?

  • Quality is defined as meeting the customer’s requirements and according to the standards
  • The best measure of Quality is given by FURPS
    • Functionality
    • Usability
    • Reliability
    • Performance
    • Scalability

Why Quality  ?

  • Quality is the important factor affecting an organization’s long term performance.
  •  Quality improves productivity and competitiveness in any organization.

Quality Assurance

  • Quality Assurance is a planned and systematic set of activities necessary to provide adequate confidence that products and services will conform to specified requirements and meets user need.
    • It is process oriented.
    • Defect prevention based.
    • Throughout the Life Cycle.
    • It’s a management process.

Quality Control

  • Quality control is the process by which product quality is compared with the applicable standards and the action taken when non conformance is detected.
    • It is product oriented
    • Defect detection based
QA vs. QC
QA vs. QC

Bug Reporting

Bug Life Cycle

Bug Life Cycle
Bug Life Cycle
Bug Life Cycle
Bug Life Cycle

Bug Reporting Format

Bug Id                         :      Sys_def_xyz_o1

Test case Id                :      Sys_xyz_o1

Bug Description        :      Specify the defect.

Bug Severity              :      Severity of the Defect

Bug Priority               :      Major or Minor

Bug Status                 :      Status of the Defect

Identified by             :      ABC

Module                      :      Database Operations

Project                       :      XYZ Corporation

Dated                         :      22/9/03

Bug Priority

Priority– How important it is to correct that specific bug

  • High
  •  Moderate
  •  Low

When to Stop Testing

When to Stop Testing
When to Stop Testing
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a comment