Loading, please wait...

A to Z Full Forms and Acronyms

Exploring Software Testing

Aug 24, 2019 Software Testing, 4194 Views
in this article, we learn about the Software Testing

Software Testing

  • Computer programs are designed and developed by human beings and hence are prone to errors.
  • Unchecked, they can lead to a lot of problems, including social implications. 
  • Testing the software becomes an essential part of the software development lifecycle.
  • Carrying out the testing activities for projects has to be practiced with proper planning and must be implemented correctly.
  • “Testing is the process of executing a program with the intention of finding errors.” – Myers
  • “Testing can show the presence of bugs but never their absence.” – Dijkstra

Most Common Software Problems

  • Incorrect calculation
  • Incorrect data edits & ineffective data edits
  • Incorrect matching and merging of data
  • Data searches that yield incorrect results
  • Incorrect processing of data relationship
  • Incorrect coding/implementation of business rules
  • Inadequate software performance
  • Confusing or misleading data
  • Software usability by end users & Obsolete Software
  • Inconsistent processing
  • Unreliable results or performance
  • Inadequate support of business needs
  • Incorrect or inadequate interfaces with other systems
  • Inadequate performance and security controls Incorrect file handling

Need of Software Testing

  • Executing a program with the intent of finding an error.
  • To check if the system meets the requirements and be executed successfully in the Intended environment.
  • To check if the system is “ Fit for purpose”.
  • To check if the system does what it is expected to do.
  • A good test case is one that has a probability of finding an as-yet-undiscovered error.
  • A successful test is one that uncovers a yet undiscovered error.
  • A good test is not redundant.
  • A good test should be “best of breed”.
  • A good test should neither be too simple nor too complex.

Types of Software Testing

  1. Manual Testing
  • Manual testing includes testing a software manually, i.e., without using any automated tool or any script.
  • In this type, the tester takes over the role of an end-user and tests the software to identify any unexpected behavior or bug.
  • There are different stages for manual testing such as unit testing, integration testing, system testing, and user acceptance testing.
  • Testers use test plans, test cases, or test scenarios to test software to ensure the completeness of testing.
  • Manual testing also includes exploratory testing, as testers explore the software to identify errors in it.
  1. Automation Testing
  • Automation testing, which is also known as Test Automation, is when the tester writes scripts and uses another software to test the product.
  • This process involves the automation of a manual process.
  • Automation Testing is used to re-run the test scenarios that were performed manually, quickly, and repeatedly.

Software Testing Methods

  1. Black Box Testing
  • Incorrect or missing functions, Interface errors, Errors in data structures or external database access, Performance errors, Initialization and termination errors
  • Black box / Functional testing
    • Based on requirements and functionality
    • Not based on any knowledge of internal design or code
    • Covers all combined parts of a system
    • Tests are data-driven
  • Black Box Testing method is applicable to the following levels of software testing:
    • Integration Testing
    • System Testing
    • Acceptance Testing
  • Example: A tester, without knowledge of the internal structures of a website, tests the web pages by using a browser; providing inputs (clicks, keystrokes) and verifying the outputs against the expected outcome.
  1. White Box Testing
  • Knowledge of the internal program design and code required.
  • Tests are based on coverage of code statements, branches, paths, conditions.
  • Incorrect or missing functions, Interface errors, Errors in data structures or external database access, Performance errors, Initialization and termination errors
  • White box testing / Structural testing
    • Based on the knowledge of the internal logic of an application's code
    • Based on the coverage of code statements, branches, paths, conditions
    • Tests are logically driven
  • White Box Testing method is applicable to the following levels of software testing:
    • Unit Testing: For testing paths within a unit.
    • Integration Testing: For testing paths between units.
    • System Testing: For testing paths between subsystems.
  • Example: A tester, usually a developer as well, studies the implementation code of a certain field on a webpage, determines all legal (valid and invalid) AND illegal inputs and verifies the outputs against the expected outcomes, which is also determined by studying the implementation

  1. Grey-Box Testing
  • It combines the concept of both Black box as well as white box testing.
  • In Grey box testing, the inside of your product is partly known to the tester.
  • This has partial access to data-structures residing internally for designing different test cases, but at the same time tests from a user's perspective or like a black-box tester.
  • Grey box testing has its name grey because from a tester's eye, it's like a semi-transparent box and also combining the color of black and white gives the shades of grey.
  • Main features:
    • test design is based on the data structures and algorithms knowledge
    • actual tests are conducted using the exposed interfaces
    • a tester can have access to the source code for test cases design
  • Test design techniques based on grey box testing:
    • matrix testing
    • regression testing
    • orthogonal array testing
    • pattern testing

Levels of Software Testing

  • Levels of testing include different methodologies that can be used while conducting software testing.
  • The main levels of software testing are −
  • Functional Testing
    • Unit Testing
    • Integration Testing
    • System Testing
    • Regression Testing
    • Acceptance Testing
    • Alpha Testing
    • Beta Testing
  • Non-functional Testing
  • Performance Testing
    • Load Testing
    • Stress Testing
  • Usability Testing
  • Security Testing
  • Portability Testing
A to Z Full Forms and Acronyms