Monday, 31 August 2015

Static testing Vs Dynamic testing

Static Testing :
Under Static Testing code is not executed , rather it manually checks the code requirement documents and design documents to find errors . Hence the name is "Static". This is the process of examination of apps which includes reviews and inspections as well as code. Main objective of this testing is to improve the quality of software products by finding errors in early stages of the development cycle. This testing is also called as Non-execution technique or verification testing.It involves both manual and automation testing . The reviews are done during initial phase of the STLC to identify the defects in the early stages . It simply examines the work documents and gives review comments . 
Work document can be of following:
  •          Requirement specifications
  •          Design document
  •          Source Code
  •          Test Plans
  •          Test Cases
  •          Test Scripts
  •          Help or User document
  •          Web Page content     
Testing techniques used for Static Testing :
Informal Reviews:
This is a type of review which doesn't follow any process to find errors in document.Under this review we will just review the requirement document and give comments. It simply looks like discussion done in an informal way.This is a common way of reviewing
Technical Review:
A team consisting of peers, review the technical specification of the software product and checks whether it is suitable for the project or not.they try to find any variances in the specifications and standards followed. This review concentrates mainly on the technical document related to the software such as Test Strategy, Test Plan and requirement specification documents.
WalkThroughs:
We will have author and scribe in this reviews. The author who develops product will explain about the product and participants can ask questions if they have. Meeting is led by the author.Scribes makes note of review comments. 
Inspections: 
The main purpose is to find defects and meeting is led by trained moderator. This review is a formal type of review where it follows strict process to find the defects. Reviewers have checklist to review the work products. They record the defect and inform the participants to rectify those errors.
Static Code Review: 
This is a systematic review of the software source code without executing the code. It checks the syntax of the code, coding standards , code optimization etc. this is also termed as white box testing. This review can be done at any point during development.
Dynamic Testing :
Under Dynamic Testing executes the code. It checks the functional behavior, software system and memory usage /cpu  and overall performance of the system.Hence the name is "Dynamic".Main objective of this testing is to confirm that the software product works in conformance with the business requirements. This testing is also called as Execution technique or validation testing. Dynamic testing executes the software and validates the output with the expected outcome.Dynamic testing is performed at all levels of testing and it can be either black or white box testing
Testing techniques used for Dynamic Testing :
Unit testing:
A smallest part of software application is called a unit. When we conduct testing on this particular unit it is called a Unit Testing. it is performed by developers and while conducting unit testing and component testing they will use white box testing techniques.
Integration Testing: 
After all units are tested , they are combined as modules . We will check whether the connection between the units or modules are working or not .This is called integration Testing . Developers do this type testing . Developers generally follow 4 types of integration testing approaches 
  • Top Down approach
  • Bottom Up approach
  • Bi- Directional approach
  • Big Bang approach
System Testing :
After completion of Integration testing the developers handover the application to the testers. This application/system is called as System Under test / Application under test (SUT/AUT). Then the testers do complete system testing , they mainly check three aspects in system testing 
  • Usability 
  • Functionality 
  • Non Functionality 
Verification and Validation are two measures used to check that the software product meets the requirements specifications. Static testing involves verification whereas dynamic testing involves validation. Together they help improve software quality.

Friday, 28 August 2015

Software testing life cycle

Testing is process, it is not a single activity.It has a specific steps to be executed and in a definite sequential order to ensure whether the goals of testing are met or not.In STLC we have different phase in which steps are carried out in systematic and perfect planned way . Software testing life cycle consists of five phases which are as follows
  • Test planning and Control
  • Test analysis and Design 
  • Test Implementation and execution 
  • Evaluating exit criteria and reporting
  • Test closure
Test Planning and Control :
Test planning generally deals with what to test? when to test? who will be testing and how to test? The test plan shall have the the Test plan identifier which identifies the requirements, test items needed for testing and features which are to be tested and features not be tested . It also deals about what test approach we've to use and declaring Item pass /fail criteria, test deliverable s and artifacts , test tasks to be done and environmental needs like system requirements and tool requirements . It also plans the staffing and assigning roles and responsibilities..It plans the schedule about when to start testing and risk contingencies . It also gets approvals and mainly plans about risk impact .
Test Control is nothing but controlling and measuring the progress of the project .It is an ongoing activity which is used to measure and analyze the reviews and testing., monitors the test coverage and exit criteria and also initiates the corrective actions and make decision. mainly test lead plans and controls the test process.
Test Analysis and Design:
Test analysis and design is the activity where general testing objectives are transformed into tangible test conditions and test designs .In this phase we take general testing objectives like reviewing the test basis and evaluating testability and identifying the test conditions and design test cases and set up a test environment and creates a test trace ability matrix .In designing we deal with test case design and is a very deep thinking activity and in order to think we need test design techniques. Techniques is nothing but a way of deriving good test cases and objectively measuring a test effort and it helps in successful finding of faults. 
Test Implementation and Execution :
After analysis and designing test engineers mainly concentrate on the test case preparations .the test case preparation is done manually or in automation tools.Manually we can write the test cases in excel sheets or word or ..doc . In automation we use Quality Center to write test cases.test cases are of two types one is User Interface test cases design and other is Functional and System based test case design .It also conducts reviews on test cases.
Test execution is is the process of execution alter or selected number of test cases either manually or using automation tools . First execution starts with Smoke testing, Comprehensive testing , Retesting and regression testing,final regression testing and sanitation testing. It executes the test suites and also creates the test documents, incidents and reports and defect reports 
Evaluating Exit criteria and Reporting :
The major task of evaluating and exit criteria and reporting are checking test logs against  the exit criteria specified in test planning.Assessing if more tests are needed  if the exit criteria specified should be changed. Writing a test summary report for stake holders. maximum test cases are executed with certain pass percentages and bug rate falls and when achieved. 
Test Closure:
During test closure activities , we collect data from completed test activities to consolidate exp.  including checking and fitting testware and analyzing facts and numbers.the major tasks involve in test closure. are 
  • It finalizes and archiving testware, the test environment and the test infra structure for later reuse
  • Handover testware to the maintenance organisation
  • Analyzing lessons learned for future releases and projects and the improvements of test maturity   









Thursday, 27 August 2015

System Testing

After completion of integration testing developers deliver application to the testers, This application is called as Application under test (AUT) or System under test (SUT). Then testers conduct testing on that particular AUT or SUT which is called System Testing. They conduct System testing in the following ways .
  • Usability 
  • Functionality
  • Non Functionality
Usability :
Generally the system testing starts with usability testing only. It checks whether the system is user friendly or not . The user should easily able to use it . The testers mainly concentrate the ease of the system. it is a black box testing technique. It reveals whether user feels comfortable in using the application or not. Usabilty testing includes the following five components like learnabilty , efficiency, memorability, errors, satisfaction. it starts with user interface testing to check each and every interface of the application like (GUI). User Interface testing is done by following approaches like ease of use ,look at feel, short navigation, speed in interface .It is cosmetic testing 
In this usabilty testing testers also check the manuals of the application which are provided by the developers at the time of  software delivery. During this , testers check the user manual for completeness and correctness  Manual support test document is done on help documents  iman like proof readings, views and demo videos , whether they are any demo videos for better understanding of the system or not . Navigation interface is available or not. the usabilty testing is very economical if planned properly and it is also highly effective and very beneficial testing.It is helpful in identifying the potential bugs and patholes in the system.
Functionality :
After complteion of usabilty testing on every screen of our application , testers concentrate on the requirement completeness and correctness using the black box testing techniques .Genarally during this functional testing , testers are checking the functionality of the application it is checked in the following ways 
  • GUI coverage 
  • error handling
  • Input domain coverage
  • Manipulation Coverage 
  • Back end Coverage 
GUI coverage :
During this coverage testing, testers check the buttons, edit boxes, radio buttons, list boxes , properties change according to customer expected or not . 
Error Handling Coverage :
If users has performed any wrong operation  , then the application has to display an appropriate error message . this is known as error handling, during this , tersters are checking wrong operations or tasks are handled by the system and a meaningful error message is given or not .
Input domain coverage : 
Tester generally check that how much range of input can be given to a system or an application with respect to the specification.Here the testers check the valid or invalid input and they even check the range whether it is below or above the boundaries.
Manipulation coverage :
It is nothing but a output coverage . testers check whether the output displayed is correct or not and they mainly compare the correctness of existing output with expected output.
Back end/Data base Coverage :
In this testers check the impact of the front end operations on the back end table are constant or not.database coverage is done to check the database connections to check the data source name, and acess controls for the databases, to check the insert , delete and update options.
Non Functionality Testing :
After completion of the functional testing, testers mainly concentrate on extra features of a system or an application.Testers concentrate mainly on the reliability testing , compatibility testing ,portability testing, system integration testing, performance testing, security testing, localisation / internationalization ,  installation/ uninstall etc.,In a non functionality testing the quality factor is mainly concentrated 
it deals with the aspects that are not related to the functionality such as scalability or security etc.,




















Tuesday, 25 August 2015

Frameworks in QTP:

A frame work is a set of guidelines or set of best practices that enforces and set of standards which makes it easy to use for the end user to work with. A framework is a systematic approach which helps the end user to easily use the application. Frameworks in automation are of different types. But most commonly we use five frameworks. The five frameworks are very important and they listed as follows
·         Linear framework
·         Modular framework
·         Data driven framework
·         Keyword framework
·         Hybrid Framework

Linear Framework:

Linear framework is the framework where we write the visual basic scripts in step by step manner as depicted in the test case flow.it will particularly follow the test cases in step by step order.In this type of framework , We do not create any functions . All the steps are written one after the other in a linear fashion. The advantages of this linear Frame work is automation expertise is not required as record and playback methods can be used to create scripts. No need of using expertise framework recording will help to write the scripts.It is the fastest and easiest way to create test scripts.But if we want to reuse the code the only way is to copy paste it in different ways which leads to code duplication. If we want to change any thing, then lot rework has to be done which will create duplication a lot.
Modular Framework:

Modular Framework is the approach where all the test cases are first analyzed and then find out the flows which are reusable. While scripting all these reusable test cases are created like functions and stored in the external files. And they are called in the test scripts whenever these reusable files are required. The script can be created in a short period, as the reusable functions need to be created only once. It requires less effort to create test cases because we reuse code. But it had some disadvantages because the data is coded in the script ,the same test case may not be run continuously for many times if didn’t change the data for each run.It requires good programming knowledge is required to create and maintain these function libraries
Data Driven Framework:

In data driven framework, the data is not a hard coded in the test script. Instead, we store the test scripts in some external files .Firstly we connect the framework to the external source and then extracts the data from the source. Most of the times, excel sheets are used to store the data , other external data sources that are frequently used are text files, Xml files and databases . Since the data is kept separately from the test scripts, the same test scripts can be used to run multiple times for different sets of data. Changes made in the test data don’t effect the test scripts in any ways and vice versa. Basically for this data driven frameworks additional effort and good technical expertise is required to create functions that connect to the external data sources to retrieve the data, time is consumed a lot to prepare test cases separately and identify which data source is to be used and it is difficult how to data should be stored pr grouped in that external data source.

Keyword Framework:

In keyword driven framework,we can create a various keywords and can assess different actions or functions with each of these keywords.then we create a function library that contains the logic to read the keyword and call the associated action accordingly.We can run on multiple applications and the keywords and function libraries are completely generic so we can reuse them easily for different applications. All the complexities are added in the function libraries and once these libraries are ready to use , it becomes more easy  to write the actual test scripts steps in excel sheets  But as we have to create complex keywords and libraries more programming skills are needed for this . It’s not easy for new people to understand the framework quickly.

Hybrid Framework:

Hybrid framework, the name itself suggests that it is created by combining different features of any of the frameworks mentioned above like data driven, keyword, linear, modular etc., Based on our requirements we can combine the features of any of the above frameworks to come up with our own versions of hybrid frameworks.The main advantage of this framework is that you can use the best features from all the types of frameworks to create your own framework. But this framework needs highly good programming skills as it is very complex  to combine required frameworks . We’ve to be expertise and experienced to build it from scratch.  

Friday, 21 August 2015

Software Testing Principles

People feel that Software testing is child's play but actually it is not.It is sum of total all processes, which verifies each and every functionality and correctness of the software by following several methods .Software testing not only checks it's reliability and also checks whether the application is running as per the expectations or not.Mainly Software testing is also done based on risk approach. When there is less time and there are more features to be tested ,risk based approach is used.Software Testing has seven important principles .
They are 

  • Exhaustive testing is impossible 
  • Testing shows the presence of Defects
  • Defect Clustering
  • Pesticide Paradox
  • Early testing avoids the Faults multiplication
  • Testing is Context Dependent
  • Absence in Error Fallacy
Exhaustive Testing is Impossible :
What is exhaustive testing ? If a testing process covers/exercises  all the combinations of inputs or preconditions of a given application/ software , then that type testing is known as exhaustive testing . It takes impractical amount of time .Testing every aspect is may not be feasible at all the time .Some times the testers would be given very less time and at such apex moments they mainly concentrate on risk prioritized test inputs and on the business critical areas during testing . So exhaustive testing is quite impossible .


Testing shows the presence of the Defects :  
Testing can show that defects are present but it cannot prove that there are no defects . Diseases are there that's the reason doctor's survive ,so we cannot say that doctor's are there that's the reason diseases exist , the second statement doesn't make any sense here. The same scenario happens with the testing too.Testing helps in reducing the probability of undiscovered defects remaining in the software. But if defects are not found also , it is not a proof of complete correctness of the software . So the testing just show that defects are present . 
Defect Clustering:
Defect Clustering simply says that small modules and units in a software contains more number of defects . In most cases these defects are identified during the pre-release of the testing or show most of the operational failures . 
Pesticide Paradox: 
Some tests repeated over and again is nothing but pesticide paradox .Test Cases has to be reviewed and revised regularly according to the changes in the application functionality and new test cases should be written in addition , to exercise different parts of the software or system which will potentially find more defects . Otherwise testing the application with some set of the test cases over a period of time,irrespective of the changes to the application will reduce the test effectiveness.
Early Testing avoids Fault Multiplication:
Testing activity has to be introduced as early as possible in the software development life cycle because defects which are found in the earlier stages are cheaper to fix .For example if there is a requirement missed in a Business requirement specification ,If it is identified during this stage then it can be easily modified or fixed . But if it is not identified in the requirement gathering stage and if this defect is neglected it will effect the complete software in the later stages which effects the business economically a lot . So testing has to be implemented as early as possible in SDLC 
Testing is Context dependent :
Testing every application is a unique process. We cannot apply the same strategy/approaches for all the applications .Every module in an application has different test approaches to be followed .So Testing is completely dependent on the context . For example Safety Critical Software is tested from an E-commerce site . 
Absence of Error Fallacy:

Finding errors in an application which is not used is useless task actually. For example all the applications in an android mobile may not be used by every user . When that application is unusable and doesn't fulfill the need of the customer , Then that application is useless even though it is defect free .





Thursday, 20 August 2015

Adhoc Testing

ADHOC TESTING is an unplanned testing , Where we doesn't follow any particular format to do this type of testing.It is an Informal testing type mainly aimed to break the system .In this testing ,the testers doesn't follow any type of test case techniques to write the test cases. This testing is mainly performed by the testers who are expertise d and their knowledge is too high in detecting the defects.Testers randomly test the system /software /application without any  test cases or any business requirement documents It doesn't follow any structured way of testing and it may randomly test any part of the application . In this testing the defects will not be mapped to the test cases. We have different types of Adhoc Testings

  • Monkey Testing
  • Pair Testing 
  • Buddy testing
  • Exploratory Testing 
  • Gorilla Testing 

Monkey Testing :
The main goal of the monkey testing is to break the system. This testing is so random that the testers can't even reproduce the identified defects. Monkey testing needs testers with good domain and technical expertise .Monkey testing mainly used to observe the stability and working ability of the system
Gorilla Testing :
This testing is used to test the functionality of the system randomly by giving valid or invalid inputs with various ranges . Gorilla testing particularly concentrates on the a specific  unit / component / module . These testing techniques are called as fault tolerance testing . the idea of monkey and gorilla testing is partly same

Pair Testing :
Pair testing is testing in which two team of testers work on the same feature at same place by exchanging ideas . Two testers work on same module , they share ideas and strategies to find defects . one tester can execute the tests and the other tester can take the notes on the found defect or error
Buddy testing :
Two buddy test on the same module mutually and identify the defects.In this testing both developers and testers combine and work to find defects Among both buddy one would be from tester team and the other would be from development team .Buddy testing helps the tester to make better test cases and developers to design more better ways . This testing usually happens when Unit testing is done
.It is also called as Parallel Testing .
Exploratory Testing :
Exploratory testing is one of the best testing technique .It is mostly used when there are no requirements available or when they are partially available.Exploratory , the name itself suggest that the tester should have  a logical thinking. It is like exploring a new defect.It involves an investigating process to find the bugs which cannot be identified by normal testing .Uncover bugs are identified by this testing which are normally ignored by other testing techniques. Testers should have special skills which helps to expand the imagination power of the testers and helps in producing more number of test cases.It covers testing on all the requirements . It is not suitable for the long execution time 

Software Testing Methodology

As we all know that Software Testing is a process in which we will check whether the application is working without any failures or not . There are 3 types of  methodologies in Software Testing.

  • Black Box Testing 
  • White box Testing 
  • Gray Box Testing

Black Box Testing :

When we are testing an application or a software without any idea of internal logic or based on user specifications or requirements, then it is called Black Box testing . Black box testing is also called as Functional testing or Closed box testing . Black Box testing famously known as BBT. It is done by the testers . 
For example if we are testing a mobile phone then we check whether calling is done or not,sms  is going or not then we just check the outer look of the calling process whether the calling process and sms process is performed accordingly or not. This type of testing is called black box testing .here we are least bothered about the internal logic.
White Box Testing : 
When we are testing an application or a software with the idea of internal logic or based on the application structure, then that type of testing is called a White Box testing . To conduct this White Box testing, testers must have the knowledge of programming or logic in codes , That is the reason White Box testing is mostly conducted by the developers .It is also called as Glass Box testing or Clear Box testing. It is famously known as WBT. 
For example if we are testing a touch screen mobile how the touch screen is activated and how the internal switches are clicked and how the code is dumped into the Micro controllers, then particularly we have to know the internal structure of the mobile, so this type of testing will come under White Box testing.
Gray Box Testing :
When we do testing which involves both internal structure and the  functionality of the application then it is called as Gray Box Testing. It is a combination of both Black Box testing and White Box Testing. It is mostly conducted by the Developers .
For example if we are testing two components and we check whether both of them integrate with each other or not . In that cases this Gray Box testing is mostly used .
Mainly out of these methods there some types of testing called Unit testing , Integration Testing , System Testing, User Acceptance testing 
Unit Testing : 
A smallest part of software application is called a unit. When we conduct testing on this particular unit it is called a Unit Testing. it is performed by developers and while conducting unit testing and component testing they will use white box testing techniques.
Integration Testing :
After all units are tested , they are combined as modules . We will check whether the connection between the units or modules are working or not .This is called integration Testing . Developers do this type testing . Developers generally follow 4 types of integration testing approaches 
  • Top Down approach
  • Bottom Up approach
  • Bi- Directional approach
  • Big Bang approach
System Testing :
After completion of Integration testing the developers handover the application to the testers. This application/system is called as System Under test / Application under test (SUT/AUT). Then the testers do complete system testing , they mainly check three aspects in system testing 
  • Usability 
  • Functionality 
  • Non Functionality 
User Acceptance Testing :
This is the most important module of testing as it is conducted by the quality assurance team . QA team will check whether the application is meeting the customer requirement or not. UAT is done in two ways 
  • Alpha Testing 
  • Beta Testing
Alpha Testing:
In this testing we call the customer into the organisation and give training on the application which has to be released ,they take the feedback of the customer and then think about the release of the application . it is mainly done in project and also called as Internal User acceptance Test
Beta Testing :
In this testing responsible person will go to the customer's place and gives training to the customer how to use the application and collects the feedback from the customer .Beta testing is done by real user .It is known as External User acceptance Testing 

Wednesday, 19 August 2015

Fundamentals of Software Testing .

Now a days I observe many individuals , software professionals , students and MNC companies opting Testing tools as their stream . I've some questions for them . What is Testing? Why we do testing ? Is it important , if so  when we have to start testing ? 

"Testing is nothing but executing a program or system with intend of finding of errors "it was a definition said by MYERS in 1979. I simply want to say that it is an investigation done to find errors or bugs . Errors are the mistakes or wrongs made by humans which causes faults in the application or software which may result in the failure of the end product /application/software. 
Generally we call errors as bugs in Software.
Why do software have bugs ? There are certain reasons why we have bugs.Because of incompetency technically, human minds are tend to make mistakes not intentionally but for some other reasons , lack of time , lack of budget , poor understanding between the client and the developer, quality makes a great sense . The only solution for all these problems is to follow a disciplined and well framed software approach is needed .
Quality plays an important role in software field because quality is degree to which a system ,component or process meets the specified requirement or end user expectations or not. It is helpful in long run of the system. The factors which the quality mainly concentrates are called as quality attributes.They are Correctness, Usability , Portability , Flexibility , Maintainability , Re-usability ,Efficiency,Reliability ,Inter- operability, Integrity , Testability . There are two types of quality approaches one is Quality assurance and the other is Quality Control. Quality assurance is defect prevention oriented and Quality control is defect detection process. Quality assurance mainly a proactive process and Quality control is reactive process. So in this quality plays a main role in Testing criteria. 


Why we do testing ? In order to deliver defect free product to the customer . To ensure and reach the customer expectations. To define the quality of the application. To stay long time in the business. So without undergoing testing no application or software is released into the market. When we do testing ? Testing should come as early as possible in the development process because faults found earlier are cheaper to fix and easy to fix. It avoids fault multiplication that means if a fault is neglected it will lead to another fault if it has been eradicated at the earlier stages then it will avoid increasing faults, so testing should come as early as possible in the development stages only. 
There are two types of testing 



  • Manual Testing
  • Automation Testing


Manual Testing : 
If the application is tested by the testers manually , then this testing is called Manual testing. When they detect a defect they report to the developers, the developers fix the bug and sends them to the testing team again . The testers retest it again to check whether the defect is fixed or not .  
Automation Testing :
If the application is tested by the testers using an automation tool , then this testing is called automation testing. When the testers detect a defect they report to the developers , the developers fix the defect and sends to the testing team again. The testers retest it again to check whether defect is fixed or not. 
Generally testers ,do these testing process ,Some developers also do these testing which is called as white box testing