Wednesday, 22 April 2020

Count on AQM to deliver.

We had quiet a laugh when our client installed a wash station at office gate, and made it compulsory to wash hands and apply sanitizer before entering office premise. Truth be told, when the early news on COVID19 started to make headlines, no one including my team could fathom the gravity of the situation.

On 22nd March our Prime Minister announced the 'Janta Curfew', and we got a glimpse of what was to come shortly. Our client by that time had already instructed teams to start working on minimum staff basis. Soon, I was contacted by our RMG and leadership team, checking on arrangements and availability of AQM staff at client office.

For the few days before the lock-down, our AQM team came together to draw out a plan by way of which we had no more than the most essential AQM team members at client office, and yet ensuring that no project was impacted. Our client was evaluating options for all its staff including the vendors to work from home. Our client tried to procure laptops and other connectivity devices. But, with the sudden surge in demand for laptops and other devices, our client's vendor/suppliers could not fulfill the demand. Wasting no time our client quickly switched to next best alternative and created VPN access to all its staff.

I wish I could say that that took care of everything and AQM team worked its way to success. But, our success wouldn't have been sweeter had it not been for the niggles we face along the way.

We found out that one of the staff had no personal computing device. Just few of days before the lock-down, I managed to meet up with this team member to handover my AQM laptop for him to use. Next challenge we faced was connectivity. One of the team member connected to internet using his mobile hot-spot (only if he could ever get network at his home). But where this is a will there is a way, the team member literally set-up his work station on his house;s terrace so that we could get better connectivity. Another, team members staying in Navi Mumbai, faced power outages due to load shedding. To mitigate this the resource worked  beyond the working hours to ensure work was not impacted. Unfortunately, due to budgetary reasons our client asked me to ramp-down a test team member. I ran pillar to post trying to retain my team. But finally had to let go of one team member. I am proud to say that even this did not demotivate the team and we continued to push on with unwavering focus on our team goal.

In the end, AQM test team, created more that 500+ complex test cases.We conducted at least two runs with the test suite and detected more than 150+ defects and rejecting more than 3 builds for poor quality and stability issue. We did multiple rounds of regression testing as required. We are now trying to incorporate functional automation to increase efficiency of our team.

 AQM team is ensuring the highest level of quality of service to our client with our solid work ethics and expertise in digital software testing.

Our team: Omkar Pendse, Pawan Poptani, Rohit Wani, Ashok Tripathi, Komal Raool.

Wednesday, 8 April 2020

Full-stack tester: A new breed of software quality experts

Its appalling to say the least, to see people use their LinkedIn account as if it was their Facebook timeline. A few days back I came across a a meme shared on LinkedIn. Now, while I was angry of the misuse of LinkedIn, I have to admit the meme sure was indeed funny and reflected the conundrum faced by job seekers(especially a certain set of IT professionals). The meme went something like this.

Source: https://www.linkedin.com/feed/update/urn:li:activity:6612626328481083392/
As funny as it sounds, but the reality is that the recruiters are indeed asking for multiple skill-sets from candidates. Job creators are demanding more from their workforce. And when hiring they want the most bang for the buck, for every buck they spend on their prospective employees.

The biggest contributor to this is the advent of Agile methodology and its extensive adoption as the goto methodology for developing software today.

Gone are the days of compartmentalized linear sequential development models, where individuals could specialize in specific roles, through the application's development life cycle. The Scrum Guide a manifesto for Agile, proposes a smaller, leaner, self-organizing and creative teams equipped and empowered to do everything that is required to create a potentially deliverable product. The Scrum Guide, recommends a development team of 3 to 9 members. As teams get smaller there is no room left for specialist coder, tester, DBA etc. In Agile teams, literally everyone is expected to do everything. And hence, everyone on an Agile team is called developer, a general title devoid of any specialization.

Software developers have smartly adapted to this change by reinventing themselves as full-stack developers. Someone who can come in and do whatever that it takes to build the software. If changing times have demanded software developers to re-skill and redefine themselves to be relevant to the job market. There is no surprise that software testers are also feel the need to re-skill and redefine themselves.

Gone are the days when organizations had large test factories, with dedicated functional testing teams focusing on particular business vertical/function. Test automation teams, software performance testing teams, software security testing teams were maintained over and above the functional testing teams. Agile organizations can no longer sustain the luxury of such elaborate setup. Organizations today are hiring automation testers who when required can double as a functional testers.

Taking cue from developers, its about time that the software testers up-skill and re-brand themselves as "Full-stack Testers" to differentiate themselves from the masses and stay relevant to the job market. Just like the full-stack developer, a full-stack tester should act as a one stop shop for anything concerning software quality.

Now that we have addressed the who, the what and the why of full-stack testing. Lets look at the How, cause it would be silly to answer the when. A simple answer to when is now.

The Big Five

A full-stack tester should have the capabilities to demonstrate 'The Big Five'. What do I mean by that, a full-stack tester should not just have theoretical knowledge of, but be able to put to work, his expertise in five key knowledge areas which are listed below. Knowledge of each of these constituent areas will equip test engineers to contribute to the overall quality of product and teams developing software solutions.

  • Functional Testing
  • Non-functional testing
  • User Experience
  • Software Quality Assurance
  • Project Management

Functional Testing

Developing functional knowledge of product, industry or domain is not easy. Building functional knowledge is an experiential process. For example, an test engineer, who starts out his career working on financial services product, over a course of multiple years of career, having worked on similar products or breath of products spanning across the industry, can build deep understanding of the subject matter. Though one can start by learning from experts in the field. Professional courses or certifications from industry/professional bodies also play a big role in building knowledge base. They not just help in acquiring domain skills but also help substantiate your learning.

Non-functional Testing

A functional tester ensures that the product/solution being developed conforms to these business requirements. A non-functional tester on the other hand focuses on other essential areas for e.g. performance of the system, security or recovery after a malfunction, just to name a few. A full-stack tester should be able to recommend the acceptable performance levels and then be able to strategize a plan to measure the performance of the application. He should be able to identify the right tool for job and then apply them to measure outputs, to ensure that the system works in an acceptable thresholds. There are several open source and commercial off the shelf tools available which a tester can use of non-functional testing. An expert test engineer should be well versed with these tools and know how to apply them. The key ability to understand and interpret the outcome, to prescribe a corrective action, is highly valued by clients/product owners.

Over span of the product lifecycle a substantial size of test suite gets created. Each time a new enhancement is made to the product, it becomes necessary to ensure that the previously tested product is retested to ensure that the new development does not brake the existing working product. Similarly, in Agile product development, each sprint is an increment to the earlier, and hence for each new sprint its necessary to test, what was delivered in earlier sprint is working as expected. This is called regression testing. Employing a team of testers to do this work manually is a waste of the time/efforts of the team. This is where automation testing comes to play. Automation testers employs the right tools to capture the exact steps carried out to perform testing in earlier sprints. Automation testing helps reduce test efforts and improves productivity of the team. Its thus imperative for a full-stack tester to have knowledge of automation.

User Experience

An amazing software solution, is not the one that just conforms and caters to every business requirement documented by the product owner. An amazing software has, customers/clients/end user as the focal point, while designing business requirement for the product/solution. A software tester can be the closest version of the end user that the developer can get. It is thus important for an aspiring full-stack test engineer to learn to put themselves in the shoes of the end users and give qualified inputs to the developers and product owners at every stage of the solution design to ensure an exceptional user experience.

Software Quality Assurance

Knowledge of business functionality, non-functional tools and user experience would help a full-stack developer contribute to quality of product. The last to areas that the full-stack tester should be well versed with is quality assurance and project management. Sprint Retrospective is an essential ceremony in Scum focused on finding areas of improvement that can be incorporated by the team to improve development processes, which in turn lead to better product. With knowledge of quality audit, peer reviews, checklists and test processes a full-stack tester can add the most value to the agile team.

Project Management

Agile Scrum does not have a designated project manager, yet the qualities of a project manager are essential for success of any project. It is thus necessary for a full-stack tester to know and be able to perform tasks such as stakeholder engagement, managing project timelines/resources, dashboarding/reporting, staffing, vendor management etc. Most of these skills could be learnt by an individual on job, handling this areas first hand or through consultation of experts in this subject. Though a certification from a reputed industry body could elevate a full-stack testers stature amongst his/her peers and also in his team.

In the pursuit to acquire 'The Big Five' there is a good chance that a test engineers become as the phrase goes "Jack of all, master of none." One should bare in mind that being a full-stack tester is not a generalist role. Mastering all 'The Big Five' is surely not easy. And hence, an individual should strive to become "Jack of all, Master of some."

In today's day and age, change is the only constant and those who adapt to change will evolve and learn to keep themselves relevant to the changing world around them. Rather than resisting change, lets embrace it. Its time to evolve to make larger contribution to the team as a "Full-stack Tester".