Monday, December 28, 2009

Testing concepts

What’s the difference between priority and severity?

Priority” is associated with scheduling, and “severity” is associated with standards.“Priority” means something is afforded or deserves prior attention; a precedenceestablished by order of importance (or urgency).
“Severity” is the state or quality of being severe; severe implies adherence to rigorous standards or high principles and often suggests harshness; severe is marked by or requires strict adherence to rigorous standards or high principles, e.g. a severe code of behavior. The words priority and severity do come up in bug tracking.

A variety of commercial, problem tracking/management software tools are available. These tools, with the detailed input of software test engineers, give the team complete information so developer can understand the bug, get an idea of its ’severity’, reproduce it and fix it.
The fixes are based on project ‘priorities’ and ’severity’ of bugs. The ’severity’ of a problem is defined in accordance to the customer’s risk assessment and recorded in their selected tracking tool. A buggy software can ’severely’ affect schedules, which, in turn can lead to a reassessment and renegotiation of ‘priorities’.]


SMOKE TESTING:
Smoke testing originated in the hardware testing practice of turning on a new piece of hardware for the first time and considering it a success if it does not catch fire and smoke. In software industry, smoke testing is a shallow and wide approach whereby all areas of the application without getting into too deep, is tested.
A smoke test is scripted, either using a written set of tests or an automated test
A Smoke test is designed to touch every part of the application in a cursory way. It’s shallow and wide.

Smoke testing is conducted to ensure whether the most crucial functions of a program are working, but not bothering with finer details. (Such as build verification).
Smoke testing is normal health check up to a build of an application before taking it to testing in depth.


SANITY TESTING:
A sanity test is a narrow regression test that focuses on one or a few areas of functionality. Sanity testing is usually narrow and deep.
A sanity test is usually unscripted.
A Sanity test is used to determine a small section of the application is still working after a minor change.
Sanity testing is a cursory testing, it is performed whenever a cursory testing is sufficient to prove the application is functioning according to specifications. This level of testing is a subset of regression testing.
Sanity testing is to verify whether requirements are met or not, checking all features breadth-first.
What is Regression Software Testing?Regression means retesting the unchanged parts of the application. Test cases are re-executed in order to check whether previous functionality of application is working fine and new changes have not introduced any new bugs.
This is the method of verification. Verifying that the bugs are fixed and the newly added feature have not created in problem in previous working version of software.
Why regression Testing?Regression testing is initiated when programmer fix any bug or add new code for new functionality to the system. It is a quality measure to check that new code complies with old code and unmodified code is not getting affected.Most of the time testing team has task to check the last minute changes in the system. In such situation testing only affected application area in necessary to complete the testing process in time with covering all major system aspects.
How much regression testing?This depends on the scope of new added feature. If the scope of the fix or feature is large then the application area getting affected is quite large and testing should be thoroughly including all the application test cases. But this can be effectively decided when tester gets input from developer about the scope, nature and amount of change.
What we do in regression testing?
Rerunning the previously conducted tests
Comparing current results with previously executed test results.
Regression Testing Tools:Automated Regression testing is the testing area where we can automate most of the testing efforts. We run all the previously executed test cases this means we have test case set available and running these test cases manually is time consuming. We know the expected results so automating these test cases is time saving and efficient regression testing method. Extent of automation depends on the number of test cases that are going to remain applicable over the time. If test cases are varying time to time as application scope goes on increasing then automation of regression procedure will be the waste of time.
Most of the regression testing tools are record and playback type. Means you will record the test cases by navigating through the AUT and verify whether expected results are coming or not.Example regression testing tools are:


Winrunner
QTP
AdventNet QEngine
Regression Tester
vTest
Watir
Selenium
actiWate
Rational Functional Tester
SilkTest


Most of the tools are both Functional as well as regression testing tools.
Regression Testing Of GUI application:It is difficult to perform GUI(Graphical User Interface) regression testing when GUI structure is modified. The test cases written on old GUI either becomes obsolete or need to reuse. Reusing the regression testing test cases means GUI test cases are modified according to new GUI. But this task becomes cumbersome if you have large set of GUI test cases.


I have covered what is White box Testing in previous article. Here I will concentrate on Black box testing. BBT advantages, disadvantages and and How Black box testing is performed i.e the black box testing techniques.
Black box testing treats the system as a “black-box”, so it doesn’t explicitly use Knowledge of the internal structure or code. Or in other words the Test engineer need not know the internal working of the “Black box” or application.
Main focus in black box testing is on functionality of the system as a whole. The term ‘behavioral testing’ is also used for black box testing and white box testing is also sometimes called ’structural testing’. Behavioral test design is slightly different from black-box test design because the use of internal knowledge isn’t strictly forbidden, but it’s still discouraged.
Each testing method has its own advantages and disadvantages. There are some bugs that cannot be found using only black box or only white box. Majority of the applicationa are tested by black box testing method. We need to cover majority of test cases so that most of the bugs will get discovered by blackbox testing.


Black box testing occurs throughout the software development and Testing life cycle i.e in Unit, Integration, System, Acceptance and regression testing stages.
Tools used for Black Box testing:Black box testing tools are mainly record and playback tools. These tools are used for regression testing that to check whether new build has created any bug in previous working application functionality. These record and playback tools records test cases in the form of some scripts like TSL, VB script, Java script, Perl.
Advantages of Black Box Testing- Tester can be non-technical.- Used to verify contradictions in actual system and the specifications.- Test cases can be designed as soon as the functional specifications are complete


Disadvantages of Black Box Testing- The test inputs needs to be from large sample space.- It is difficult to identify all possible inputs in limited testing time. So writing test cases is slow and difficult- Chances of having unidentified paths during this testing
Methods of Black box Testing:




Graph Based Testing Methods:Each and every application is build up of some objects. All such objects are identified and graph is prepared. From this object graph each object relationship is identified and test cases written accordingly to discover the errors.
Error Guessing:This is purely based on previous experience and judgment of tester. Error Guessing is the art of guessing where errors can be hidden. For this technique there are no specific tools, writing the test cases that cover all the application paths.


Boundary Value Analysis:Many systems have tendency to fail on boundary. So testing boundry values of application is important. Boundary Value Analysis (BVA) is a test Functional Testing technique where the extreme boundary values are chosen. Boundary values include maximum, minimum, just inside/outside boundaries, typical values, and error values.


Extends equivalence partitioningTest both sides of each boundaryLook at output boundaries for test cases tooTest min, min-1, max, max+1, typical values


BVA techniques:1. Number of variablesFor n variables: BVA yields 4n + 1 test cases.2. Kinds of rangesGeneralizing ranges depends on the nature or type of variablesAdvantages of Boundary Value Analysis1. Robustness Testing - Boundary Value Analysis plus values that go beyond the limits2. Min - 1, Min, Min +1, Nom, Max -1, Max, Max +13. Forces attention to exception handling


Limitations of Boundary Value AnalysisBoundary value testing is efficient only for variables of fixed values i.e boundary.


Equivalence Partitioning:Equivalence partitioning is a black box testing method that divides the input domain of a program into classes of data from which test cases can be derived.
How is this partitioning performed while testing:1. If an input condition specifies a range, one valid and one two invalid classes are defined.2. If an input condition requires a specific value, one valid and two invalid equivalence classes are defined.3. If an input condition specifies a member of a set, one valid and one invalid equivalence class is defined.4. If an input condition is Boolean, one valid and one invalid class is defined.

No comments: