Friday 11 September 2015

The Importance of Starting from Basics


Before going into advance concepts, learning the basics is very important thing which I have learned from my experience. I used to jump into advance concepts before learning the basics and I faced lots of problems. One fine day in office I got a chance to test a mobile app, I was scared because I did not have in -depth knowledge of testing a mobile app. I did not know the parameters that has to be covered. Initially I just use to do functionality test, I found it very difficult.

Difficulties which I faced
  • I used to make mistakes in bug report like using click for tap and page for screen.
  • I used to miss some bugs.
  • I spent a lot of time in bug reporting because I need to transfer screenshot from mobile to phone.
  • I did not use any tool so it was very difficult to report a crash in the app.
  • I found it difficult to get test ideas.
One day after office, I was travelling to home with Sandeep Tuppad in a cab I started my discussing about the automation of mobile app testing using Appium. Sandeep asked me few basic questions such as how does push notification works and some basic UI related questions, I was not able to answer. He made a strong point that without knowing the basics it is very difficult to test or automate a mobile app. I started to work on it.

How did I overcome the difficulties?
  • I stared from the basics I learned about the architecture of different mobile operation system.
  • I attended a workshop related to mobile app testing by Ajay Balamurugdas. I learned the basics of mobile app testing by attending the workshop such as the terminology used to describe the actions that we perform in mobile screen like tap, pinch and swipe and some useful tools like Mirroring 360, Fiddler etc.
  • I read a book related to mobile app testing called as “Tap into Mobile Application Testing” by Jonathan Kohl. The book explains about different aspects of mobile app testing from basics to advance. Jonathan Kohl explains about his model “I SLICED UP FUN” each letter in the mnemonic explains about parameter based on which we can test for example the letter "I" in the mnemonic is for Input. The mnemonic is very powerful it can be used to generate different test ideas.
  • I started to use tools like iTools and iFunbox to get crash log for reporting while a crash occurs in the app.
  • I used mindmaps related to mobile testing from the TestInsane mindmaps repository.
  • I started to use SDK tool such as uiautomatorviewer, emulator, monkey and other tools.

After doing the above things I was able to feel some changes in my testing some were my bug reports were better and I could generate more test idea.

Initially in TestInsane I was testing a web application. I felt lots of actions which I do while testing consumes lots of time such as if the pager of the web application contains 100 pages to verify if all the pages contain some information, I need to click each link to check. Suppose I need to perform the same action with different combination of inputs I need to enter each input, I felt it difficult, so I explained it to Sandeep Tuppad about this he told me to use Selenium IDE to record and replay the action that I do repeteadly. I started to use Selenium IDE, but certain things cannot be done using Selenium IDE like performing the same action with different combination of input, so I started to code using “Selenium WebDriver” Java binding and Eclipse IDE.

Difficulties which I faced when I started to use Selenium WebDriver
  • My code was not used to be so clean because I didn’t follow the coding guidelines.
  • I used to code straight away without finding the scenarios needed to be automated, so I faced the problem of modifying the dataprovider frequently.
  • I used a lot of explicit wait (Thread.sleep) in my code.
  • Without having strong knowledge in core java I started directly.
  • I used Selenium IDE a lot used to record scenario and export to Java code and use it in my script.
  • X-PATH should be in such a way that it should work even if the web elements are changed, but I used Firepath to get the X-PATH of a particular element the X-PATH given by Firepath doesn’t support if there is a change in the position of the web element.
  • My Debugging skills was a bit lower I used to ask other for help if a particular problem occurs in the code.
  • I did not consider memory usage and code running time.
Things which I did to overcome the difficulties
  • I stopped using Selenium IDE frequently and used to write code for the scenario need to be automated using Eclipse IDE.
  • I practiced constructing dataprovider for a particular website.
  • I studied the java coding guideline by Oracle.
  • I started to debug problem that occur using the Debug mode in Eclipse by giving breakpoint and seeing the log.
  • Learning to construct X-PATH will enable to construct effective X-PATH, so I learnt how to construct X-PATH and used (Ctrl+F) in the inspect element to check if the X-PATH selects the particular element.
  • I learnt about synchronization in Selenium and used implicit wait to make the code faster.
  • I studied core Java from the book “Thinking in Java” and practised coding in Eclispse IDE.
  • Verifying the code with experienced people in team will give lot of Ideas. I used to verify my code with Sandeep Tuppad he gives me suggestion by reviewing my code, this helps me a lot because I can come to know my mistakes.

After following the above things my script got better now than before because I omit the things that should not be used in my code and I follow the coding standard.

The most important lesson that I have learned from my testing experience is starting from basics is very important to craft to perfection the things which we do.



No comments:

Post a Comment