Powered By Blogger

Thursday, October 31, 2013

System Acceptance Testing

Its not like the integration testing where data flow one module to another one But System acceptance Testing test the complete end to end test cases and scenarios, exactly how the customer use the for System

Example for System Acceptance testing is to as follows  : Test Case for this phase is Open login screen and test the login functionality and then Login into the banking or any other application,Then Check Current Balance or any other functionality, Then transfer money to any other account or for billing, and finally Logout

Functional and non-functional requirements both are tested during system testing. Under Non-functional testing tester test performance, reliability of software. And for non functional tester test the design and look up of software properly on different -2 browsers and resolutions.

Acceptance testing is commonly done by the customer on his system or in live mode. All found bugs collected in this testing and fixed accordingly.

Main aim to test the acceptance testing is to confirm that provided requirement by the client is fulfill or not. This is the main point where Tester focuses during Acceptance testing. Tester make sure after fulfilling the all requirement software is working fine and giving correct and expected result or not.

There are Two Types of Acceptance Testing,Which are as follows

Alpha Testing :Alpha testing is the final testing done on the development server by the testers.
Final testing mean now software/website is ready upload on production. When developers are near to finish their development work then this testing start and completed with all possible bug or bug free. If there are bugs then developers does more work otherwise it produced for general public.


Beta Testing : Beta testing is also the part of system acceptance testing and performed by the client or customer on production server. Client test the produced product in live mode. Finally this is also the Acceptance testing performed by the multiple customers or we can say that live customers in the customer environment or on production.

Integration Testing, Definition of Integration Testing

As it name suggest Integration which mean integrate the modules or units together and then perform the testing for all modules together in a flow of data. This is called integration testing. Integration testing mean combined all the units of software together and execute the test cases on them to confirm that after integration of them they are working fine without any issues or error We can call it String Testing and also the Thread Testing

Requirement of Integration Testing  :
In starting developer done the work/code for units or modules. Then after they combined the units and sent the modules or project for testing. So to confirm that units are integrated properly and integrated module is working properly and showing correct result, so this is the need of integration testing

Test Cases for Integration Testing :
Integration test cases are the different to another test case. Like we have module for login, add record and view record. Here first test cases will be created for login unit then add record page and then view record page. Like a flow of data need to be tested, is it in correct way and in correct and proper direction.

Strategies of Integration Testing : There are mainly there are two types of integration testing

Big Bang Strategy: In this strategy all units are combined at once and tested at once

Incremental Strategy It is also divided into more three parts
   Top down strategy:Start integration from top to down and as well as testing.  
   Bottom Up Strategy :start integration from bottom to top and as well as testing.
   Sandwich Strategy :This is combination of above both strategies. Mean combination of top down strategy and bottom up strategy

Process of Integration Testing
First Create or develop the Integration Test Plans
Design the test cases, scenarios and steps for integrations testing
Executing the test cases, finding bug and create report and reporting to developers
Regression and Retesting the bugs

Follow the Step iii and iv till the all bug are not fix and project become the issue free

Unit Testing:

What is unit Testing?
Unit testing is the first step of testing. In this testing, tester tests the individual unit of any software or programmer. This testing generally performed by developer to test the bunch of specific code or function

Objective or Importance of Unit Testing
Main objective or importance of unit testing is to save time and money as this testing performed during development phase by developer. Developers do this testing during coding so that further  process of coding can progress properly without any error or mistake

Building Test Cases for Unit Testing
Generally unit testing performed by automated testing. But some times we performed manually testing for any unit. To check the functionality of any new developed unit user can apply break point in code and run in debug form with the help of special key.

Tools for Unit Testing
Rational Software
Java script Assertion Unit
CUT is test tool with a Fee unit
Dot unit is a Freeware unit testing tool of .net framework, Its a part of junit

Benefits of Unit Testing:
1 Programmers can learn with the help of unit testing as they have to understand the functionality of unit testing and its code, and how it is working.
2 Accuracy: Developers have to confirm that developed code is working fine or not. He will check it and map with old code if there is any error in code
3 Time Saver: Unit testing is time saver, developers can do this testing without  waiting any testing member and complete work on it

Limitation of Unit Testing:
1 Independent code  If code is independent the unit testing is possible otherwise it is not possible

2 . Limitation: Unit testing is related to any specific unit and tester can not catch the error related to integration module

Software Testing Types:

Black box testing – Internal system design is not considered in this type of testing. Tests are based on requirements and functionality.

White box testing – This testing is based on knowledge of the internal logic of an application’s code. Also known as Glass box Testing. Internal software and code working should be known for this type of testing. Tests are based on coverage of code statements, branches, paths, conditions.

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.

Incremental integration testing – Bottom up approach for testing i.e continuous testing of an application as new functionality is added; Application functionality and modules should be independent enough to test separately. done by programmers or by testers.

Integration testing – 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.

Functional testing – This type of testing ignores the internal parts and focus on the output is as per requirement or not. Black-box type testing geared to functional requirements of an application.

System testing – Entire system is tested as per the requirements. Black-box type testing that is based on overall requirements specifications, covers all combined parts of a system.

End-to-end testing – Similar to system testing, involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.

Sanity testing - Testing to determine if a new software version is performing well enough to accept it for a major testing effort. If application is crashing for initial use then system is not stable enough for further testing and build or application is assigned to fix.

Regression testing – Testing the application as a whole for the modification in any module or functionality. Difficult to cover all the system in regression testing so typically automation tools are used for these testing types.

Acceptance testing -Normally this type of testing is done to verify if system meets the customer specified requirements. User or customer do this testing to determine whether to accept application.

Load testing – Its a performance testing to check system behavior under load. Testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the system’s response time degrades or fails.

Stress testing – System is stressed beyond its specifications to check how and when it fails. Performed under heavy load like putting large number beyond storage capacity, complex database queries, continuous input to system or database load.

Performance testing – Term often used interchangeably with ‘stress’ and ‘load’ testing. To check whether system meets performance requirements. Used different performance and load tools to do this.

Usability testing – User-friendliness check. Application flow is tested, Can new user understand the application easily, Proper help documented whenever user stuck at any point. Basically system navigation is checked in this testing.

Install/uninstall testing - Tested for full, partial, or upgrade install/uninstall processes on different operating systems under different hardware, software environment.

Recovery testing – Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.

Security testing – Can system be penetrated by any hacking way. Testing how well the system protects against unauthorized internal or external access. Checked if system, database is safe from external attacks.

Compatibility testing – Testing how well software performs in a particular hardware/software/operating system/network environment and different combination s of above.

Comparison testing – Comparison of product strengths and weaknesses with previous versions or other similar products.

Alpha testing – In house virtual user environment can be created for this type of testing. Testing is done at the end of development. Still minor design changes may be made as a result of such testing.


Beta testing – Testing typically done by end-users or others. Final testing before releasing application for commercial purpose.

Software Development Life Cycle (SDLC) i.e. Waterfall cycle & Iterative cycle, Software Test Life Cycle (STLC) and V-Model for Testing

SDLC - Software Development Life Cycle
SDLC stands for Software Development Life Cycle. As it name suggest life cycle of software development. It contains all required and main steps which are highly required in software development. Motive of SDLC is to fulfill the client requirement in given time periods with full quality control

There are multiple SDLC models like waterfall model ,fountain ,spiral ,build and fix ,rapid prototyping model, incremental model , and synchronize and stabilize model. All are necessary models and used in different  2 cases. But Waterfall model is mostly used in all places

Phases of SDLC are as Follows:
Preliminary Analysis :
This is first phase of SDLC and all primary steps are performed in this phase. Primary Steps like Understand the Requirement provided by client, Calculating Costs, Time and resources, if any issue is there then find out the alternative solutions for them and their efficiency. Find out the objective or organizations are also the step of first phase

Analysis the System or definition of requirement :
Confirm the client requirement and declare the milestone of project and its operations related to applications

Design the System now :
Getting the explanations of desired features and operations in details, i.e. Screen layouts, business rules, flow charts, pseudo code and other documentations.

Development of Units and Integrate them:
Now development start for required project. Here developers get the task from their Project Manager and start the code work on required project. First developer develop the project in units and then combined all the units in one module, then in last they will combined all module and create a complete project.

Testing : After Development testing will start to check the quality of software, same process of testing as development. First unit will be tested, then when unit will pass in testing then their integration will be tested in bottom to top level hierarchy.

Acceptance, Installation, and Deployment :Now when testing will passed on all stages then project will became live to run actual business.

Maintenance: Final stage of SDLC is Maintenance, Now whenever running software on production will get error or any issue then it will be maintained or fix by developer. It is the last
step of SDLC and remains continue for a long time

STLC: Software Test Life Cycle :

Software life cycle is not a single process; it is the group of processes. Items of this group are come under the software life cycle. We can describe this cycle into following sections:

Analysis the Requirement  First step of testing is analysis the requirement provided by the client and understand the it properly otherwise if requirement is not clear then test the project can never be possible

Test Plans :  When requirement will clear then next step is to create the test plan, Mean who will test and how much, all testing will be delivered into team members and their scope will also defined.

Test Case Developmen : Now team members will create the test case for their related module to complete the execution and testing

Environment Setup :After creating the test cases, requirement environment will be set up. So that testing could complete in proper correct scenarios

Test Case Execution : Now when all set up are properly set and test caser are ready then just need to execute the test cases and find out the result.

Reporting Bug or Closing the Project :
If there is issue or bug in executed test cases then testing team will assigned back the project to development team other wise project will be closed.

Analysis the Test Cycle result and remove the limitation for future test methodology

Seven Principles of Software Testing

FIRST PRINCIPLE - Presence of Bug:
The first principle of software testing is to find out the bug from the software or website by hook or cook. There is not any software which has not the bug. All softwares have some bugs or limitations. Testing process is only performed to find out the undiscovered bugs.

SECOND PRINCIPLE  Complete Testing is not Possible:
As per mentioned in first principle of Software Testing that testing can reduce the probability of undiscovered bugs remained in the software but there is not any guaranty about bugs, Complete bug can not be removed from the software even with the help of complete testing. So possibilities of bugs never finished

THIRD PRINCIPLE - Early Testing
Testing should start as early as possible. Early testing can manage the time and expend of project. Testing is very time consuming process. But if it start early then it can be possible to deliver the bug free and quality software to client on time.

FOURTH PRINCIPLE  -Bug Reporting
Bug reporting is also the very important life line of software quality maintenance process.If Bug reporting is proper and correct then developer can easily understand and fix the bugs, otherwise developer will commented the bug as unclear bug and again assign the project to Test team for testing Which caused very time consuming and delay in dead line of project.

FIFTH PRINCIPLE -  Contradiction or Paradox :
This is the general thing of testing process. Developer will do his work and tester will do his own work. Both works are opposite to each other. So contradiction will create generally there.

SIXTH PRINCIPLE - Testing is Requirement dependent:
This is not necessary that testing for same domain will be same for all the clients. dependent on client requirement. In first domain client want some different and in other domain client has different requirement but domain and its motive is same.
For example like: he way you test a e-commerce site will be different from the way you test a commercial off the shelf application

SEVENTH PRINCILE - Absence of errors or fallacy:

Finding the errors or bugs and fixing them is not the thing which declares the requirement of client that has been completed and fulfill. This is another process of finding bug and fixing them.

Tuesday, October 8, 2013

What is software testing

Definition of software testing:
Software testing is a process of validating and verifying that a software application or software program is developed and work as per the business or user requirements.

Why software testing require?
why software testing require is the question in mind of everyone who doesn’t know anything about software/IT field. Now I am describing why sw testing is needed.
First of all I want to inform you that sw testing is done by the software testing engineer. Software developer develops the software program or software application then software tester has to verify that developed software is working fine or not. If developer has make any mistake in code then software application does not functioning as per its original requirement. Here is one simple example

Suppose one application is developed as per client’s requirement for add, edit and delete records. There is one page for add, edit and delete the records. For that there is putted three buttons named “ADD”, “EDIT” and “DELETE”. Now suppose when user clicks on “EDIT” Button it functioning like “DELETE” button and delete the record. This is the mistake.  “EDIT” button should be work for edit the records. So, this mistake is done by the software developer. Software tester has to verify that each and every function is working as per its function and requirement of business flow or not.

One other thing software tester has to consider in mind during testing is software is developed as per user requirement or not. If user has not demanded add, edit and delete functionality and developer has developed same functionality instead of users any other required functionality then that is the mistake made by developer. Software tester has to verify that developed software is functioning as per user/client’s requirement or not.
If Software is developed against the user/client’s requirement or not working as per expectation then that is called BUG or ISSUE. We will see in detail about the difference between BUG and ISSUE, verification and validation latter.
So sw testing is the important and critical process in software development life cycle.There are many types of testing

Types of Testing in Software Testing
Software tester has to do many types of testing in developed software as per the requirement of application and requirement of client/user. But from them, four testing types are main and will be performed on any new developed application or software in software testing. Here is the list of those main four types of testing.


1. Unit/Component Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing

Definition of Unit/Component Testing :
     In  software application or software program, unit testing is the process of testing the smallest piece of testable software application to determine that whether it behaves exactly as per the expectation or not.This is will be performed first from all types of testing. Unit testing is done by the software developer
Phase of  Integration Testing will comes, once Unit testing passed successfully.

Definition of Integration Testing :
Integration testing is the testing process when  two or more units are combined with each other then produces results that satisfy functional requirement or not. In integration testing, combined two or more modules are tested as a group. testing type integration testing will come in in picture once unit testing completed. If there found any issue during the unit testing and not fixed it, Integration testing can not be done.Integration testing is done by the software tester.
System testing will comes after completion of integration testing in software testing life cycle.

Definition of System Testing :
System testing is the process to verify that hole integrated system is working fine and as per the requirement or not. system testing explore functionality of the system. System testing is done by the software tester.
After completion of system testing, Acceptance Testing comes in software testing life cycle.

Definition of Acceptance Testing :
Acceptance Testing is performed at last stage of STLC to determine that developed software is as per user's requirement or not. In acceptance testing, Software tester compares each and every functionality of developed software with the requirement document of user and confirm it.
All these four are main types of testing of developed software. there are many more testing types. we will see all of them latter

What is unit testing in software testing
Unit testing is the testing process in software testing to verify that the smallest testable part or a unit of an application, are tested independently and individually to verify that specific unit is working fine as per requirement or not.

Generally software developers have to do Unit testing when they develop smallest part of an application. After development of specific unit of an application, developer check and verify that how behaves new developed unit independently. If there is any error or bug then they have to solve it in first stage.

Here is the simple example of Unit testing
Suppose there is developed one functionality for add, edit and delete records. Now when user clicks on edit button, it proceeds for deleting the record. Then it is not right operation. It is called bug in IT industry. This mistake is done by developer during the unit's development of an application. This bug should be solved before the integration of two or multiple Units of application.

Why unit test Require?
There is one fact in software industry is bugs found during early testing phase are less cost and time consuming than bugs found during latter stage. In software testing life cycle, Unit test is the first stage means early stage than the other testing phases. So if Unit testing is done and bugs founded and fixed during unittest phase are less time and cost consuming.
One more thing if unit test is not done and if that unit is integrated with any another unit then integration testing is not possible. Because for integration testing specific units should must work properly. That’s why unittest is compulsory for integration testing.

What is integrated testing in software testing

Definition of integration testing
Integration testing is the testing process in software testing to verify that when two or more modules are interact and produced result satisfies with its original functional requirement or not. Integrated testing is fall in Black box testing. Integrated testing will start after completion of unit testing.  Software testing engineer is performing integration testing

Why integrated testing require?
Integration testing finds the bugs that occur when two or more models integrated. Main purpose of Integration testing is to identifying the functional, requirement and performance level bugs. When modules not integrated, they perform as per requirement but when they integrated, functional, requirement and performance related issues will occurs due to the integration.
There are three different types of integration testing approach in software testing.
1. Big Bang
2. Top down
3. Bottom up

1. Big Bang
Big Bang Integration testing approach used to find the bugs when all the developed modules are interacted with each other and create a complete software system then its produced result satisfying with original requirement.

2. Top down
In Top down integrated testing approach, all Top level integrated modules are tested first and its sub modules tested from top to down step by step.

3. Bottom up
In Bottom up integrated testing approach, all bottom (Sub Modules) level integrated sub modules are tested first and its main modules tested from bottom to up step by step..

What is acceptance testing in software testing

Definition of acceptance testing
Acceptance testing is performed by software testing engineer or end user. Acceptance test gives confidence to end user that application being delivered to them meets their requirement or not. Acceptance testing is fall under black box testing.

Why acceptance testing requires
Acceptance test is performed after completion of different types of software testing like unit, integration and system testing. In acceptance test, tester goes through the application and verifies its each and every functionality with requirement document. Acceptance testing is final testing and is performed before the delivery of application or software to end user for use. Its main purpose is to find the bugs but to get the confidence of end users requirements are fulfilled or not. Acceptance test is the last phase of STLC. After that, maintenance testing is performed on software or application if required.

What is system testing in software testing

System testing definition
System testing is the testing process in software testing to verify the completeness of system with its original requirement and to find the problems. System testing is start after completing the integration testing. System test is the third phase of testing in STLC. System test is most important phase in STLC because bugs not found in unit and integration testing are founded during system test.

Why system testing require?
System testing process is fall under black box testing. Software testing engineer perform system testing on complete integrated system. In system testing techniques, Software tester has to not verify only functionality of the system, But he has to test many different types of testing like load, performance, stress, scalability to verify the complete system behavior. First he tests the system to verify its functionality and then he has to test the system for its performance and more. In system testing, Software test engineer has to test system's all functionality flow wise. He has to check each and every portion of application in depth because this is the final testing of application. In system testing, Software test engineer has to test the integration between software and hardware if any connected to verify its behavior.
Bugs fixing is more time and cost consuming which are founded during the system testing as compared to bugs founded during integration and unit testing.

Which documents or knowledge is required to start writing Test cases
Documents required to start writing Test cases

SRS Definition :
SRS is the document which contain all requirement description about software. SRS will be provided by the client before development of software. Basically it is knowladge transfer document between client and development center. Full form of SRS is Software requirement specification.

SRS Example :
Software system should be compatible with mac OS - Safari 5+ environment.

BRS Definition :
BRS is the document which contain business requirement constraints of client application. Full form of BRS is Business requirement specification. here is the one example of BRS

BRS Example :
Log file should be deleted after one year.
Use Case :
Use Case is the document which contain potential requirement of application.