Thursday, April 14, 2011

Black-box and White-box Testing

Black box and white box testing are the testing methods for software verification.

In black box testing, the whole system is treated as black box and user/tester does not has any idea about the inside structure of the system. The user simply enters the input and verifies the output. User refers to the requirements and verifies the results. That is why, it is also called Specifications based testing. Other names for black box testing are: Functional testing, closed-box testing, behavioral testing.


In white box testing, the user/tester is aware of internal structure, algorithm and code of the system. The user tests the software according the knowledge of inside structure of the system and verifies the system. Other names for white box testing are: Structural testing, clear-box testing, glass-box testing.

Software Development Life Cycle - SDLC

Software development life cycle (SDLC) is a systemic process referred to develop software. It usually describes the starting, ending and in-between stages for successful development of the software. There are many different SDLC models used for software development. Every model has its own methodology to investigate requirements, when development and testing will start in the whole process. Here are common types of SDLC models:

  • Waterfall model
  • V - model
  • Agile (Iterative model)

Need of Software Testing

Why software testing is necessary? Why it is required in SDLC?

Answer is:

  • To verify if developed solution meets the requirements
  • To verify the completeness and correctness of the application/system
  • To verify the reliability, usability of the application/system
  • To find defects as early as possible to avoid higher fixing cost at later stages
  • To find maximum number of defects to ensure high quality

What is Software Testing

Software testing is the process to verify if the developed solution/product meets the requirements with desired quality. Software testing is investigation to find unknown defects in the system once developers provide the product. The main intention of performing software testing is find maximum number of defects which in turn will ensure quality of the final product.


Software testing can also be stated as the process of validating and verifying that a software program/application/product:
  1. meets the business and technical requirements that guided its design and development;
  2. works as expected; and
  3. meets defined quality standards
Software testing can be started at any phase of software development life cycle (depending upon the methodology used to develop software). But it is always preferred to start testing activities at early stage to have better defect stage contamination.

Software testing is also termed as the process to verify completeness and correctness of developed solution/system. 

Monday, April 04, 2011

Automation Framework

What do you understand by automation framework?
What are the driving parameters for automation framework?
Platform independence and access



A test automation framework is a set of assumptions, concepts and tools that provide support for automated software testing. The main advantage of such a framework is the low cost for maintenance. If there is change to any test case then only the test case file needs to be updated and the Driver Script and Startup script will remain the same. Ideally, there is no need to update the scripts in case of changes to the application.
Choosing the right framework/scripting technique helps in maintaining lower costs. The costs associated with test scripting are due to development and maintenance efforts. The approach of scripting used during test automation has effect on costs.
Various framework/scripting techniques are generally used:
  1. Linear (procedural code, possibly generated by tools like those that use record and playback)
  2. Structured (uses control structures - typically ‘if-else’, ‘switch’, ‘for’, ‘while’ conditions/ statements)
  3. Data-driven (data is persisted outside of tests in a database, spreadsheet, or other mechanism)
  4. Keyword-driven
  5. Hybrid (two or more of the patterns above are used)
The Testing framework is responsible for:[1]
  1. defining the format in which to express expectations
  2. creating a mechanism to hook into or drive the application under test
  3. executing the tests
  4. reporting results
Another view Automation Framework is not a tool to perform some specific task, but is an infrastructure that provides a complete solution where different tools work together in an unified manner hence providing a common platform to the automation engineer using them.

Stage Containment

It means that the defect should be detected in the same stage where it is originated. The cost of fixing the defect in the same stage is much cheaper than to fix it in later stages. A bad case (without stage containment) and a good case (with stage containment) is shown in below screenshots:


Without stage containment

With stage containment

V-Model

  • VERIFICATION & VALIDATION
  • Ensures quality  from beginning of the process to end of the process
  • Structured, organized and efficient way of testing
  • Keep on enhancing test cases as we move toward development phase
  • Ensures complete testing of the initial requirements
  • Detect defects in early stages (stage containment) to save cost, effort and and chances of failure of application at later stages
V-Model

Functional vs Non-Functional Testing

What should application do? Verifying the application's specific functionality as per requirements is called functional testing.

Non-functional testing deals with verifying non-functional requirements. like performance, scalability, security etc Non-functional testing mainly deals with quality, performance and usability of the product.

Operational Acceptance Testing (OAT)

Operational acceptance testing (OAT), also called operational readiness testing, is acceptance testing focuses on the operational readiness of the system which is to be deployed to the production environment.

Web services, backup facilities, database connectivity disaster recovery procedures, working with different operating systems, working with different browsers (in case of web based application) etc are various tasks performed in OAT.

Beta Testing

Beta testing is acceptance testing (external) done at client's site (where software has to be deployed). It is done by end users verifying product meets all requirements and operates as expected on client's machine. Beta testing is done before beta testing. It is similar to the beta version of any software i.e to be used by limited number of users and then based on the feedback either provide product to all users or do the changes and provide solution.

Alpha Testing

Alpha testing is acceptance testing (internal) done at developer's site (where software has been developed). It is done by end users or specialized testing team resembling end users verifying product meets all requirements. Alpha testing is done before beta testing.

Acceptance Testing

Acceptance testing (also called User acceptance testing - UAT) is performed by end user/customers to verify if the solution/product delivered to them meets all requirements, specifications and performs business processes.

  • Falls in black-box testing methodology
  • Also called validation testing, final testing, application testing
  • Can include functional, performance, stress, load testing etc
  • Specific test cases (mapped with requirements) created by end user focusing on specific functionality and priority areas with user defined test data
  • Success of acceptance testing decides GO/ NO_GO decision for the product

Types of acceptance testing:

Testing Terminology (Glossary)

Acceptance testing
Ad hoc testing
Agile testing
Alpha testing
Back-to-back testing
Beta testing
Big-bang testing
Black-box testing
Black-box test design technique
Blocked test case
Bottom-up testing
Boundary value
Boundary value analysis
Branch testing
Business process-based testing
Capture/playback tool
Certification
Code coverage
Compliance testing
Component integration testing
Condition testing
Conversion testing
Data driven testing
Database integrity testing
Defect
Defect masking
Defect report
Development testing
Driver
Equivalence partitioning
Error
Error guessing
Exhaustive testing
Exploratory testing
Failure
Functional test design technique
Functional testing
Functionality testing
Heuristic evaluation
High level test case
ISTQB
Incident management tool
Installability testing
Integration testing
Isolation testing
Keyword driven testing
Load testing
Low level test case
Maintenance testing
Monkey testing
Negative testing
Non-functional testing
Operational readiness testing
Pair testing
Peer review
Performance testing
Portability testing
Post-execution comparison
Priority
Quality assurance
Random testing
Recoverability testing
Regression testing
Requirements-based testing
Re-testing
Risk-based testing
Severity
Site acceptance testing
Smoke test
Statistical testing
Stress testing
Stub
Syntax testing
System integration testing
System testing
Test automation
Test case specification
Test design specification
Test environment
Test harness
Test log
Test management tool
Test oracle
Test plan
Test strategy
Test suite
Testware
Thread testing
Top-down testing
Traceability
Usability testing
Use case
Use case testing
Unit test framework
Validation
Verification
Vertical traceability
Volume testing
Walkthrough
White-box testing