Showing posts with label agile. Show all posts
Showing posts with label agile. Show all posts

Sunday, October 6, 2013

Offshore Testing on Agile Projects


Offshore Testing on Agile Projects …
Anand Bagmar

Reality of organizations

Organizations are now spread across the world. With this spread, having distributed teams is a reality. Reasons could be a combination of various factors, including:

Globalization
Cost
24x7 availability
Team size
Mergers and Acquisitions
Talent

The Agile Software methodology talks about various principles to approach Software Development. There are various practices that can be applied to achieve these principles. 

The choice of practices is very significant and important in ensuring the success of the project. Some of the parameters to consider, in no significant order are:

Skillset on the team
Capability on the team
Delivery objectives
Distributed teams
Working with partners / vendors?
Organization Security / policy constrains
Tools for collaboration
Time overlap time between teams
Mindset of team members
Communication
Test Automation
Project Collaboration Tools
Testing Tools
Continuous Integration

** The above list is from a Software Testing perspective.

This post is about what practices we implemented as a team for an offshore testing project.

Case Study - A quick introduction

An enterprise had a B2B product providing an online version of a physically conducted auction for selling used-vehicles, in real-time and at high-speed. Typical participation in this auction is by an auctioneer, multiple sellers, and potentially hundreds of buyers. Each sale can have up to 500 vehicles. Each vehicle gets sold / skipped in under 30 seconds - with multiple buyers potentially bidding on it at the same time. Key business rules: only 1 bid per buyer, no consecutive bids by the same buyer.

Analysis and Development was happening across 3 locations – 2 teams in the US, and 1 team in Brazil. Only Testing was happening from Pune, India.

“Success does not consist in never making mistakes but in never making the same one a second time.”

We took that to heart and very sincerely. We applied all our learning and experiences in picking up the practices to make us succeed. We consciously sought to creative, innovative and applied out-of-the-box thinking on how we approached testing (in terms of strategy, process, tools, techniques) for this unique, interesting and extremely challenging application, ensuring we do not go down the same path again.

Challenges

We had to over come many challenges for this project.
  • Challenge in creating a common DSL that will be understood by ALL parties - i.e. Clients / Business / BAs / PMs / Devs / QAs
  • All examples / forums talk using trivial problems - whereas we had lot of data and complex business scenarios to take care of.
  • Cucumber / capybara / WebDriver / ruby do not allow an easy way to do concurrency / parallel testing
  • We needed to simulate in our manual + automation tests for "n" participants at a time, interacting with the sale / auction
  • A typical sale / auction can contains 60-500 buyers, 1-x sellers, 1 auctioneer. The sale / auction can contain anywhere from 50-1000 vehicles to sell. There can be multiple sales going on in parallel. So how do we test these scenarios effectively?
  • Data creating / usage is a huge problem (ex: production subset snapshot is > 10GB (compressed) in size, refresh takes long time too,
  • Getting a local environment in Pune to continue working effectively - all pairing stations / environment machines use RHEL Server 6.0 and are auto-configured using puppet. These machines are registered to the Client account on the RedHat Satellite Server.
  • Communication challenge - We are working from 10K miles away - with a time difference of 9.5 / 10.5 hours (depending on DST) - this means almost 0 overlap with the distributed team. To add to that complexity, our BA was in another city in the US - so another time difference to take care of.
  • End-to-end Performance / Load testing is not even a part of this scope - but something we are very vary of in terms of what can go wrong at that scale.
  • We need to be agile - i.e. testing stories and functionality in the same iteration.

All the above-mentioned problems meant we had to come up with our own unique way of tackling the testing.

Our principles - our North Star

We stuck to a few guiding principles as our North Star:
  • Keep it simple
  • We know the goal, so evolve the framework - don't start building everything from step 1
  • Keep sharing the approach / strategy / issues faced on regular basis with all concerned parties and make this a TEAM challenge instead of a Test team problem!
  • Don't try to automate everything
  • Keep test code clean

The End Result

At the end of the journey, here are some interesting events from the off-shore testing project:
  • Tests were specified in form of user journeys following the Behavior Driven Testing (BDT) philosophy – specified in Cucumber.
  • Created a custom test framework (Cucumber, Capybara, WebDriver) that tests a real-time auction - in a very deterministic fashion.
  • We had 65-70 tests in form of user journeys that covers the full automated regression for the product.
  • Our regression completed in less than 30 minutes.
  • We had no manual tests to be executed as part of regression.
  • All tests (=user journeys) are documented directly in Cucumber scenarios and are automated
  • Anything that is not part of the user journeys is pushed down to the dev team to automate (or we try to write automation at that lower level)
  • Created a ‘special’ Long running test suite that simulates a real sale with 400 vehicles, >100 buyers, 2 sellers and an auctioneer.
  • Created special concurrent (high speed parallel) tests that ensures even at highest possible load, the system is behaving correctly
  • Since there was no separate performance and load test strategy, created special utilities in the automation framework, to benchmark “key” actions.
  • No separate documentation or test cases ever written / maintained - never missed it too.
  • A separate special sanity test that runs in production after deployment is done, to ensure all the integration points are setup properly
  • Changed our work timings (for most team members) from 12pm - 9pm IST to get some more overlap, and remote pairing time with onsite team.
  • Setup an ice-cream meter - for those that come late for standup.

Innovations and Customizations

Necessity breeds innovation! This was so true in this project.

Below is a table listing all the different areas and specifics of the customization we did in our framework.

Dartboard

Created a custom board “Dartboard” to quickly visualize the testing status in the Iteration. See this post for more details: “Dartboard – Are you on track?

TaaS

To automate the last mile of Integration Testing between different applications, we created an open-source product – TaaS. This provides a platform / OS / Tool / Technology / Language agnostic way of Automating the Integrated Tests between applications.

Base premise for TaaS:

Enterprise-sized organizations have multiple products under their belt. The technology stack used for each of the product is usually different – for various reasons.

Most of such organizations like to have a common Test Automation solution across these products in an effort to standardize the test automation framework.

However, this is not a good idea! If products in the same organization can be built using different / varied technology stack, then why should you pose this restriction on the Test Automation environment?

Each product should be tested using the tools and technologies that are “right” for it.

TaaS” is a product that allows you do achieve the “correct” way of doing Test Automation.

See my blog for all information related to TaaS.

WAAT - Web Analytics Automation Testing Framework

I had created the WAAT framework for Java and Ruby in 2010/2011. However this framework had a limitation - it did not work products what are configured to work only in https mode.

For one of the applications, we need to do testing for WebTrends reporting. Since this application worked only in https mode, I created a new plugin for WAAT  - JS Sniffer that can work with https-only applications. See my blog for more details about WAAT.

Tuesday, October 1, 2013

Evolution of vodQA - The Software Tester's Conference


Evolution of vodQA - The Software Tester's Conference!

Anand Bagmar


The birth of vodQA


Back in 2009 / 2010, I was looking to attend and speak in Testing Conferences, especially near, or close to my hometown, Pune.



My search results were very disappointing for the following reasons:

  • I found that the conferences were not catered towards hands-on Testers.
  • The conferences were catered for Leads / Managers/ Directors.
  • The speakers spoke mostly about process, very high-level “things” related to Software Testing.
  • There was a significant “cost” to attend the conferences – which meant that if one is really interested in attending to learn more, they had to think multiple times before doing so.


This was clearly not working for me, as well as other like-minded people I was interacting with.



Thanks to my colleagues in ThoughtWorks, we decided to do something about this.



In June 2010, we decided to start our own conference, hosted by ThoughtWorks, with the objective of “purely sharing our learning with the community, and also learn from the community”. This was the birth of “vodQA – value oriented discussion about Quality Analysis”.



To start anything, especially external / public facing, we needed to plan it well, and the first part of the planning is – what are we trying to achieve?

vodQA – Mission Statement


To make vodQA valuable to us, and other attendees, we came up with some guiding principles. These principles have kept on evolving over time like a natural process.

  • vodQA is a practioners / hands-on conference.
  • Anyone interested in the aspect and practice of Software Testing, regardless of role or organization, should be able to attend vodQA.
  • Any topic related to Software Testing (manual / exploratory / techniques / tools / technologies / process).
  • At ThoughtWorks, the Quality of the Software we build is of prime importance. To cater to that, we have a very strong Testing capability, skills and practices within the organization. Using vodQA as a platform, we want to share our learning with the Testing Community, so they can learn from what has worked well, or not so well, based on real experiences.
  • Though at ThoughtWorks, we have “good” Testing practices, there are many more practices and experiences we can learn from the experiences of other organizations and individuals. The vodQA platform should able to provide new learning from the industry for ThoughtWorkers, and others who attend.
  • In order to keep learning from what we do, and keep doing better in the future, we take feedback from attendees and speakers. Also, with an immediate after-the-event retrospective, we attempt to do the best for all participating in next vodQA.
  • vodQA is a community event. Each community hosting vodQA should have the flexibility to structure the event in the way they see best suited for the attendees.
  • Each vodQA should have a specific theme. This allows proper expectation setting from attendees, and also invites specific themed-topics from internal (ThoughtWorkers) and external speakers.

How we connect with like-minded people?


We started by using the database of people who had expressed interest in working with / being associated with ThoughtWorks, and spreading the event by word-of-mouth.



Then we started using the power of facebook (vodQA group), LinkedIn (vodQA group) and Twitter (#vodqa) to also spread the word, and bring the community together during non-event times, to share and collaborate with each other.

The journey so far


The first vodQA event in June 2010 at ThoughtWorks, Pune was a huge success. As a result, we immediately planned and hosted another vodQA in Oct 2010, again at ThoughtWorks, Pune.



The feedback and retrospectives provided us great motivation and inputs. As a result, we decided to make vodQA an India level conference.



As we took vodQA to other ThoughtWorks India offices out of Pune, (Bangalore, Chennai, Gurgaon), the respective community planned and executed this event, the way they felt best.



Till date, we have hosted the following vodQA events:



Theme
ThoughtWorks Location
Date
vodQA – The Testing Spirit
Pune
Jun-10
vodQA
Pune
Oct-10
vodQA
Pune
Mar-11
vodQA - Agile testing  for Enterprises
Gurgaon
Dec-11
vodQA - Continuous Testing For Total Quality Assurance
Chennai
Jan-12
vodQA - Agile Testing for Team and and Enterprises
Bangalore
Feb-12
vodQA – Testing and Beyond
Pune
Mar-12
vodQA – NCR
Gurgaon
Jun-12
vodQA Geek Night – Behavior Driven Testing (BDT) workshop
Pune
Jul-12
vodQA - The ABCs of testing - Automation, Big Data Analytics , Cloud Testing
Bangalore
Sep-12
vodQA – Going Beyond the Usual
Pune
Oct-12
vodQA Geek Night – Test Automation workshop
Pune
Apr-13
vodQA – Get, Set, Test
Bangalore
May-13
vodQA - Served on Mobile
Chennai
Jul-13
vodQA - Agility In Mobility
Gurgaon
Jul-13
*vodQA – Smarter | Faster | Reliable
Pune
Oct-13
*vodQA Gurgaon - Selenium for Beginners -
Gurgaon
Oct-13



*Upcoming events



Some interesting quotes from attendees:

  • Liked the participation, interactive approach of the organizers and the passion and energy to make sure that audience goes satisfied
  • A Saturday well spent @ThoughtWorks #vodQA. Got a chance to meet some highly motivated & inspired ThoughtWorkers & industry professionals!
  • This is our QA family, and we want to see it grow



Overall we have had 800+ external (non-ThoughtWorker) participants and 75+ talks / workshops / games / sessions across all vodQA events. There have been a decent % of Developers / Business Analysts / Software Coaches attending and speaking, though the majority of attendees has been Software Testers.


I am very happy to see vodQA become popular and valuable to all passionate about Software Testing, all across India.


My dream is to take vodQA across the world as a community driven, Testing practioners conference!