Wednesday 31 August 2016

How do QA Engineer perform Unit Testing?

Many of our readers ask question, how to perform unit testing while I don't know code or don't know how to code?


Usually testers don't perform unit testing. Developers write unit tests and ideally run them every time the software builds.

A unit is the smallest testable part of an application like functions, classes, procedures, interfaces. Unit testing is a method by which individual units of source code are tested to determine if they are fit for use. In other words, Unit test are small programs which call small units of code being developed and test if the call returns expected values (or makes expected changes). Unit testing is performed by program (which runs unit tests: test runner), not by a human. It's purpose is to test a single unit of code. 

This means that they are not testing through the application user interface, but are running directly against the single unit they are testing and using stub/mock data to simulate the unit's dependencies. That' why it is written and executed by software developers to make sure that code meets its design and requirements behaves as expected. 


Someone with no programming skills by definition is not able to write unit test. It also does not make sense for anyone else than a developer to write unit tests. To write them, you have to be extremely familiar with the minute details of the code, how code works from the inside. Only developers have such detailed knowledge (usually only of some parts of the whole system).

QA testers do not require such detailed knowledge of the code deep insides. They are focused on how different parts of the code fit together, and how they perform actions which user wants. It is very useful to perform such testing by someone who did not write the code, to flush out some unsaid assumptions.

Having said that it is beneficial for a tester to have some knowledge of the system insides, so tester can better develop test strategies to test parts of the system which were not directly changed by a code path tested, but can be affected by the changes. But such knowledge is in more general terms, not on level of the detailed function calls and parameters passed.

Monday 29 August 2016

ISTQB TEST MENTOR. FREE ANDROID APP FOR ISTQB FOUNDATION LEVEL ASPIRANTS!



DO YOU THINK YOU ARE PREPARED FOR ISTQB FOUNDATION LEVEL CERTIFICATION?

EXERCISE YOUR MIND WITH OUR NOTORIOUSLY HARD TESTS AND BOOST YOUR PERFORMANCE IN REAL EXAM.


ISTQB TEST MENTOR is a free app which is a must for every ISTQB® foundation level aspirant.
Features
Chapter wise test
Access to well designed chapter wise questions to test your understanding of every chapter. We have hand picked quality question per chapter so that you can start preparing as soon complete every chapter. No other app provides chapter wise Tests.
Mock Exam
Test your knowledge of ISTQB® foundation level with our mock test. You have 1 hour to answer 40 questions and you need to answer 26 to clear (just like your real certification exam).The mock exam follows the exam structure as specified by ISTQB®
This helps you get used to the format of the questions and making sure you spend the right amount of time on each sectiom.
Glossary
The standard ISTQB® Glossary(ordered from A-Z) for your reference. The glossary has definitions of the extract of terms used in the Foundation Level syllabus 3.1. Search for any testing terms and definitions designed to aid communication in (software) testing and related disciplines.
Useful links
Links to helpful websites to skyrocket your performance in the certification exam.
This app was developed with a genuine intention to help the ISTQB aspirants. 5 reasons you should download ISTQB test mentor right this second:
  • The app has quality questions that are unique and are very challenging.
  • Questions are handpicked from various sources to challenge your knowledge.
  • These questions have helped hundreds of aspirants in the past.
  • Share your results on social media and challenge your friends.
  • Works Offline.
Website: www.kakoapp.com

Saturday 20 August 2016

Free Selenium WebDriver Training Online

Selenium Live Training: - This training will make you job ready to take up any assignment in test automation and equips you with essential Selenium skills. It will give you the much needed framework creation experience using Selenium, Java, TestNG, Log4J, Jenkins, Maven via implementation of real life industry projects.

Check the below link for more details on Selenium Training Syllabus:- Selenium Training Syllabus


Check the below link for to join Selenium Online Training Class : - Selenium WebDriver Training

Highlights of our Course Offering

Anytime & Anywhere Access
You can attend our Selenium training sessions from any part of the world. You don't have to leave your home and commute to learning centers.  All you need to have is a PC with good internet connection and audio/sound system. You can attend training session as per your convenient time.

Q&A Forum
We run our own dedicated Question and Answer FORUM and try to answer every question. The Buddha Tree student’s questions will always answered on priority.

Latest Frameworks

We provide training on creating test automation framework using Selenium, Grid, Java, TestNG, log4j, Apache POI, Apache Maven etc.

 

Code Sharing

Students will be provided working code & automation exercises at the end of every session.

We Cover Everything

·         300 page theoretical concept which describes each concept of with syntax & example
·         4000 line of working example
·         30 hours of Video tutorial
·         Interview Questions & Answers

 

Contact Us


To Students -
As of now Inaugural Offer is going on, get enrolment of trial course in free. Drop a text to buddhatree1@gmail.com

Like Us on YouTube 
Like Us on Google +
Like Us on Google QA Group
Like Us on Facebook 

What are the reasons for choosing to automate your project and why did you choose HP UFT/QTP?

This is a frequently asked question to Test Automation Engineer. I tried to jot down my thoughts on it.  I would like to answer this query in two part -

1. Reasons for choosing to automate your project :
First part of this query is here, reason behind automation is plain & simple -
  • Automation saves lots of time while retesting and regression testing.
  • Automation saves manual resource and money.
  • It increases test coverage and Accuracy.
  • Run tests faster than human users.
  • Tests can be re-used on different versions of the software at any time.
  • Less human resources are involved in automation
  • Automate repetitive work & save QA Engineer time for business elusive bugs
  • Ultimately save money
  • write once run anywhere,anytime
  • Saves time and money.
  • we can schedule the scripts and set computer to run it automatically.
  • Its cool and more interesting than manual testing, even it help developers.
2. Reasons for choosing HP UFT/QTP :

  • UFT/QTP support both Web application and window application.
  • It generates the code automatically, you do not have to waste your time writing code and debugging the code like in selenium.
  • Object repository is one of the major features of QTP. Object repository stores the properties of various object or element.
  • QTP supports almost all popular automation frameworks like Linear, Keyword, Data Driven, Hybrid etc. for automation purpose.



The only disadvantage of HP UFT/QTP is that it is not open source. In order to use it, you need to buy license.

Sunday 15 May 2016

IS TEST AUTOMATION A SILVER BULLET?

QA plays a crucial part in product quality and product delivery. In agile development methodologies like scrum, QA needs to work in highly compressed test execution cycles. One of the challenges the QA engineer's face is that the code that worked in previous sprints often gets churned by the new features and bug fixes in each subsequent sprint, increasing the risk of regression. Without test automation it might be hard to achieve sufficient test coverage and provide rapid feedback.  
So is test automation a bullet?
Before we jump to the conclusion...we need to understand the following:
WHEN TO AUTOMATE?
Check if your application is automation ready? Below are the questions you need to ask yourself before rushing to automate the tests.
 1. Is your application ready for automation?




We need to be careful when automating GUI. Never start automating at the start of the project or you might end up re-writing the automation scripts that you have written.
To start automating, you need to have a set of stable and functional features ready. It is wise to start automating when you are sure that these features and the GUI will not change. If you proceed and automate the features that are undergoing continuous changes in GUI then the cost of maintaining the script will be too high. Predicting what will change and what will remain stable is tough to determine when working in an agile environment as we need to embrace and welcome the changes.
Another important thing is not to overlook is the maintenance that is required to keep all your scripts up to date and working. Even after spending hours on programming the automation scripts, your automation scripts might fail when you get a new version of the product. You need to design the scripts in such a way that it will require the smallest amount of maintenance in the future. We should have a plan of how we are going to accomplish that in our 'automation strategy'.
2. Do you have skilled testers in your team?




Your QA team need tester's with the skill-set to utilise the capabilities of the tool. No tool can help you unless you have skilled resources to implement automation. Your test team should capable of handling challenges that might arise in automating the test suite. Most of the tools demand testers to code. Most of the automation tool vendors provide training and support to the resources else you should consider bringing in an expert from outside. Test Automation is a long term investment. It will take time and expertise in developing and maintaining test automation frameworks and automated scripts. 
 3. Have you selected the right tool?



Choosing the right tool is crucial to succeed in test automation. There are several factors that need to be considered when selecting a test automation tool. Some of the tools are free, some are expensive.
Several times after few days of initial excitement and after automating few tests the tool often becomes "shelf-ware" and testing returns to Manual.
  Here are some factors that you might need to consider before selecting the tool:
  •          Does the tool fit into current process and infrastructure?
  •          Does the tool vendor support training and provide good services,
  •          Do you have the budget for the tool?
  •          Product features: How does the tool identify the objects? Image based recognition? Object-based recognition?
  •          Which programming languages does it support? Does the QA team have the knowledge on these languages?
  •          If using an open source tool: Does the tool have good community support and enough documentation?
  •          The list goes on…

There are risks of the vendor going out of stock or the tool being acquired or retired. It's a good practice to explore the tool on a small scale with a pilot project and determine if the tool can accomplish what is needed.
We should keep in mind that no tool is perfect, be it an open-source or commercial. We need to consider the above factors and select the tool that serves our purpose and provides good ROI.
WHAT TO AUTOMATE??
Did you say "Everything"?
 Then it is an unrealistic and impractical expectation!! 
 1. AUTOMATE REPETITIVE STUFF!!
Testing software involves a lot of repetitive work which is tedious to do manually. People become bored and make mistakes when doing the same task over and over. People tend to do the same task differently when they are repeating it again and again. A tool will exactly reproduce what it did before, so each time it is run the result is consistent. The regression suite is the ideal candidate for automation.

Repetitive work is excellent job for a computer to do.

2. AUTOMATE THE TESTS THAT ARE HARD TO BE PERFORMED MANUALLY.




Assume you are testing an app which has a feature called ‘People’ that sync's all your contacts from various social media and email accounts. You are testing if the ‘contact count’ displayed is accurate. The test account has 5000+ contacts. It is not feasible count the contacts manually and check if the count displayed is accurate. 
Assume your testing an email app and the app crashes frequently when you 'archive' around 30-35 emails in succession (one after another). When developers ask you to replicate this issue, think how tiresome it would be to do it manually. Let's be positive and think that you replicated the issue after few attempts..and the developer fixes it. But that's not the end of the story.... you need to confirmation test if the issue is really fixed…Good luck replicating that bug again!
Automation tool eases the life of a QA engineer in such situations and can save a lot of time and effort by automating these annoying tests.
3. AUTOMATE BVT/SMOKE TESTS





BVT(Build Verification tests) are cursory tests that are helpful to determine the stability and testability of the build. These tests need to be run every time a build is deployed. The BVT’s are ideally quick tests that concentrate on core functionality.
Automating BVT's and integrating them to the continuous integration server will ensure that the changes made have not led to regressions. One thing to keep in mind while designing these tests is that the test should be short and should execute in few minutes. There may be multiple commits a day it does not make sense if the automated BVT's run for hours.
Also consider the following while automating:
  •  Automation is a great option when we have to validate the same feature with large set of different inputs and data (Data-driven testing).
  •  Load and performance testing should be ideally automated where we test the system’s ability to handle load by creating virtual users. 
WHAT NOT TO AUTOMATE?










Do not try to automate the tests that would require human intelligence and intuition.
  •          Tests which are not executed frequently or would be too cumbersome to automate.
  •          Tests like exploratory testing which is based on intuition and expertise of the tester.
  •          Tests that need human intervention. An automated test should be able to run and verify the outcome entirely unattended.
  •          Do not automate the volatile features which will have frequent changes.
  •       Prioritize your automation using the 20-80-20 rule. Automate 20 percent of the scripts that take 80 percent of the execution time and 20 percent of the resource skills.
        CAN TEST AUTOMATION REPLACE HUMAN TESTERS?






        One of the developers who watched me automate was fascinated and said “This is cool stuff! Now you need not have to do anything, the computer will do everything for you. I feel that computers will replace the testers soon”.
        I replied “The day when testers will be replaced by automated tester's is the day when developer's will be replaced by an auto-developer or a CEO will be replaced by an auto-CEO ...”
        QA experts do not use the word 'test automation'. They rather call it ‘automation checks’ as they feel testing cannot be automated, but checking can be completely automated. Humans have the ability to do things, notice things, and analyze things that computers cannot. Our humanity as testers plays a big role in identifying defects while testing. A computer cannot experience or cannot express emotions.
        A computer cannot 'determine if the game is fun or not?' ..... 'if an app has good user experience or a pleasant interface'..... Or to 'take decisions using heuristics'  etc. Automated test can only find defects that you already thought of or predicted might happen.
        You may ask if the test automation can run the same test more quickly, more accurately and with same consistency every time, is it not a better than a human tester?
        No! Because running a test quickly with more precision and consistency does not produce better software but it would definitely reduce the time required to complete testing. Test Automation is probably one of the most useful weapons in tester's inventory. It has its own place in the inventory. The weapon is useless without its wielder. Automated tests require scripts to be written and maintained; this in turn requires a HUMAN.

Automation tools are here to assist the testers not to replace them.

                Test Automation is certainly not a "Silver bullet".
         About the Author



Prashant Hegde is a passionate tester. He leads the QA team in Razorthink software and ensures that the products he works on meet the highest standards in tight schedules and deadlines. Prashant loves to write and he has authored articles for leading software testing magazines. He writes a blog on best practices in software testing in his spare time. Prashant is a gamer, a biker, and an author.
      Follow Prashant on his website - prashanthegde.in
      Subscribe to his blog – guide2mobiletesting.blogspot.com