Sneak-peek into the World of Testing

SOFTWARE TESTING

Software Testing is the process of analysing a software item to detect differences between existing and required conditions(that is bugs) and to evaluate features of software items.
Software Testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test.
No software can be 100% bug free. The aim of software testing is to give the best product to users/customers with minimum number of bugs/defects.

NEED OF TESTING:

  • To demonstrate software does what it is supposed to do and does not do something which it is not supposed to do.
  • To find defects as early as possible and get them fixed.
  • To meet compliance with contractual or legal requirements
  • Testing should provide sufficient information to the stake holders for decision making regarding release of the software/ system , for the next development step or handover to customers.

Test Plan:

Test plan is a document that describes how testing will be accomplished. It is similar to Project Plan.

FIVE KEY CHARACTERISTICS DEFINED IN A TEST PLAN:

  • Scope & Objectives: Defining what will be covered in a project
  • Resource: What type and number of resources to be used to accomplish the objectives
  • Schedule: Tasks and their schedules.
  • Quality: Standards to be used and/or customized.
  • Risk: Defines in advance what may happen to drive the plan off course, and what will be done to recover the situation.

NEED FOR TEST PLAN:

  • Discuss issues early.
  • Enables to decide in advance:
  • How a project’s objectives will be met.
  • What resources are available and what resources are required.
  • Time scales required.
  • Quality desired.
  • Controlling risk.

Functional Testing and Non-Functional Testing:

FUNCTIONAL TESTING:

Functional Testing refers to testing very specific action or function of the code.
Functional testing tends to answer the question:
  • CAN WE DO THIS?
  • DOES THIS PARTICULAR FEATURE WORK?
Functional Test – white box
Tests at micro level of the programs that test each and every implemented functional task, ensuring that all code options are exercised. Requires knowledge of the internal code
Functional Test – black box
Testing that focuses solely on the outputs generated in response to selected inputs and execution conditions. Requirements are the only test basis and knowledge of the internal code is not required.

NON-FUNCTIONAL TESTING:

Non-Functional Testing refers to that aspect of software that may not relate to specific function or user action such as scalability or security.
Non-Functional testing tends to answer the question:
  • HOW MANY PEOPLE CAN LOG IN IT AT ONCE?
  • HOW EASY IT IS TO HACK THE SOFTWARE?
Testing that concentrates on the performance of the system like the response time, speed of execution, usability, availability etc.
First check for “Functionality” and then for “Performance”

Four levels of Testing done in any Testing Project

Unit Testing: Testing of individual software components or modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. May require developing test driver modules or test harnesses. Unit testing is a software verification and validation method in which a programmer tests if individual units of source code are fit for use. A unit is the smallest testable part of an application.
Integration Testing: In this type of testing both software component and hardware components are combined together and tested. Testing of integrated modules to verify combined functionality after integration. Modules are typically code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.
System Testing: System testing involves putting the new program in many different environments to ensure program works in typical customer environment. System testing is conducted on complete, integrated system to evaluate the system compliance with its specified requirements. The entire system is tested as per requirements.
Acceptance Testing: Performed by customers or user representative. Supposed to be final level of testing and verifies whether product meets the agreed upon product acceptance criteria.
Acceptance Testing: Performed by customers or user representative. Supposed to be final level of testing and verifies whether product meets the agreed upon product acceptance criteria.

Defect Life-cycle:

Defect is:
  • Variance of actual result from expected result.
  • The difference between actual behaviour and the desired behaviour as stipulated by the requirements specifications
  • A Defect that causes an error or negatively impacts a user/ customer is categorised as Failure
  • Software does not do something which it is supposed to do or does something which it is not supposed to do.

PRIORITY vs SEVERITY:

Severity indicates how bad the bug is and reflects its impact on the product and its users.
Priority determines the order in which the product is to fixed.
PRIORITY>> SEVERITY

Verification and Validation:

Verification: Process of evaluating a system or a component whether the products of a given development phase satisfy the conditions imposed on the start of phase.
  • HAVE WE BUILD THE RIGHT SOFTWARE?
  • DOES IT MATCH THE SPECIFICATIONS?
Validation: Process of evaluating system or component during or at the end of development process to see whether it satisfies the specific requirements.
  • HAVE WE BUILT THE RIGHT SOFTWARE?
  • IS THIS WHAT CUSTOMER WANTS?

Regression Testing and Retest:

Retest is the act of repeating a test to verify that the found defect has been correctly fixed.
Regression Testing is the act of repeating other tests in the parallel area to ensure that the applied fix or change of the code has not introduced other errors or unexpected behaviour.

Inspection, Review and Walkthrough:

Inspection: It is a technique in which the work product is examined for its compliance to specific standards and also checked against a history of common errors.
Review: It is a technique in which the work product is discussed upon by a group of two or more persons and re-examined or re-evaluate for possible corrections.
Walkthrough: It is a technique mostly done on the code developed, where the code is traced manually to monitor the state of the program variables as a way of analysing the logic. This is Verification portion of Verification and Validation.

Difference between QA,QC and Testing

Quality Assurance: A set of activities designed to ensure that the development and/or maintenance process is adequate to ensure a system will meet its objectives.
QA is process oriented.
As a QA, you question the ambiguous requirements and prepare proper documentation for the projects.
All these practices help in preventing bugs/defects from an early stage.
Quality Assurance makes sure you are doing the right things, the right way.
 
Quality Control: A set of activities designed to evaluate a developed work product.
QC is product oriented.
QC implements the process developed by QA team.
QC activities focus on finding defects in specific deliverables – e.g., are the defined requirements the right requirements.
Quality Control makes sure the results of what you’ve done are what you expected.
 
Testing: The process of executing a system with the intent of finding defect.
Testing is product oriented and thus is in the QC domain.
Testing for quality isn’t assuring quality, it’s controlling it.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s