Posts

Showing posts from 2011

What are Software Testing Types

Black box testing : You don't need to know the internal design in detail or have a good knowledge about the code for this test. It's mainly based on functionality and specifications, requirements.
White box testing : This test is based on detailed knowledged of the internal design and code. Tests are performed for specific code statements and coding styles.
Unit testing : The most micro scale of testing to test specific functions or code modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. Not always easily done unless the application has a well-designed architecture with tight code, may require developing test driver modules or test harnesses.
Incremental integration testing : Continuous testing of an application as new functionality is added. Requires that various aspects of an application's functionality be independent enough to work separately before all parts of the program are complete…

Importance of Testing Certifications

One question testers often ask us these days is, how important is getting yourself certified if you are a tester? And what are the certifications a tester should be going for?

Well, the answer is: Certification is one way to stand out in the market and stay clear off the crowd. Certifications like ISEB/ISTQB or CSTE/CSTA etc are very much respected in the IT world and most often clients require these as a pre-requisite for any tester if they are to join their project team.

By getting certified you not only increase the value of your resume, you also enhance the chances of your resume getting shortlisted (in case you are looking for a job/job change).

The question then is: Which certifications are the best?

The answer is: All of them are good as long as they are from accredited organizations/body like QAI (Quality Assurance Institute, USA) or TSTQB (International Software Testing Qualification Board)

For people who are trying to make a career in Software Testing, basic ISTQB tester …

Agile Testing

Historically, software testing has always been about finding where the software breaks. In fact, when we talk about the qualities of a good software tester we quote anecdotes about how "she was able to break my program in 3 minutes" or that "he found 27 bugs when running on Linux with Apache". In other words, software testing was about finding bugs and software testers would get rewarded for and take satisfaction from finding bugs.

Whereas agile testing is more about keeping the bugs out than finding the ones that are in there. The (automated) software tests that are written in agile testing are more about showing that the software works the way we expect than about finding where it breaks.

This doesn’t mean that agile testers should not attempt to find bugs nor that pre-agile testers never write tests to show what works. It means agile thinking has introduced a change in emphasis from “fault-finding” to “working software”.

In pre-agile days, developers would bang …

Localization Testing

Localization testing is part of software testing focused on internationalization and localization aspects of software.Localization Test is the process of adapting globalized application to a particular culture/locale. Localizing the application requires a basic understanding of the sets of character commonly employed in modern software development and an apprehension of the risks associated with them.Localisation testing checks how well the build has been interpreted into a particular target language. This test is founded on...

SDLC vs STLC–Differences & Similarities Revisited

Few days back, I was taking some interviews. I surprised to see some candidates were not able to explain simple concepts like SDLC & STLC. Everybody, was giving me very standards answers. SDLC - a systematic approach to develop a software and STLC - process of testing a software in a systematic and planned way. No one explains me logical Differences & Similarities between these two.
My question is very simple – How you can relate six phases Requirement, Design, Development, Testing, Deployment & Maintenance to Software Testing Life Cycle?

Let’s see how I related these six phases with STLC

S. No.PhaseSDLC - Software Development Life cycleSTLC - Software Test Life Cycle1Requirements GatheringRequirements gathering is done by business analyst. Development team analyse the requirements from the design, architecture & coding perspective.Testing team also review & analyse the requirements. Testing team identifies the testing requirements like what types of testing will be …

Software Test Management and Planning

Software Testing Estimation Process – It covers some important factors which needs to be taken care while doing estimation. Organizing the Software Test Team – One of the important tasks for the Software Test Manager.Software Test Readiness Review Checklist – A sample checklist for Software Test Leads & Managers to evaluate the readiness of the application released for software testing. 


Identify Software Testing Types and Exit Criteria – Identifying various types of software testing's required for the application and Exit Criteria, both are very critical for the success of testing effort. Software Test Planning – The quality of the testing effort is directly proportional to the quality of the test planning. Software Testing Bible - Software Test Plan Document – The document usually created after software test planning or parallel with the Test Planning effort. Software Test Specification - a detailed summary of what all scenarios shall be tested and how they will be tested. I…

Software Testing Types, Methods and Strategies

Challenges in Software Testing

All software engineering areas face lot of challenges during execution. So, I would say, as a tester, never ever get surprised when you face challenges in software testing. But, it is also a hard fact for tester community that most of the companies are not testing oriented. Management always do a good appraisal of development teams. Sometimes, appreciation goes to development teams only.
Few points that I want highlight to management / project managers & development teams:
If development teams are so good / intelligent, then why you need testers to test the application. Remember - by testing a build / release, testers evaluate the Quality of work done by developers. During every regression testing, lot of bugs got re-opened (what quality of work was done by developers) Sometimes, a customer release requires 5-7 regression testing cycles. Think Why? During these 5 to 7 regression cycles, developers made so many mistakes. Testers help to prevent the defect leakage to customer. But, …

How to do System Testing

Testing the software system or software application as a whole is referred to as System Testing of the software. System testing of the application is done on complete application software to evaluate software's overall compliance with the business / functional / end-user requirements. The system testing comes under black box software testing. So, the knowledge of internal design or structure or code is not required for this type of software testing.

In system testing a software test professional aims to detect defects or bugs both within the interfaces and also within the software as a whole. However, the during integration testing of the application or software, the software test professional aims to detect the bugs / defects between the individual units that are integrated together.

During system testing, the focus is on the software design, behavior and even the believed expectations of the customer. So, we can also refer the system testing phase of software testing as investi…

Difference between Smoke & Sanity Software Testing

Smoke Testing: Software Testing done to ensure that whether the build can be accepted for through software testing or not. Basically, it is done to check the stability of the build received for software testing.

Sanity testing: After receiving a build with minor changes in the code or functionality, a subset of regression test cases are executed that to check whether it rectified the software bugs or issues and no other software bug is introduced by the changes. Sometimes, when multiple cycles of regression testing are executed, sanity testing of the software can be done at later cycles after through regression test cycles. If we are moving a build from staging / testing server to production server, sanity testing of the software application can be done to check that whether the build is sane enough to move to further at production server or not.

Difference between Smoke & Sanity Software Testing:

Smoke testing is a wide approach where all areas of the software application are teste…

Performance Testing vs Load Testing vs Stress Testing - Examples

Performance testing - It is performed to evaluate the performance of components of a particular system in a specific situation. It very wide term. It includes: Load Testing, Stress Testing, capacity testing, volume testing, endurance testing, spike testing, scalability testing and reliability testing etc. This type of testing generally does not give pass or fail. It is basically done to set the benchmark & standard of the application against Concurrency / Throughput, Server response time, Latency, Render response time etc. In other words, you can say it is technical & formal evaluation for responsiveness, speed, scalability and stability characteristics.

Load Testing is subset of performance testing. It is done by constantly increasing the load on the application under test till the time it reaches the threshold limit. The main goal of load testing is to identify the upper limit of the system in terms of database, hardware and network etc. The common goal of doing the load test…

History of Software Testing

This page is under contruction. watch out for this space

Defect Priority and Severity Levels

Defects are given a priority and severity level. Such classification is absolutely needed as the development team cannot resolve all defects simultaneously. The test team needs to indicate how soon they want to get the defect fixed, and how big the impact on the functionality of the application under test is. Let's have a look at the classification levels:

Defect priority
High: Fix the defect immediately. A core functionality fails or test execution is completely blocked.

Medium: Fix the defect soon. An important functionality fails but we don't need to test it right away and we have a workaround.

Low: Don't fix this defect before the high and medium defects are fixed but don't forget this defect.

Defect priority indicates the impact on the test team or test planning. If the defect blocks or greatly slows down test execution, you might want to select the highest grade for the defect priority.


Defect severity
Critical: A core functionality returns completely invalid results o…

Static Testing

Static testing is a form of testing that does not involve execution of the application to be tested. Static testing involves going through the application’s code to check mainly for – conformance to functional requirements, conformance to design, missed functionality and coding errors.  Static testing is generally effective in finding errors in logic and coding.

Static testing may be performed by humans as well as software tools. Here, we look at static testing performed by humans. There are three main types of static testing that are performed. Desk checking Code walkthrough Code inspection While desk-checking is performed by the author of the code who reviews his/her portion of code, the other two techniques of walkthrough and inspection involve a group of people apart from the author of the code performing the review.

Normally, static testing is performed in the time frame between when the application is coded and dynamic testing begins. Static tests may be performed even earlier a…

State Transition Testing

State transition testing is used where some aspect of the system can be described in what is called a “finite state machine”. This simply means that the system can be in a (finite) number of different states, and the transitions from one state to another are determined by the rules of the “machine”. This is the model on which the system and the tests are based. Any system where you get a different output for the same input, depending on what has happened before, is a finite state system.

For example :

If you request to withdraw £100 from a bank ATM, you may be given cash. Later you may make exactly the same request but be refused the money (because your balance is insufficient). This later refusal is because the state of your bank account had changed from having sufficient funds to cover the withdrawal to having insufficient funds. The transaction that caused your account to change its state was probably the earlier withdrawal. Another example is a word processor. If a document is open…

White Box Testing

White box testing is very different in nature from black box testing. In black box testing, focus of all the activities is only on the functionality of system and not on what is happening inside the system.
Purpose of white box testing is to make sure that
Functionality is properInformation on the code coverageWhite box is primarily development teams job, but now test engineers have also started helping development team in this effort by contributing in writing unit test cases, generating data for unit test cases etc.
White box testing can be performed at various level starting from unit to system testing. Only distinction between black box and white box is the system knowledge, in white box testing you execute or select your test cases based on the code/architectural knowledge of system under test.
Even if you are executing integration or system test, but using data in such a way that one particular code path is exercised, it should fall under white box testing.
There are different ty…

Black Box Testing

Image
What is Black Box Testing?
Black box testing is a software testing techniques in which
functionality of the software under test (SUT) is tested without looking
at the internal code structure
, implementation details and knowledge of
internal paths of the software.This type of testing is based entirely on
the software requirements and specifications.





In Black Box Testing we just focus on inputs and output of the software system without bothering about internal knowledge of the software program.

The above Black Box can be any software system you want to test. For example : an operating system like Windows, a website like Google ,a database like Oracle or even your own custom application. Under Black Box Testing , you can test these applications by just focusing on the inputs and outputs without knowing their internal code implementation.

Black box testing - StepsHere are the generic steps followed to carry out any type of Black Box Testing.
Initially requirements and specifications of the sy…

Acceptance Testing

DEFINITION

Acceptance Testing is a level of the software testing process where a system is tested for acceptability.
The purpose of this test is to evaluate the system’s compliance with the business requirements and assess whether it is acceptable for delivery.

ANALOGY

During the process of manufacturing a ballpoint pen, the cap, the body, the tail and clip, the ink cartridge and the ballpoint are produced separately and unit tested separately. When two or more units are ready, they are assembled and Integration Testing is performed. When the complete pen is integrated, System Testing is performed. Once the System Testing is complete, Acceptance Testing is performed so as to confirm that the ballpoint pen is ready to be made available to the end-users.

METHOD

Usually, Black Box Testing method is used in Acceptance Testing.
Testing does not usually follow a strict procedure and is not scripted but is rather ad-hoc.

TASKS
Acceptance Test Plan PrepareReviewReworkBaselineAcceptance Test Cases/…

Integration Testing

Objective of Integration testing is to make sure that the interaction of two or more components produces results that satisfy functional requirement. In integration testing, test cases are developed with the express purpose of exercising the interface between the components. Integration testing can also be treated as testing assumption of fellow programmer. During the coding phase, lots of assumptions are made. Assumptions can be made for how you will receive data from different components and how you have to pass data to different components.

During Unit Testing, these assumptions are not tested. Purpose of unit testing is also to make sure that these assumptions are valid. There could be many reasons for integration to go wrong, it could be because

Interface Misuse A calling component calls another component and makes an error in its use of interface, probably by calling/passing parameters in the wrong sequence.

Interface Misunderstanding A calling component makes some assumption abo…

Waterfall Model

Image
The simplest software development life cycle model is the waterfall model, which states that the phases are organized in a linear order. A project begins with feasibility analysis. On the successful demonstration of the feasibility analysis, the requirements analysis and project planning begins.

The design starts after the requirements analysis is done. And coding begins after the design is done. Once the programming is completed, the code is integrated and testing is done. On succeeful completion of testing, the system is installed. After this the regular operation and maintenance of the system takes place. The following figure demonstrates the steps involved in waterfall life cycle model.


The Waterfall Software Life Cycle Model
With the waterfall model, the activities performed in a software development project are requirements analysis, project planning, system design, detailed design, coding and unit testing, system integration and testing. Linear ordering of activities has some im…

Software Testing Life Cycle (STLC)

Software Testing Life Cycle:

Software testing life cycle or STLC refers to a comprehensive group of testing related actions specifying details of every action along with the specification of the best time to perform such actions. There can not be a standardized testing process across various organizations, however every organization involved in software development business, defines & follows some sort of testing life cycle.
STLC by & large comprises of following Six Sequential Phases:

1) Planning of Tests
2) Analysis of Tests
3) Designing of Tests
4) Creation & Verification of Tests
5) Execution of Testing Cycles
6) Performance Testing, Documentation
7) Actions after Implementation

Every company follows its own software testing life cycle to suit its own requirements, culture & available resources. The software testing life cycle can’t be viewed in isolation, rather it interacts with the every phase of Software Development Life Cycle (SDLC). Prime focus of the software test…

User Acceptance Testing

What is User Acceptance Testing?
User Acceptance Testing is often the final step before rolling out the application.

Usually the end users who will be using the applications test the application before ‘accepting’ the application.

This type of testing gives the end users the confidence that the application being delivered to them meets their requirements.

This testing also helps nail bugs related to usability of the application.

User Acceptance Testing – Prerequisites:

Before the User Acceptance testing can be done the application is fully developed.
Various levels of testing (Unit, Integration and System) are already completed before User Acceptance Testing is done. As various levels of testing have been completed most of the technical bugs have already been fixed before UAT.

User Acceptance Testing – What to Test?

To ensure an effective User Acceptance Testing Test cases are created.
These Test cases can be created using various use cases identified during the Requirements…

Regression Testing

Regression testing is the re-running of Test cases that a program has previously executed correctly, in order to detect failures spawned by changes or corrections made during software development and maintenance.


These failures arise from incomplete or incorrect changes and are often witnessed as (unexpected) side effects in apparently unrelated application areas. It is common in the IT industry, that one in six  of correction attempts are themselves defective. This high rate of introduced defects is exaggerated when developers maintain a large number of poorly documented, integrated systems where they of ten have little or no experience of these systems. Regression testing may then be used to great effect at detecting subtle side effects and unconsidered inter-relationships within these environments, thus reducing risk.


In regression testing standard actions in a test procedure are carried out and the expected responses are checked for correctness. Failure of the system to reproduce an…

Regression Testing and Retesting

Whenever testers test a software they find defects. These defects are then fixed by developers and the testers then retest the defects. This is called DEFECT RETESTING.

Because there are defects that have been fixed there is also a high probability that some other parts of the applications that were earlier working fine may now have problems. Why? Because the code that was modified (while fixing defects) could be calling or was being called by some other part of code. In order to make sure that these parts of application are working fine, testers do regression testing.

Regression testing means rerunning test cases from existing test suites to build confidence that software changes have no unintended side-effects. The “ideal” process would be to create an extensive test suite and run it after each and every change. Unfortunately, for many projects this is just impossible because test suites are too large, because changes come in too fast, because humans are in the testing loop, becau…