User Tools

Site Tools


software_testing

Overview

Condensation of software testing tutorial here.

STUFF

General points

  • Use library routines as much as possible.
    • Develop wrappers that incorporate your features.
  • Use REGEX parsers to validate input, this forces you to clarify valid input.
  • Library packages frequently come with userspace demo programs.
  • Emphasize libraries to identify dependencies.
  • Static analyzers
    • cppcheck
    • clang (scan-build)
  • gcc/C11 debugging features
    • -Wall
    • extensions and attributes
    • assertions
  • Add checking to version control hooks (cppcheck with Git)

Tools to automate testing

  • Selenium
  • QTP
  • Jmeter
  • Loadrunner
  • TestLink
  • Quality Center (ALM)

Testing Fundamentals

What is software testing?

Verification of Application Under Test (AUT).

Types:

  • functional
    • unit
    • integration
    • smoke
    • user acceptance (UAT)
    • interoperability
  • non-functional
    • performance
    • endurance
    • load
    • volume
    • scalability
    • usability
  • maintenance
    • regression
    • maintenance

Software testing as a career path

Non-technical skills:

  • analytical
  • communication
  • time management/organizational

Technical skills:

  • database/SQL
  • test management tools
  • defect tracking tools
  • automation tools

7 software testing principles

  • Exhaustive testing is generally not possible.
  • Defect clustering (most defects clustered in small number of modules)
  • Pesticide paradox (same tests gradually become ineffective)
  • Presence of defects
  • Absence of error
  • Early testing
  • Testing is context dependent

V model

  • SDLC: Software development life cycle
  • STLC: Software test life cycle
  • V Model: combination of the above

STLC - Software testing life cycle

Each phase has entry criteria and exit criteria:

  • Requirements analysis
    • functional vs non-functional
  • Test planning
  • Test case development
  • Environment setup
  • Test execution
  • Test cycle closure

Types of testing

Manual testing

  • acceptance
  • integration
  • system
  • unit
  • white vs black box

Automation testing

Why?

  • Manual Testing of all workflows, all fields, all negative scenarios is time and money consuming
  • It is difficult to test for multilingual sites manually
  • Automation does not require Human intervention. You can run automated test unattended (overnight)
  • Automation increases the speed of test execution
  • Automation helps increase Test Coverage
  • Manual Testing can become boring and hence error-prone.

Stuff that can be automated:

  • Smoke Testing
  • Unit Testing
  • Integration Testing
  • Functional Testing
  • Keyword Testing
  • Regression Testing
  • Data Driven Testing
  • Black Box Testing

Automation vs manual

Unit testing

  • isolate a section of code and verify its correctness

Coverage testing categories:

  • statement
  • decision
  • branch
  • condition
  • finite state machine

Integration testing

System testing

  • testing of a complete and fully integrated software product
    • black box (system)
    • white box

Different types of system testing:

  • Usability Testing - Usability Testing mainly focuses on the user's ease to use the application, flexibility in handling controls and ability of the system to meet its objectives
  • Load Testing - Load Testing is necessary to know that a software solution will perform under real-life loads.
  • Regression Testing- - Regression Testing involves testing done to make sure none of the changes made over the course of the development process have caused new bugs. It also makes sure no old bugs appear from the addition of new software modules over time.
  • Recovery Testing - Recovery testing is done to demonstrate a software solution is reliable, trustworthy and can successfully recoup from possible crashes.
  • Migration Testing - Migration testing is done to ensure that the software can be moved from older system infrastructures to current system infrastructures without any issues.
  • Functional Testing - Also known as functional completeness testing, Functional Testing involves trying to think of any possible missing functions. Testers might make a list of additional functionalities that a product could have to improve it during functional testing.
  • Hardware/Software Testing - IBM refers to Hardware/Software testing as “HW/SW Testing”. This is when the tester focuses his/her attention on the interactions between the hardware and software during system testing.

Sanity vs smoke testing

Regression testing

When?

  • Change in requirements and code is modified according to the requirement
  • New feature is added to the software
  • Defect fixing
  • Performance issue fix

Non-functional testing

  • performance
  • endurance
  • load
  • volume
  • scalability
  • usability

STUFF

Test documentation

Test scenario vs Test case

Test analysis (test basis)

Requirements traceability matrix (RTM)

Test data generation

Generated:

  • Manually
  • Mass copy of data from production to testing environment
  • Mass copy of test data from legacy client systems
  • Automated Test Data Generation Tools
software_testing.txt · Last modified: 2019/08/04 09:18 by rpjday