QAvengers @ #SeConf16 – Day 2

With superb day one we were all looking forward for day 2 and we were not disappointed.  Lets jump straight to summarising the sessions

The Trouble with Page Objects – Things you always knew were wrong but couldn’t explain why by Antony Marcano

This was my favourite talk for #SeConf16 here is what I understood

  • Instead of writing our framework based on PageObjects pattern which depends on application design we should you ScreenPlay pattern for our framework which based on user behaviour. Highly recommend listening to the talk once it’s available or if you are not a patient soul like me; you can more about it here

Robot Handles – Giving Selenium a Helping Hand by Andy Palmer

This talk was related to abstracting UI changes in the application from the functional changes. This would be really helpful in cases where want tests to be isolated from UI changes.

The Mobile Grid – Getting Started for Android & iOS by Justin Ison

  • This was awesome talk showing how we can leverage selenium grid to run our tests in parallel on real devices both Android and iOS.
  • Justin also mentioned challenges which were faced by him when doing this and how he overcomes it. Some of them are
    • WiFi issues – Enables/Disables airplane mode before running each tests.
    • ADB disconnect – restart usb hub before test execution

My take on parallel execution on tests on mobile was that one would need write some engine to manage device’s availability and we take example of Justin’s code for doing it which shared on github here

One page to test them all! by Priti Biyani

In the session Priti talked about managing your Page Objects for multiple applications in single class. We had faced similar challenges in one of our projects however we implemented different Page Object class for different apps because we felt it would be better if each class is assigned single responsibility

Generating and Running 1,000,000 Selenium tests in 60 minutes by Sean Grove

This session was interesting and completely new where it said that instead of writing tests we should be generating tests. However after the session I was wondering that time/cost involved for generating tests versus the kind of bugs that these tests will find is it going to be worth it.

Breaking down the barriers: Testing desktop apps with Selenium by Michal Vanek and Filip Braun

  • In this session it was shown how to use selenium to tests desktop application.
  • the desktop application is built on CEF(Chromium Embedded Framework which makes it html type application and presenter’s made superb use of Selenium libraries with little bit of configuration upfront to execute their tests

To summarise the each of 2 days we learnt a lot of new things. We have all picked up various areas of interests where we will try to apply the knowledge gained in these 2 days.

Kudos to the organiser’s and all who attended the #SeConf16. It was awesome!!!

QAvengers @ #SeConf16 – Day 1

After awesome experience @ VodQA; QAvengers (Ulhas Deshmukh, Hemant Ojha, Irfan Ahmad, Neha Tandon  and My Self.) decided to visit Selenium Conference in Bangalore and we were super excited. excited

Here’s how the day 1 looked like

Key note by Simon Stewart

Announced release of Selenium 3  and what changes in selenium 3 

for (i=0; i < 10; i++) { 
    Read(“Selenium Core is no more”)
}

 Advanced Appium talk  by Dan Cuellar

Since we had parallel talks we divided in ourselves in groups Ulhas and Hemant attended above talk which they described in following bullet points

  • Appium code refactoring – This has made huge difference to Appium code and made it easy for contributor’s

  • Winium for automating windows app is part of appium – This is great news for people who have windows app to tests

Testing as a Container : Using Docker with selenium and friends to ship fast – by our very  own QAvenger Irfan

Me and Neha attended this demonstration and here’s what we learnt

  1. Its awesome to know that execution environment can entirely maintained by script. This is really great and helps any consumer of our automation scripts (developer or manual tester) to focus on using the automation scripts rather than investing time in setting up infrastructure
  2. When to container and when to ? was explained with live example of running selenium tests via docker and here’s the video for the same
  3. Here’s the joke Irfan says he missed to tell “If software were cities then container is Las Vegas, because what happens in Container remains in Container

Lighting talk by me an Ulhas (Well the preparation for this talk was also at speed of lightening)

Here we shared our experience in writing automation tests following were the highlights

  1. API tests to write functional tests – Why the hell would I do that? It’s because of following reasons
    • Fast
    • Less flaky 
    • Easier to write in any language your prefer as most of the languages support http library which is all you need
    • Reuse the code in UI tests for tests setup and anything else
    • Follow tests pyramid
  2. Demo of our framework which included
    1. One framework for all types of tests API, Web and Mobile are part of one framework. Note this can be easily be extended to performance and UI tests
    2. Using PageObject pattern to write API tests and it worked really well for us

Web Scrapping with Selenium and Data Analysis using IPython Notebook by Vinay Babu

This talk gave a great idea of how selenium can be used for more than just doing web application testing. Idea was to use selenium along with BrowserMobProxy to test analytics. I am must say we were really impressed by the presentation by Vinay.

Running existing tests using Selenium 3 beta

In the next session I tried few of our existing tests with Selenium 3 beta and guess what they worked just as fine. Luckily I was seated besides Simon Stewart when I did this and when told him tests are working well. This was his reaction. Yes.gif

Day ended with superb jam session. It was great day we enjoyed not only the awesome talks but also awesome good!!!

You can find the Day 2 experiences here

Our first VodQA

IMG-20160109-WA0010TinyOwl QA @vodQA

This blog is to share our experiences (Irfan Ahmad, Hemant Ojha and Ulhas Deshmukh) @vodQA event in Pune. The Journey began as early as 4.00 am in the morning (don’t remember last time I woke up this early and some didn’t sleep at all).

Welcome note

The talk started with usual welcome note however it was not very usual. From the welcome note itself it was clear that we were going to have a very open ended session and interactive.

Agile Game

This one was my favourite it has many learnings for us. So we were given task lets call it project, we had a PO and we had team. The project was to blow some balloons and draw face on it seemed really easy. However it was not so and here is why

  • Ask as many questions to PO as possible : We blew a lot of balloons around 20 out of which only couple were accepted. This is because we made lots of assumptions in requirements.
  • Showcase your product to PO regularly : In second iteration we did worst than worst because we covered one aspect but forgot about others. The lesson learnt was to showcase the product to PO and then make major changes.

Agile Testing

Here we were shown Agile testing manifesto. For me the learning here was

  • Quality has to be team responsibility and quality is not only QA’s job.
  • As a team and especially as QA our focus should be in preventing defects rather than finding them. Along with Developer QA should work with PM, Designer, DevOps and everyone involved to make sure that right product is been built right

Effective Strategies for Distributed Testing

This session was focused on effective ways of communication when entire team is not at same place. Effectively using tools like JIRA help’s everyone in team be on same page at any point in time

Testing the Mysterious Sphere

I think this was most entertaining session from audiences point of you. Learnings

  • Ask specific questions – I personally believe this has to be open ended if person asking insight does not have any understanding person in position to answer should go extra mile to answer it.
  • Team work – Members as well as leader should ensure that they are helping each other.
  • Collaboration – If there’s someone available who has done better job or has knowhow of task you are assigned then seek help from him.
  • Observation – It is important to have open mind while doing testing this helps us to find issues which may not be looking for initially.

Test Automation – Principles, Practices

  • Here we were explained what are things to have in mind while building automation framework

Patterns in Test Automation

  • Most important thing that learned was QA should try to have technical competence which at par with developer or if possible even better that them.

Summary

  • I would like to congratulate the event Organiser’s for wonderful event there lots to share and learn.

 

 

CROWD TESTING AN OPPORTUNITY

About me

I am have 8 years’ experience in software testing. Apart working for my daily job I strongly believe that one should always put significant amount of effort in your personal development. Like the great Steve Jobs quoted “Work takes up large part of our life so we should love what we do.”

As I thought more and more over it I started to believe to love what you do; I should be good in what I do; that means spending more time doing what we love. That’s where I started looking for more opportunities related to software testing and came to know about Crowd Testing.

Here is how I would define Crowd Testing

From Stake holder perspective: Getting software tested from diverse software experts on diverse platforms using various cloud based platforms.

From Tester perspective: It’s an opportunity. Yes an opportunity to

  • Showcase your skills
  • Learn from vast community of testers
  • Test products of different kind and on different platforms
  • Make some more money

My experience with GetSkills (one of crowd testing project)

I love writing automated scripts which help in reducing testing efforts and always looking for an opportunity to do so and one such opportunity came my way thanks to Praveen from 99tests and Yogi from GetSkills

Requirement

The requirement was to write functional automated tests for a website

  1. Using Selenium Webdriver tool
  2. With Behavior Driver Development framework Cucumber
  3. in programming language java.

Getting started

To get started we need to have an account with http://bitbucket.org/ which is like version control and once that is in place Yogi(Stakeholder for GetSkills) granted required access.

There was very good document provided to

  1. Get started on with installation and editors for writing code.
  2. Architecture of the project
  3. Tests to be written

We also used HipChat to resolve any queries we had amongst all the people working on the project

 What did I learn?

Technically

  • I had never used Cucumber before that great learning experience
  • How does version control system BitBucket work
  • Other stuff related to Selenium framework from my fellow tester’s

Non-technical

  • How crowd testing platforms work
  • Collaborate among colleagues at distant places

Signing Off

I would strongly recommend all my fellow testers to join the crowd testing eco system and leverage vast benefits of it.

I would like to thank again Praveen(http://99tests.com/) and Yogi(http://getskills.co.nz/) for the opportunity and all the fellow testers for helping me out when it was needed.

Crowd tester,

Jitendra

Integrating Bugzilla and Selenium in Java

I have was able to successfully integrate Bugzilla and Selenium using j2bugzilla API. When I say integrate it means that when executing Selenium tests using TestNG framework and if a test method fails then a defect will be reported in Bugzilla with a screenshot attached for the failure.

Following are the libraries used.

    1. Selenium Webdriver Java – This library is used to test Application under tests
    2. TestNG – This framework is used to execute Selenium with enhanced flexibility. I make special use of TestListenerAdapter where override its method of onTestFailure where all the cool stuff reporting bug and creating screenshot happens
    3. j2bugzilla – This API is used to communicate with my Bugzilla instance. It is really cool API using which allows me to do following

      a. Login to Bugzilla
      b. Report Bug
      c. Add Attachment
      d. Logout of Bugzilla

Following are the steps I followed to achieve above mentioned scenario

      1. Test Listener: Add a to the class which has Selenium tests for application under test. Class with selenium test looks something like below.

      Selenium Tests clas with TestNG Listener

      Selenium Tests clas with TestNG Listener

      2. Implement the connect Bugzilla : This class which will be used by the listener for communicating with Bugzilla and performing operations on the same. Using j2bugzilla the class looks as follows

      Operate on Bugzilla

      Operate on Bugzilla

      3. Implement RaiseDefectWithScreenShotOnFailure class : This extends TestListenerAdapter and overrides the method onTestFailure(ITestResult tr)this uses connect Bugzilla class to Add a new bug every time tests fails. It will also capture screenshot and add it as an attachment to the defect.

      Test Listener Adapter

      Test Listener Adapter

      Some of the details in bug
      1. Title – is same as the Name of the test and timestamp of its execution TestMethodName_timeStamp
      2. Description – String which is passed in Assert methods. This string is same which is used in TestNG results
      3. Priority – Same as the Priority of the tests

      All the details above are fetched with use of ITestNGMethod testMethod = tr.getMethod() and Map parameters = testMethod.getXmlTest().getAllParameters();

I have used the information provided from following links

ReportNG plugin for TestNG Selenium html reporting

ReportNG is a simple HTML reporting plug-in for the TestNGunit-testing framework. It is intended as a replacement for the default TestNG HTML report. The default report is comprehensive but is not so easy to understand at-a-glance. ReportNG provides a simple, colour-coded view of the test results.

Steps to use the plugin

1. Download the plugin from http://reportng.uncommons.org/

2. Add the downloaded jars in the class-path

3. Add following the ant target

<testng classpathref=”TestNgSelenium.classpath”
outputDir=”outputFromAnt”
haltOnfailure=”true”
useDefaultListeners=”false”
listeners=”org.uncommons.reportng.HTMLReporter,org.uncommons.reportng.JUnitXMLReporter”>
<xmlfileset dir=”.” includes=”testng.xml”/> <sysproperty key=”org.uncommons.reportng.title” value=”My Test Report”/>
</testng>

useDefaultListeners – This will disable the default the TestNG reports

reportslisteners – Will use the new plugin

Following is the example of sample report :- http://reportng.uncommons.org/sample/index.html

Getting started with automation testing

In this post I’m trying to suggest the steps which can help in performing automation from scratch.

  1. Understand the Application Under Test(AUT) for automation testing. Ask following questions.
  • Is web application or desktop or mobile app?
  • What are various kind of testing required like UI, Functional, Web service, Performance
  • Get details for technology on which the application is built like HTML5 or Java or .NET or WPF

All the above questions will help do the next step

  1. Analyze tools according to inputs from above step – Following are some of the tools that I have used
  • Selenium – Only web application automation. Open source tool which allows coding in many languages this helps in using any existing knowledge with in the team. Following frameworks help when using selenium are TestNG, JUnit.
  • QTP – One of the most known tools in the market can be used for web as well as desktop and i think lately for mobile also. Scripting language is VB script.
  • SilkTest – Used it for Desktop application uses own 4T scripting language
  • TestComplete – Used for automation of Silverlight application. Can code using many languages VB Script, Java Script. Excellent tool easy to use and cheaper compared to QTP
  • Some of the other tools are
    • Webservice testing – SoapUI, JMeter.
    • Performance testing – Jmeter, SilkPerformer
  1. Design automation framework – Structuring the automation tasks in way that it helps reusability, easy of test case scripting, better reporting. This part in itself can be discussed in details which will be done in coming posts.