Five Ways DevOps complements Agile

My guest post article for Gurock Software GmbH #TestRail blog is now up!!

“5 Ways DevOps complements Agile” – As an industry practitioner who has worked in agile for almost a decade now, I have always seen DevOps as a friend and an extension of agile. Using this article I have tried to put across my view on how this handshake between developers and operations personnel works in favor of bridging the gap from software creation to software delivery.- 

Please give it a read at – https://blog.gurock.com/5-ways-devops-complements-agile/

The major points I have touched upon in this article are –devops

  • A Focus on User’s Needs

  • Continuous Delivery

  • Concentrated Value Creation

  • Motivated Individuals

  • A Culture of Inclusion

 

To read more click here->

Cheers

Nishi

 

Training on Selenium – CP-SAT Certification Batches @Bangalore

CP-SAT stands for “Certified Practitioner – Selenium Automation Testing” is a certification prepared and honoured by “Agile Testing Alliance” & “University Teknologi Malaysia (UTM)”, which is the Selenium training course I have been conducting in Bangalore. We conducted a public batch over the last weekend as well as a corporate batch this month where participants got to build, enhance and maintain the scripts in Eclipse IDE and Selenium 3.x WebDriver.

Training Approach:   This course is designed to train agile professionals with the basics of testing web applications using Selenium leading to advanced topics. I approached the training as a combination of theory as well as hands-on execution of scripts using the features of Selenium with ample time given to practice and kept the focus on the practical application of Selenium to resolve common web automated testing challenges.

Agenda: This course focuses on latest Selenium 3.x, its advantages,  WebDriver 3.x configuration and execution related concepts using JUnit and TestNG frameworks, Selenium Reporting mechanism, Data Driven Testing, getting started with Selenium Grid concepts, handling various types of web elements, iframes, dynamic lists etc. To know more about course syllabus – please click here

Course Schedule: The course consists of 3 full days of training, hands on assignments and practical, continuing on later with 5 days of 2-hour web sessions live with the trainer for more learning and queries and clarifications. Thereafter the candidates are given a mock exam to attempt which gives an idea about the real certification exam. The final exam consists of 2 sections – Theory which is Online Objective type Quiz and Practical which a 2 hour exam with given case studies implementation and submission.

We have received tremendous response from the CP-SAT training batches and many more interested candidates for upcoming scheduled training sessions at Bangalore.

Here is a sneak peek into the training room and also some wonderful feedback shared by our candidates-

Public CP-SAT Batch @Bangalore

Corporate CP-SAT Batch @Bangalore

If interested please check the upcoming batches calendar at – http://ataevents.agiletestingalliance.org/

Happy Learning!
Nishi

 

 

 

 

Better Software Design Ideas for the Hawaii Emergency Alert System

Continuing the discussion on the Hawaii Missile Alert which made headlines in January 2018 and turned out to be a false alarm and ended up raising panic amongst almost a million people of the state all for nothing, (read here for detailed report) I would like to bring back the focus on implications of poor software design leading to such human errors.

Better software design is aimed at making the software easier to use, fit for its purpose and improving the overall experience of the user. While software design focuses on making all features easily accessible, understandable and usable, it also can be directed at making the user aware of all possibilities and implications before performing their actions. Certain actions, if critical, can and should be made more discrete than the others, may have added security or authorisations and visual hints indicating their critical nature.

Some of the best designers at freelancer.com came together to brainstorm ideas for better software design and to revamp the Hawaii government’s inept designs. They ran a contest amongst themselves to come up with the best designs that could avoid such a fiasco in future.

Sarah Danseglio, from East Meadow, New York, took home the $150 grand prize, while Renan M. of Brazil and Lyza V. of the Philippines scored $100 and $75 for coming in 2nd and 3rd, respectively.

Here is a sneak peek into how they designed the improved system :Read More »

Exploratory Testing using “Tours”

My latest article for stickyminds.com “https://www.stickyminds.com/article/using-tours-structure-your-exploratory-testing” talks about using TOURS to enhance the exploratory tests you perform and add more structure and direction to them.

Here is my experience report on using Tours in my testing project-

WHAT ARE TOURS —

In testing, a tour is an exploration of a product that is organized around a theme. Tours bring structure and direction to exploration sessions, so they can be used as a fundamental tool for exploratory testing. They’re excellent for surfacing a collection of ideas that you can then further explore in depth one at a time, and they help you become more familiar with a product—leading to better testing.

I had just started working with a new product, a web-based platform that was a fairly complex system with a large number of components, each with numerous features. Going into each component and inside every feature would take too much time; I needed a quick, broad overview and some feedback points I could share as queries or defects with my team.

I realized my exploration of the application would need some structure around it. Using test sessions and predefined charters, I could explore set areas and come back with relevant observations—I had discovered tours.

Cem Kaner describes tours as an exploration of a product that is organized around a theme. Tours help bring structure and a definite direction to exploration sessions, so they can be used as a fundamental tool for exploratory testing.

Tours are excellent for surfacing a collection of ideas that you can then further explore in depth one at a time. Tours testing provides a structure to the tester on the way they go about exploring the system, so they can have a particular focus on each part and not overlook a component. The structure is combined with a theme of the tour, which provides a base for the kind of questions to ask and the type of observations that need to be made.

In the course of conducting a tour, testers can find bugs, raise questions, uncover interesting aspects and features of the software, and create models, all done on the basis of the theme of the tour being performed.

Let’s discuss some common types of tours that are useful for testers and look at some examples.

Testing Tours

Read More »

Conducting a Webinar on “Strengthening your Agility using BDD”

As a part of the webinar series by Agile Testing Alliance (ATA) , I will be conducting a webinar on the topic  “Strengthening your Agility with BDD – A Demo using Cucumber”. Here I will discuss the practical issues in agile teams and the use of Behavior Driven Development to overcome them. I shall also demo a basic BDD framework using Cucumber as a tool and showcase a practical test scenario.

The webinar will cover –

  • Practical issues faced by Agile teams
  • QA issues in fast paced agile
  • Behavior Driven Development – the definition and need
  • Extending the Agile User stories and acceptance criteria in BDD scenarios
  • Demo using Cucumber
  • Usage and Benefits of BDD In agile

Find more details about the webinar at https://www.townscript.com/e/webinar-on-bdd and register soon!

—-UPDATE—

The recorded session is now available at ATA Youtube channel at

 

Thanks

Nishi

 

Getting Featured in the ‘Top 10 Articles of 2017’ at Stickyminds!

Dear Readers

It is my pleasure and honor to share that my article on

                              “Let the Agile Manifesto guide your Software Testing”

published on Techwell Community forum http://www.stickyminds.com in 2017 has now been featured in the list of “Hottest Articles of 2017” , featuring in the Top 10 Most Read articles last year!

You can give it a read at https://www.stickyminds.com/article/let-agile-manifesto-guide-your-software-testing

I am happy that my thoughts, ideas and write-ups are getting noticed, and this motivates me to continue writing more and better always!

Wishing you a great year ahead.

Happy Testing!

 

Must have skills for Agile Testers – a key to the entire team’s agility

Software test professionals have shouldered the responsibility of ensuring a quality software delivery. With the advent of agile, testers in agile teams have had a lot more in their plate. Instead of being a quality ‘gateway’ or checkpoint at the end of the software development life cycle, they have become an integral part of each and every phase of creation.

As I like to say, testers are key to the team’s agility and have a crucial part to play in the success of the project as well the team’s agile journey.

In my article published on ATA Agile Testing Alliance blog website at https://atablogs.agiletestingalliance.org/agile/must-have-skills-for-agile-testers-a-key-to-the-entire-teams-agility/ , I discussed the skills and thoughts that every agile tester must focus on to stay abreast with their project’s needs as well as the industry’s pace. Here are excerpts from the article:

—-

Be the User’s Amigo

Agile talks about the ‘3 amigos’ – the Business Analyst, the developer and the tester – all working together to bring a user story to life. To understand the user’s perspective on each and every requirement, a tester can play a crucial role by thinking ahead, asking the right questions during story grooming and design discussions and testing the most probable and useful paths while execution.

QA professionals are also required to think from the user’s chair and provide constant feedback during continuous involvement in usability testing, cognitive walkthroughs, focus groups and surveys etc.

Overall, an agile tester needs to think of the customers as their amigos, have a taste of their experiences, keep note of their problems and bring out the best in the software to keep their buddy happy!

 Learning Areas: Requirement Analysis, Use Cases and User Stories, Usability study, End-to-end testing, exploratory testing and test techniques

 

Keep a check on the ‘Behavior’

The requirements from the market need quick gathering, distillation and development which require collaboration between the entire set of stakeholders in short time scales.

Behavior Driven Development (BDD) uses the concept of ubiquitous language or a semi-formal language which is shared by all team members including developers, testers, business analysts and other non-technical stakeholders. It makes use of simple domain specific language to convert natural requirements into executable tests.

BDD is definitely catching up in the market because of its outside-in, multiple stakeholder and high automation approach suitable to agile projects. So, all my tester buddies, get your hands into BDD and related tools!

Learning Areas: Basics of TDD, BDD, Cucumber, ATDD, Fitnesse, building a Test automation framework

Spin the wheels of ‘Continuous Testing’

Software delivery timelines have reduced tremendously and to meet the expectations of quick delivery and deployments, software testing has to become a part of the delivery pipeline. The advent of DevOps has brought with it various tools to support CT as a part of CD which makes testers an integral part of the devops system. Software testers are required to participate in setting up and maintenance of sustainable test setups and environments, automate tests rapidly, set up and maintain the continuous testing pipeline.

Learning Areas: DevOps fundamentals, Configuration Management Tools, Build automation, Test automation tools and integration into devops pipeline

 

It is all black and white!

Testers focussing solely on ‘black’ box testing and only business level tests would need to think more ‘white’ now. The need of continuous testing can be met only by ensuring API level tests, and moving towards micro services testing which ensures easy test and deployment of new independent pieces of functionality in the code.

With faster delivery cycles, huge interdependencies of systems in real-time and regression overloads, functional tests are insufficient and impossible to run in isolation. For comprehensive tests, API testing will be the foremost requirement to verify dependencies on and with other applications and systems. Adding white box testing skills to their profile will not only be a value add to the resume, but also add an essential key piece to complete the ‘black and white’ picture.

Learning Areas: White Box testing basics, REST APIs, Unit test framework like JUnit, TestNG etc.

 

A tester’s role in an agile team is to provide assistance and support in all areas, so they may need to switch hats frequently, depending on the team’s needs. The success of this endeavour, though, also depends on an open, communicative, and receptive environment fostered within the team. Adding these new skills to your hat can help any agile tester bring more value to their team.

Happy Testing!!

 

Guest Talk @ ETMarlabs meetup for EUROSTAR 2017 #magicoftestinginindia

I was invited to present a guest talk at the meetup organised by ET Marlabs team for EUROSTAR 2017 on 9th Sep 2017- being the first of its kind in India and I gladly obliged! Presented a talk on Agile Manifesto and its learning for keen testers and answering our dilemmas in agile testing. The talk was very well received and brought out some great discussions with the participants. I was accompanied by another guest speaker Mr. Vinay Krishna who spoke about Behavior Driven Development BDD framework using Cucumber which was a very informative session too.

The team at ET Marlabs had also organised some great activities, testing relay game and quiz for the participants which brought out their testing minds and enthusiasm , which was well rewarded too! I would like to thank them for their kind invitation and would encourage them to organise and participate in more such community events!

Have a glimpse here –

http://highonblog.com/teamstar-2017-the-magic-of-testing-meetup-in-india/ 

Paying Off the Technical Debt in Your Agile Projects

Just as you should not take out a financial loan without having a plan to pay it back, you should also have a plan when incurring technical debt. The most important thing is to have transparency—adequate tracking and visibility of the debt. Armed with the knowledge of these pending tasks, the team can devise a strategy for when and how to “pay off” technical debt.

Learn about managing your technical debt and testing debt in agile teams and share your thoughts on my latest article published at www.stickyminds.com and also at www.agileconnection.com

***** Here are some excerpts from the article for my readers***

Technical debt initially referred to code refactoring, but in today’s fast-paced software delivery, it has a growing and changing definition. Anything that the software development team puts off for later—be it smelly code, missing unit tests, or incomplete automated tests—can be technical debt. And just like financial debt, it is a pain to pay off.

Forming a Plan to Pay Off Technical Debt

Let’s say a development team working on a new project started out following a certain programming standard. They even set up an automated tool to run on the code periodically and give reports on the adherence to these standards. But the developers got busy and stopped running this tool after a sprint or two, and when the development manager asked for a report after a couple of months, there were hundreds of errors and warnings, all of which now need to be corrected.

This scenario happens all the time with agile teams focused on providing as much customer value as possible each sprint. The problem then needs to be fixed immediately, because despite having all the functionalities in place, the team doesn’t want to release code that is not up to production standards.

The team is then faced with a few options for how to service the debt:

  • Negotiate with the product owner on the number of user stories planned for the upcoming sprint in order to have some extra time for refactoring the code
  • Dedicate an entire sprint to code refactoring
  • Divide all errors and warnings among the development team and let them handle the task of corrections within the next sprint, along with their regular development tasks, by scheduling extra hours
  • Plan to spread this activity over a number of sprints and have a deadline for this report before the end of the release
  • Estimate the size of refactoring stories and either plan them into upcoming sprints as new user stories or accommodate them as part of existing user stories

Though these are all viable options, the best approach depends on the team, the context, upcoming deadlines, the risk the team is willing to take, the highest priority for functionalities that need to be shipped, and the collaboration with the product owner.

Again, just like when you take out a financial loan, you should plan to pay off technical debt as quickly as possible using the resources you have. It’s a good idea to perform a risk analysis of the situation and reach a consensus with the team about the best approach to take.

Technical Debt in Testing

Technical debt doesn’t occur only in programming. Testing activities are also likely to incur technical debts over time due to a variety of factors, including incomplete testing of user stories, letting regression tests pile up for later sprints, not automating essential tests every sprint, not having complete test cases written or uploaded to test management tools, not cleaning up test environments before the next iterations, and not developing or testing with all test data combinations on the current features.

Sometimes debt may be incurred intentionally for a short term, such as not updating tests with new test data when testing on the last day of the sprint due to a time crunch, but planning to do it within the first couple of days in the next sprint. As long as the team has an agreement, it’s acceptable to defer some technical debt for a short while.

On occasion, debt may be incurred intentionally for a longer term by planning it in advance, such as deciding to postpone any nonfunctional tests, like performance or security-related tests, on the system until a few sprints are out and features are stable enough to carry out the tests. Again, as long as the team agrees with the risk and has a plan to address it, it is fine to defer certain activities.

Testing technical debt can get us out of tight situations when needed, but you still need to ensure that you plan carefully, remain aware of the debt, communicate it openly and frequently, and pay it off as soon as possible. Having a plan to service these debts reduces your burden over time and assures your software maintains its quality.

Debt-Solutions

Prevention Is Better Than Cure

Avoiding having any technical debt is always preferable. As the saying goes, an ounce of prevention is worth a pound of cure.

Every team has to devise its own strategy to prevent technical debt from accumulating, but a universal best practice is to have a definition of “done” in place for all activities, user stories, and tasks, including for completing necessary testing activities. A definition of “done” creates a shared understanding of what it means to be finished so that everybody involved on the project means the same thing when they say it’s done. It becomes an expression of the team’s quality standards, and the team will become more productive as their definition of “done” gets more stringent.

Here’s a good example of criteria for a team’s definiton of “done” for every user story they work on:

  • All acceptance criteria for the user story must be met
  • Unit tests must be written for the new code and maintain a 70 percent coverage
  • Functional tests must be performed, and exploratory tests must be performed by a peer tester other than the story owner
  • No critical or high severity issues remain open
  • All test cases for each user story must be documented and uploaded in the test management portal
  • Each major business scenario associated with the user story must be automated, added to the regression test suite, and maintain a 70 percent functional test coverage

Verifying that the activities completed meet these criteria will ensure that you are delivering features that are truly done, not only in terms of functionality, but in terms of quality as well. Adhering to this definition of “done” will ensure that you do not miss out on essential activities that define the quality of the deliverable, which will help mitigate the accumulation of debt.

Despite best practices and intentions, technical debt often will be inevitable. As long as the team is aware of it, communicates openly about it, and has a plan in place to pay it off as quickly as possible, you can avoid getting in over your head.

*************

‘INVEST’ing in good User Stories

User stories are the requirement specifications in their simplest form. Methodologies like Scrum use User story format to express the functional requirements of the software to be developed as –

As a <user persona>, I want to <do the action> so that <need of function>

This creates a deeper understanding of the behavior from a user’s perspective along with the business need and reason for the function, thus making the development of software easier.

But writing effective user stories isn’t as easy as it sounds. There are a lot of questions to be answered, like which functionality is one user story and which is too big and needs splitting up; what is the true sense of the user story; how to best express the functionality in words; which user personas are to be considered etc.

Getting the user stories right is an essential step to success of the sprints in agile, and for the teams struggling with it we have the INVEST principal as a guideline to be followed. This principal gives the attributes of a user story to be considered when writing and defining them so that they can make a robust foundation to our product backlog. Let us look at the principle in depth –

I – Independent

Means that each user story must be Independent as a functionality and be deliverable

N – Negotiable

Means that the user story be negotiable in terms of implementation, which necessarily means that the implementation details or ‘how’ to do the functionality must not be specified in the user story. User story must be business need and customer experience story.

V – Valuable

Means that the user story must create value for the customer. We should be able to see the reason and way the function will be valuable to the customer and this can be gauged by direct communication with the stakeholders, and can also be quantified in terms of ‘business value’ that we can associate with each story.

E – Estimable

Means that the User story must be clear and concise enough so that we can estimate the amount of work required to achieve it with accuracy. Any unclear parts, missing information or discrepancies must be clarified before we can finalise a user story to be taken up for development.

S – Small

Means that each user story must be a small chunk or slice of work. The development of one user story must be doable within one sprint and hence anything bigger than that would need to be further split down.

T – Testable

Means that each user story must be testable as a feature and have a unique new function get added to the product.

Letter Meaning Description
I Independent The user story should be self-contained, in a way that there is no inherent dependency on another user story.
N Negotiable User stories, up until they are part of an iteration, can always be changed and rewritten.
V Valuable A user story must deliver value to the end user.
E Estimable You must always be able to estimate the size of a user story.
S Small User stories should not be so big as to become impossible to plan/task/prioritize with a certain level of certainty.
T Testable The user story or its related description must provide the necessary information to make test development possible.

Keeping these points in mind when designing and formalising our team’s user stories will ensure that the sprint runs smoothly without unforeseen scenarios, glitches in implementation due to unclear requirements and re-work due to frequent changes.

Have more questions? How to achieve this?

Stay tuned for the next article where we will look at the steps to achieve the best user stories.

Happy Testing!
Nishi