Posts

Showing posts with the label Testing

Introducing Optimus Dashboard

Image
Make your mobile test automation more intelligent with the help of Optimus Dashboard. Reach out to me in case you want a free POC for your mobile app. Read up more on Optimus here:  https://github.com/testvagrant/optimusTemplate

VagrantLab - a testing solution just for startups !

Image
TestVagrant  is perhaps the first services company to bring in an idea of free POC. We learnt that services for startups need to be different from services for enterprise.  VagrantLab  is our attempt to address the need. At  VagrantLab  , we have created a very  succinct  and pertinent solution offering for startups: Easy to get started (via a free POC) Easy to continue (bare minimum retainer model) and Easy to handover (you own what we code)

Testing in Microservice Architecture

As Microservice is becoming more popular and is being adopted fast, it becomes essential for test engineers and organisations to align their testing strategy with the architecture of the application. This requires change in perspective from traditional way of testing applications.  The below article would help you understand why are we talking about it and would address your basic questions around it.  We have planned a series of blogs around it and this is largely to set the context.  https://lnkd.in/e66sd_g

Get started with Appium for Android & Cucumber-JVM using quick reference book

Image
TestVagrant Technologies has released two free Ebooks on Gitbook.io and couple of projects in github which can help you get started with Appium and Cucumber-JVM. Both the books are for beginners and have detailed steps on how to set-up and goes till how to execute your first test. We did find lack of good documentation on both the subject in terms of starting up so we tried putting one hand book for the same. Happy Reading !!! Appium for Android A quick reference book on how to use Appium for automating Android Application using Java. This would detail each and every practical aspects right from setting up Appium to running the test on actual devices. Ebook link:  http://bit.do/TfhQ Github link:  https://github.com/testvagrant/AppiumDemo Building a Test Framework Using Cucumber-JVM This book talks about building a cucumber-jvm based functional test framework with selenium in the background. Ebook link:  http://bit.ly/1xrv1Oq Github link: ...

Published my first book titled "A Beginner's Guide To Android App Automation Using Appium"

Image
I am very happy to announce the first book I have written. It's a technical help e-book written on Appium and targeted for fellow testers who are looking for a guide that can help them use Appium for Android app automation. Snippet from book: Appium is an Open Source tool for testing native or hybrid mobile apps. It uses WebDriver JSON Wire protocol to drive both iOS and Android apps.There is descent documentation mentioned on the Appium site but somewhere it lacked to produce a guide, which can help you get rolling.This book is an effort to consolidate all the knowledge and resources to help you successfully use Appium to automate the android application. It will also help run the automated suite on real devices.   You can download the book and read it online here .  Happy to welcome your feedback and reviews !

Network Speed Simulation for Testing

Image
Recently I came across a production issue for the project I am working on. The error was that the page shows the loading icon and stays in that state when the internet speed is slow. On analysing the issue developers found that when the network speed is slow and the page is unable to download the js file with 7 seconds (specified time out), and it goes into that load state. Probably one tip here would be test out your application on a slow network speed. Generally while we test the app, we are on the best of the internet speed. So this post is about how you can simulate the low network speed and test your app on browser.  There is a tool called Charles ( website link ) which will let you simulate the slow network speed. By the way it's a paid tool which has a trial version as well which runs for good 30 minutes. Trial version solved the problem for me so I would recommend using that first. Step 1: Download and Install. This is clean and wouldn't have any issues. Ste...

Learn Test Automation Framework Creation Using Selenium

Folks we have written a tutorial for aspiring test automation engineers who wants to learn Webdriver and looking for Test Automation Framework creation knowledge. The project contains a bunch of chapters right from " writing your first Selenium test " to " how to implement Page Object Pattern ".  We have hosted the sample framework in Github and is for illustration purpose.  Link:  https://github.com/nishantverma/cleartriptests It will demo the implementation of Java with WebDriver (aka Selenium 2) and how to write automated tests. The chapters are created in a evolving manner where the first chapter tests are very simple enough (how a beginner would write) and then slowly they have been evolved (how a professional would write). Who's the Target Audience: To work, interact and make the best out of the project a person is required to have a basic knowledge of Java, Selenium API, TestNG and GIT. Just to clear this tutorial is not meant to teach you Jav...

Impact Of Responsive Web Design On GUI Based functional Tests

Image
I have been working on a new project which is about building a public facing retail website. One of the requirements of the website is to make it responsive so as to cater to the growing number of requests from mobile devices. As an enterprise if you don't have a dedicated Android or iPhone app, probably making a responsive website is the cheapest way to get your customers happy and served. So not deviating from the actual point, we have a responsive web application in making. And as part of testing we have added a bunch of functional selenium tests. These tests are added to the CI pipeline and runs with every check in. The QA team has a remote machine which is Win7 and is being used to test the application as well as author the functional tests. What we noticed that the functional tests used to pass locally on that Win7 box, however same test when checked-in was failing on CI agent. The log used to show " element is not currently visible and so may not be interacted w...

Agile Testing & Importance of Stubs

Image
Generally when we are trying to develop any application which exists in the ecosystem of other applications, we tend to spend a lot of time in solving dependency issues. There are many times when these external components would be down and would stop your related testing activity. There is a smarter way of tackling with components which do not directly impact you - which is Stubs. It has it's own merits and demerits. I will be touching a little upon the importance of stubs from testing point of view. I am trying to highlight what I have been working on for quite some time. Stubs as defined on wikipedia is a piece of code which represents other programming functionality.  For around 7 months, I was working on a project where in we were trying to create a product/software (let's cal it X for sake of simplicity) which would fit in a stack of systems. Product X was dependent on other systems and would need to get it's input from bunch of other systems (let's say...

Releasing too often !

One of the principles behind Agile manifesto says “ Our highest priority is to satisfy the customer through early and continuous delivery of valuable software ”. I have underlined the word “Continuous Delivery” and “valuable software”. If the software being delivered is of not much value then there is no point in releasing it. Delivering a software is a strenuous task. It includes activities starting from verifying the functionality getting released, regressing the functionality which is already implemented, preparing release notes and doing installer testing. These things form a part of the Test plan. Apart from Test plan, we also need to prepare a Rollout plan which will take care of how the build will be rolled out to potential users. This may include disabling it for some users and enabling it to only a smaller segment of users for a quicker feedback coming in a controlled manner. Also the rollout plan take care of way of distributing software. Another planning item which is ...

Being a Manual tester isn’t a easy job !

It’s a general perception that manual testing is not a challenging and tough job. Anyone can become a manual tester, I don’t agree! Automation testing can never replace Manual Testing. Manual Testing is an un-paralleled activity in software development life cycle.  With my exposure to this field let me put down some characteristics which I feel a manual Tester must have: Focus: When an application is given to a tester, it happens quite often that he will slip from one feature to another before completely testing one. So a manual tester should be focussed and shouldn’t get drifted easily. Analyzing Skills: A tester need not be an analyst but should possess some analysis skills. He should be good at analysing the application behaviour. Apart from the application, a manual tester needs to analyze the failures/errors and impact of the failure on the system. He also needs to analyse the features before testing and come up with varied set of data required to test. Prioritizin...

Defect Tracking System – Wastage of Money & Time ???

Image
As a QA I have been logging bugs since 5 years. But what do we do with that ? A typical flow: If this is the only thing we need to do then why taking so much of pain to have a defect tracking system . To log a standard bug (Standard Bug= Broken Functionality), we need to write steps to reproduce, pre-requisites (if any), expected result, actual result, priority, severity, snapshot (if any), Test environment details and finally save it. This takes around roughly 3-5 minutes to log a bug. To say truth, I have never seen any report coming out of defect tracking system which is of use in analyzing the pattern of bug or finding out any trend in them. All I have seen apart from tracking usage, is the summary of bugs with count based on Priority and Severity. Is that the only purpose of Defect Tracking System? If that is the case then why not use a Google spreadsheet rather then investing money of the company and time of QA in a bug logging system. I am sure if we mine the data which i...

Identifying Memory Leakage

Image
When I think of Performance Testing, the response time is not the only thing which comes to my mind. Performance Testing should not be done alone to capture the response time. Based on the nature of application and it’s usage, minimally we should run two types of test. One to find out how many concurrent users the system will support for a given response time.  I have really seen a decline in the need of performing these kinds of test. Application Performance is not always about the response time of web service. As a part of Performance Testing, one should also run Soak Test. Soak tests are long duration tests on the system with a static number of concurrent users that tests the overall robustness of the application. The intention of this test is to identify any performance degradation over time through memory leaks, increased GC or any other problem in the system. To get the memory footprints of the application, we need to set up some specific counters in the server where th...

Rescuing Agile Tester

Being involved in Software Testing field for quite a some time,  I felt like blogging on what makes a software tester life easy ! It can be anything depending on the projects you are involved in and the typical activities you carry out in your day to day testing life. I have always felt a little pressure on the testing team specifically in the agile methodology; a constant pressure of catching up with QA velocity or story sign-offs, planned regression cycle in between the Iterations, writing test scenarios, writing automated regression suite, continuously improving the smoke test (in terms of coverage and execution time), planning customer showcases. Oh God, so much to do in such a less time !!! I felt that there are few things irrespective of project which will make the life of a tester easy. Tester spend a lot of time deploying application (Unless they are using a Continuous Integration tool) and doing general sanity (in case the regression suite is not sufficient). Few things...

Usage Patterns driving Testing Patterns

Image
I am a normal internet user accessing Gmail, Facebook, Google Reader, Google Talk and many more public facing websites. Like me there are many more users using the same application, same features and infact pressing the same key. This blog is to to share my views on how actual Usage pattern of application should help in optimizing the Testing activity.   In any application, there are some features which is used heavily by the users. This not only applies to software application but also to hardware devices like keyboard for example. “Enter”, “Space”, vowels key etc. So knowing in advance that which features gets more load (in terms of usage) and which will get less load will actually help us in planning the testing around that area. It will also help in prioritizing (among list of features) the testing activities. Those areas should be majorly focussed while testing and (from a tester point of view) any bug left or ignored in that area has a higher probability of getting c...

Test case writing

When I started my career in Testing, I was given a 40 page RDD (Requirement Definition Document) and was asked to understand it and start writing test cases. Sounds crazy isn’t? Anyways I am not discussing here how to write test cases, rather on the way of writing test case. Test case writing is not an easy job! It reflects the testing style of a tester. Intent of a test case is to discover more information about the system. So the way we understand test case is : some set of goal oriented steps, accompanied by test data (if any) and the conditions or pre-requisites followed by the expected result. If we give the same feature to different people for writing test cases, we will see a different pattern. Those patterns differentiates a tester. Almost all will have a mix of Happy/Sad/Bad test case but the proportion will vary from tester to tester. The intent behind writing a test case is to make sure the intended functionality works. Also we have a mix of negative test cases to assu...

Vicious Circle

Image
Software Product is a bunch of functionality assembled together and tied within the boundary of business rules. Each line of code which is written to implement a functionality has a potential bug in them . And each valid bug raised requires a change in the code written . Are these forming a vicious circle ? Let me explain. In a typical agile methodology, we write the Unit Tests first and then the actual functionality. So that means we actually know how the system would be tested (to some extent). But after writing the functionality, the developer calls a fellow tester to do a Dev Box Testing. Dev Box Testing is generally done on a developer’s machine with a very minimal set of test data (Thanks to developers laziness ! :)). It’s done to ensure that the intended functionality is properly developed and there are no major bugs. It also gives developer the chance to debug the application in case of any exception (if encountered). So till now we have done Unit Testing and Dev Box T...

Regression Testing

Why regression testing is important in Agile methodology? Agile testing requires me to test iteratively the newly developed code and at the same time making sure the old implemented functionality is intact. Following TDD or writing unit test just helps in achieving an automated low level regression test suite. But it cannot be used alone in Agile. After every 2 or 3 iterations there should be a regression planned, I believe. During iterations, testers mostly focus on the story testing and the edge scenarios remain untested sometimes (primarily due to pending story development).  So how do we do regression testing effectively. Regression testing is not just about selective re-testing, it’s also about achieving the test coverage. So the big question is how do we go about it. In my previous post I have written about how do we segregate test cases in happy, sad and bad path test cases. So what all to be picked up in regression testing? Should we target testing all the test cases? Ca...

Performance Testing

Image
I generally hear a lot of noise when it comes to Performance Testing. “Big word” but mostly used with utmost carelessness. What is Performance Testing? Why do we do Performance Testing? How it should be done? What should we capture? What will be the outcome? Well I am not going to exactly answer each question, but assure that by the time you finish reading this blog I will give you a clear picture of Performance Testing. I hope all my reader friends are aware/heard of Performance Testing . Performance Testing may be done on components or on the whole application. When I say component I refer to the web services, window services, etc. But before diving straight into the world of Performance testing, we should ask ourselves few basic questions. Do we have any SLAs (Service Level Agreement) to be met? Do we need to identify and fine tune the bottle necks? Do we need to find out the scalability of the application? Do we need to find out any memory leakage? Is the app...

Just log it???

While doing testing I often found some bugs which gives me some clue about why it occurred in the first place. Being a tester do we just need to find an issue/bug and report it or should not we do some initial investigation on the bug (homework) before logging  it. As per my understanding bugs are a result of misunderstood functionality, edge scenarios which was not thought of during development, improper data handling and finally the border issue (integration point with some other story). So being a tester we should not only find bugs but rather give inputs in such a way that it helps the developer figure out the fix in a faster way. Implementation of logging in the application is one such attempt where we can guide the development team for more informative logging. Exceptions should not be suppressed while logging also it should not be overloaded. In case of Data handling issues, QAs should be  proactive enough to put some effort of playing around with more varied set of d...