MSBLOGS: 2013

Pages

Friday, June 14, 2013

An Introduction to Software Testing




Authored by:   MadhusudanVyas 


Date:       10-12-10



Introduction to Software Testing and Its Types




Agenda

 

  1. Quality Control

  2. What is Software Testing?

  3. Myths & Facts about testing

  4. Testing Framework

  5. V Model

  6. Strategies of Testing

  7. White Box Testing

  8. Black Box Testing

  9. Types of Black Box & White Box Testing


Quality Control

Quality Control measures a product against the existence of an attribute or determines whether the product conforms to a standard or a procedure. This is also known as compliance checking

Purpose of QC – to identify defects and ensure that they are corrected so that defect-free products will be produced

 

QC is related to product and hence is responsibility of worker

Eg. Software testing.


What is Software Testing?

“The process of executing computer software in order to determine whether the results it produces are correct”, Glass ’79

 

“The process of executing a program with the intent of finding errors”, Myers ’79

“Program testing can be used to show the presence of bugs, but never their absence”, Dijkstra ’72 (A Dutch Scientist).

 

“The aim is not to discover errors but to provide convincing evidence that there are none, or to show that particular classes of faults are not present”, Hennell ’84

“Testing is the measure of software quality”, Hetzel ’85.

 

“The process of operating a system or component under specified conditions, observing or recording the results, and making an evaluation of some aspect of the system or component.”    IEEE/ANSI, 1990.

Testing is a state of mind
“If our goal is to show the absence of errors, we will find very few of them”
“If our goal is to show the presence of errors, we will discover a large number of them”.
Myths & Facts about testing

V Model:
Strategies of Testing:
White Box
Black Box.



White Box Testing:

Logic Driven
Parts of software is tested which can be forgotten in functional testing
Doesn’t ensure user requirement is been met
The tests may not mimic the real world scenario.
Types of White Box Testing
Statement coverage – executes all statement at least once
Decision coverage- executes each decision direction at least once.


Black Box:

Data driven
Focus is on specifications
Simulates actual system usage
One can miss logical errors
Possibility of redundant testing

Types of Black Box Testing

Functional Testing       
Usability Testing          
Volume Testing
Security Testing
Configuration Testing
Compatibility Testing
Installation Testing.     
Recovery Testing
UI Testing
Performance Testing
Load Testing
Stress Testing
Acceptance Testing     
Regression Testing
System Testing.


Functional Testing:

Functionality testing examines the extent to which your hardware, software, Web site, or internal application meets expected functional requirements. Focused approach to functionality testing includes verifying that an application or Web site conforms to specifications and correctly performs all required functions.
Usability Testing
Usability testing is a means for measuring how well people can actually use something (such as a web page, a computer interface, a document, or a device) for its intended purpose.

Security Testing

Security testing is concerned with checking that the system and its data are protected from accidental or malicious damage. The system must be secure against unanticipated as well as anticipated attacks. Security testing may be carried out by inviting people to try to penetrate the system through security loopholes.
Configuration Testing
Checks how the product works on different hardware and when combined with different third party software.

Compatibility Testing

Compatibility testing examines whether your hardware, software, Web site, or internal application works as expected on the wide range of components and systems available in the homes and offices of your end users. 

Installation Testing

Testing concerned with the installation procedures for the system.
Recovery Testing
Confirms that the application under test recovers from expected or unexpected events without loss of data or functionality. Events can include shortage of disk space, unexpected loss of communication, or power out conditions.

UI Testing

Validating user interface of the application against UI specifications.
Performance Testing
Performance testing is testing that is performed to determine how fast some aspect of a system performs under a particular workload.



Load Testing:

The testing of a system that attempts to cause failures involving how the performance of a system varies under normal conditions of utilization (e.g., as the load increases and becomes heavy). Load testing can identify failures involving variation of load in WAN segments or against increasing database size.

Stress Testing:

Stress testing is subjecting a system to an unreasonable load while denying it the resources (e.g., RAM, disc, interrupts,etc.) needed to process that load.  The idea is to stress a system to the breaking point in order to find bugs that will make that break potentially harmful
The system is not expected to process the overload without adequate resources, but to behave (e.g., fail) in a decent manner (e.g., not corrupting or losing data).  

Volume Testing

Volume Tests are often most appropriate to Messaging, Batch and Conversion processing type situations.  In a Volume Test, there is often no such measure as Response time.  Instead, there is usually a concept of Throughput

Testing where the system is subjected to large volumes of data.  
Acceptance Testing

Testing conducted to enable a user/customer to determine whether to accept a software product. Normally performed to validate the software meets a set of agreed acceptance criteria.

Regression Testing:

This technique assures that the change will not cause adverse effects on parts of the application/system that were not supposed to change
System Testing
Testing the system as a whole to validate that it meets its specification and the objectives of its users.

Other Types:

Smoke/Sanity Testing
Alpha Testing
Beta Testing.

Smoke/Sanity Testing

Brief test of major functional elements of a piece of software to determine if its basically operational.

Alpha Testing
Testing of a software product or system conducted at the developers site by the customer.

Beta Testing:
Testing conducted at one or more customer sites by the end-user of a delivered software product or system before the general release of the application.


Test Management Tools:
The tool which are used to manage test-cases (creating, Modifying, Storing Testcases for execution ) are known as Test Management tools. They can be either open source or licensed tools. For Eg: Test Director & Mercury Quality Center (MQC) are Licensed tool(Need to buy license) while Test Link is an open source tool (Free to use)
Defect Tracking tools:
The tool which are used to tracking defects or bugs are known as defect tracking tools. They are used to Manage the bugs or issues reported during testing. User can track the status (resolved or not, open or close etc) of the bug reported during testing.)
QA engineers are required to log the issues found during testing & bug-id is assigned using which the issue is tracked.  Defect tracking tool can be open-source or licensed. For eg: Bugzilla is open source-tool & Jira, MQC etc are licensed tool (MQC is test Management tool & also defect tracking tool is integrated into it.) Some defect tracking tool support their integration with Test Management tool. Eg: Bugzilla into Testlink etc.

Automation tools:


Automation tools are used for Automation testing. The test script can be created either by writing script or by using the record and play back functionality. These tools are used to perform regression testing when the application becomes stable to save time, resources and repetitive work. These can also be used in Performance testing, Load & Stress testing. (Creating a number of virtual user and monitoring the performance of the application when all the user login at the same time.) Automation tool can be either freeware (open-source tools) or licensed. Few tools which are widely used for regression are QTP, Winrunner (both licensed). For load & Performance testing Load Runner, QTP and Jmeter (opensource) can be used. For unit testing Junit is used.

Got any query??? comments are welcome....

Thank You!!!