Replacing QA Column in the Work Board

It was quite a journey. I started as a completely manual tester who could occasionally do exploratory testing. Then, I made a drastic change of transforming my work ethics, learning automation, using monitoring tools and moving my role towards the more generic QA role where testing in production is a part of the quality assessment. And now, with yet again a bigger change in my quality professional’s journey… I promote replacing QA column after development with something like “Desk Check”. 

I recently joined a new project engagement where we can build the product from scratch. This means that we also are creating our work culture from the bottom up. It looks like our favorite phrase nowadays is “adaptable to change”. With all this, we are trying to identify the first version of our work board.

When one of our team members automatically added a column called “QA” after development, I suggested to rename it to “Desk Check”. You may wonder why would I do that when I am still a part of the team with a role of QA?

Quality should be in-built, not tested in

Thinking of quality should start as early as the user story or feature is being created. How will we gain confidence that development was successful? What metrics will we use to measure implementation? Can we recover from the worst case scenarios easily? Questioning is a huge part of quality promoting. This should be done throughout the development process before even the desk check.

Desk check is not assigned to any role specifically

If development was successful can be evaluated not only by testers but also product owners or even other developers. Desk check is more of a concept where developers show their work (and their implemented checks), get asked questions, and sometimes pair test. It can be very useful to get a product owner to give feedback on the feature before it is marked as done.

Quality of the product is a shared responsibility

When I suggested using “Desk Check” instead of “QA”, one of the developers smiled and said “Oh, so you’re not a control freak gatekeeper. We all have to be responsible.”. This is exactly what I aim to promote. However, what matters here a lot is also the fact that your team is engaged in this.

Having the attitude that all the team is responsible for quality is quite a task and I won’t say you can do it on your own and change people overnight. You can’t. They have to be willing to work in these ways and it can be very challenging. Being responsible for quality as a developer has certain benefits: you gain confidence about your work’s reliability, learn to question your own work, get to collaborate and understand better other team members like product team, and, actually help with your developer skills to improve the automated checks. The drawback of this is: you need to put effort. Way more effort than if QA is responsible for quality.

In summary, it is a challenging change to actually shift left and not only talk about it. You may find yourself wondering what QA role does if the quality is inbuilt and developers write their own checks… And that’s normal. I did, too. What is important to understand is that teams still need Quality Evangelists to question, promote quality, investigate CI/CD clutter, analyze requirements, tackle misunderstandings and share their testing knowledge with others. 

Testing challenge was amazing! – Day 31 of 30 Days of Testing

When I decided to join 30 Days of Testing challenge, I did not have much expectations. Now, after a month of sticking to it honestly and sincerely every single day, I can admit that I have learned a lot and met some wonderful people on the way!

Here is the list of all challenges with links to the posts I wrote about them:

  1. BUY ONE TESTING RELATED BOOK AND READ IT BY DAY 30:
    Bought and read “Explore It!” by Elisabeth Hendrickson
  2. TAKE A PHOTO OF SOMETHING YOU ARE DOING AT WORK:
    What I’m doing at work
  3. LISTEN TO A TESTING PODCAST:
    Testcast Podcast “Testing is Dead”
  4. SHARE A TESTING BLOG POST WITH A NON-TESTER:

  5. READ AND COMMENT ON ONE BLOG POST:

  6. PERFORM A CRAZY TEST:

  7. FIND AN ACCESSIBILITY BUG:

  8. DOWNLOAD A MOBILE APP, FIND 5 BUGS AND SEND THE FEEDBACK TO THE CREATOR:

  9. CREATE A MINDMAP:

  10. FIND AN EVENT TO ATTEND (ONLINE OR FACE TO FACE):

  11. TAKE A PICTURE OF YOUR TEAM:

  12. DOODLE A PROBLEM:

  13. FIND A USER EXPERIENCE PROBLEM:

  14. STEP OUTSIDE OF YOUR COMFORT ZONE:

  15. FIND A PROBLEM WITH AN E-COMMERCE WEBSITE:

  16. GO TO A NON-TESTING EVENT:

  17. FIND AND SHARE A QUOTE THAT INSPIRES YOU:

  18. FIND A BROKEN LINK. AND REPORT IT:

  19. FIND AND USE A NEW TOOL:

  20. FIND A GOOD PLACE TO PERFORM SOME SECURITY TESTS:

  21. PAIR TEST WITH SOMEONE:

  22. SHARE YOUR FAVOURITE TESTING TOOL:

  23. HELP SOMEONE TEST BETTER:

  24. CONNECT WITH A TESTER WHO YOU HAVEN’T PREVIOUSLY CONNECTED WITH:

  25. CONTRIBUTE TO A TESTING DISCUSSION:

  26. INVITE A NON-TESTER TO A TEST EVENT:

  27. SAY SOMETHING NICE ABOUT THE THING YOU JUST TESTED:

  28. SUMMARISE AN ISSUE IN 140 CHARACTERS OR LESS:

  29. FIND AN OUT BY ONE ERROR:
    Off-by-one error hunt

  30. GIVE SOMEONE POSITIVE FEEDBACK:
    Give someone positive feedback

     

     

Give someone positive feedback – Day 30 of 30 Days of Testing

GIVE SOMEONE POSITIVE FEEDBACK

I couldn’t imagine of a better way to end an amazing journey of 30 Days of Testing. After all days filled with various testing tasks the final touch is personal, positive and related to people around us.

One of previous challenges was rather work-based- to say something nice about product you tested. It is closely related to today’s challenge as you may say it to a developer who made the product, but today it’s time to say something personal!

In my company, every three months we have personal feedback sessions with our CTO and VP of Engineering. Not only that we get feedback about ourselves, but also we are encouraged to express feedback about everyone in the team (including the people who are in the room). Usually, even if there are some things to improve, positive feedback is a big driving force which calms you down and makes you realize that people value you.

However, I never said positive feedback on purpose to someone personally, so today I chose a programmer who I greatly value, but maybe do not express that enough, and wrote that to him.

The experience was pretty rewarding! I had some struggles to formulate the words and it took a while to click  “Send”, but I feel that he really deserved it and hope that it will make his day. It would make mine.

In the end, I believe that it would be nice to give (and receive!) positive feedback real-time, not on challenges or feedback sessions, but when you feel like it.

 

Off-by-one error hunt – Day 29 of 30 Days of Testing

FIND AN OUT BY ONE ERROR

I did not know where to start with this challenge: what is an out by one error?

After some googling, I decided to stick to off-by-one error and its definition from Wikipedia:
An off-by-one error is a logic error involving the discrete equivalent of a boundary condition. It often occurs in computer programming when an iterative loop iterates one time too many or too few. This problem could arise when a programmer makes mistakes such as using “is less than or equal to” where “is less than” should have been used in a comparison or fails to take into account that a sequence starts at zero rather than one (as with array indices in many languages).

I did discuss this with some friends and they confirmed that it must be the same as “an out by one error”. They gave some more practical examples as well:

  • an array has 10 elements and you want the fifth one, so you do arr[5], but since arrays might be indexed from 0, the fifth element is arr[4] and you’re off-by-one;
  • Vitruvius fencepost error: if you build a straight fence 30 meters long with posts spaced 3 meters apart, how many posts do you need? You may think that you need 10, but to make 10 sections, you need 11 posts.

I am super grateful for wonderful friends as one of them doubting that I will be able to find any of these errors as they are quite easy to check and rare in production, created my own broken counter! If you write a number to which this little program should count – it will start counting with 0 (intentional programmer’s error):
counter

I did not want to give up this easily, so I invested some time checking other sites.I was thinking of where any kind of counting would be done, and, ended up checking e-commerce sites: their searches and price filtering (searching for < instead of =<).

I went to Vero Moda’s Day Dresses category. I decided to check if price filters are working as they say: if there is a price filter “10-20” I expect that it would include both 10 and 20. So, I checked first 10-20 filter and filtered results by High to Low price:
until20
As you can see, there are no 20 pounds dresses. I may guess here that there is less than 20 filter (which user doesn’t know), not less or equal as you may assume. However, maybe site simply does not have dresses which are worth 20 pounds? So, I checked filter 20-30 and filtered prices from low to high to see if there are 20 pounds dresses:

30

And it turns out that there are dresses which are worth 20 pounds. This means that I found an off-by-one error:

In Vero Moda’s price range filter, upper bound is not included: it is < instead of =<.

This is definitely not a huge mistake, but may cost a lot: if user’s budget is up to 20 pounds after filtering to 10-20 price range she may not find what she wants, thus she may end up not buying anything. Maybe some of the dresses which were costing equally 20 dollars would have been most attractive to the user, but there was no chance to see them with the filter on.

30 Days of Testing is moving towards the end and I am so grateful that I need to google some of the definitions because I did encounter off-by-one errors before (especially with strict bounds), but never knew the exact name. Now I do and it feels great to have a term which describes a specific type of a problem!

Summarizing an issue in 130 (originally 89) characters – Day 28 of 30 Days of Testing

SUMMARISE AN ISSUE IN 140 CHARACTERS OR LESS

Most of testers have to do this every day: we don’t write tweets about bugs, but the title of it definitely has a character limit and should be as short as possible.

My issue summary is a real-life example I’ve encountered today. I wanted to buy train tickets in Lithuania. I went to the site for buying train tickets.

The very main page has a very basic UI for buying tickets: one way, round trip radio buttons; two selects for the cities you are traveling between, passengers number field and Search button.

I am not traveling alone, so I wanted to change passengers number to 2. This is where I encountered a problem that even if I changed it in opened selector – number of passengers did not change. So here is a short summary of this bug:

User cannot select more than 1 passenger buying an online ticket with Lithuanian Railways

Here you go. 89 characters summarizing the problem! And, well, I must include a screenshot to depict that there is no change in Passengers field after selecting more passengers:

traukinys

Update: my issue summary just expanded! And, issue turned out to be the UX issue. Prashant just pointed out that there actually is Save Changes button! I did not see it because my computer’s screen resolution is smaller. Looking at the same site with bigger resolution site looks like this:
Screen Shot 2016-07-28 at 9.43.17 AM
Save the changes actually does work and changes passenger number. So, second shot to my issue summary:

User with resolution height less than 666, cannot see “Save the changes” button which prevents them from changing passenger number

Screen Shot 2016-07-28 at 9.49.06 AM

Now the character count is 130, but still challenge completed. 😉

Say nice things about what you test – Day 27 of 30 Days of Testing

SAY SOMETHING NICE ABOUT THE THING YOU JUST TESTED

Usually testers are the ones who report the bad news. This is a professional behavior in a way: we need to spot mistakes and let the team know about it as soon as possible so they would get fixed. The positive feedback often is left unspoken because we are concentrated on finding the negatives.

Being the lone tester, I work very closely with people whose work I have to test. Be it a product manager or a developer – I ask them questions, we collaborate and clarify the requirements and implementation. This allows me to feel closer to the team and as well get happy when something reaches final implementation. Sometimes when my verification is done I express positivity about what I tested: usually it is rather a “well done!” comment in JIRA, but there are also cases when we discuss the new feature’s “superpower” together with the programmer.

In general, my long-term aspiration is to soothe the pain of bad news with acts of appreciation and interest, so I try to say nice things about what I tested. Nevertheless, today I tried to do that even more!

I talked about the new feature with the programmer who has been working on it for a few months now. I really do believe that it’s a great investment in the long-run and I have noticed an amazing improvement in quality of his work. It was great to test a stable and pretty version of the product with no surprises except from a few cosmetic UI issues. As the result of this conversation, mood was lifted for both sides and the programmer shared his own nice thoughts about the same feature.

The greatest part of saying nice things about what you tested is that the programmer will get appreciation and even may explain more about the internals of the feature which helps you to test better.

Positivity is a win-win situation: helps to build a strong team with members who respect each other, share not only their problems, but wins as well. 

 

 

My top 3 online spots for testing discussions – Day 25 of 30 Days of Testing

CONTRIBUTE TO A TESTING DISCUSSION

Some time ago I wouldn’t have guessed that there are so many forums and places to talk about testing. However, now I know a few and these are my 3 favorite online spots for testing discussions:

  1. uTest forums
    Recently I have become a more active uTester. It’s a great place to meet all kinds of testers: from beginners to advanced. Not only that it is a testing platform, but as well uTest has a strong community section and aims to be “twitter for testers“. There I can share knowledge, meet people who are interested in testing and are able to contribute to testing discussions.
  2. Software Testing Club
    I found Software Testing Club via Ministry of Testing. What I like a lot about it is that discussions are more “moderated” than in uTest. They are not as frequent, but at the same time more professional and it’s easier to find valuable content.
  3. Twitter/blogs
    This point is rather an obvious one – following testing professionals on Twitter you can read a lot of interesting testing discussions and be a part of it. Same goes for blogs.

Today I contributed to a testing discussion on uTest forums!

Getting to know more testers – Day 24 of 30 Days of Testing

CONNECT WITH A TESTER WHO YOU HAVEN’T PREVIOUSLY CONNECTED WITH

30 Days of Testing definitely introduced me to multiple testing community members whom I did not connect with before. It has been very rewarding to feel the sense of community!

Nevertheless, today I spent some time connecting to possible speakers for Budapest QA meetup. Sometimes it can be very tough to find new speakers, so a lot of research has to be put in it. So, I have looked at some nearby testing meetups and connected to some of the organizers/speakers from there.

A wonderful thing was that I got very positive replies and now we will try to keep in touch to make sure to arrange a talk when they are here.

If you are interested in speaking at Budapest’s QA meetup and tend to come here sometimes – let me know, we would like to get to know you.

600_442114348

How I helped the account manager to test better – Day 23 of 30 Days of Testing

HELP SOMEONE TEST BETTER

Quality of a product is a very important topic to anyone in the company, so ability to quickly check real-time status of major product’s KPIs is a great skill to have.

In my company, very often some of the checks are done by our account manager. Imagine a situation where a partner writes in with a problem with web-service which your company is delivering. Account manager is usually the first person to read this, check the problem and reply to the partner. In other scenarios, account manager may just need a quick check of certain partner service quality before making any kind of communication step with them. Have in mind that sometimes other colleagues are not able to help immediately, so account manager would clearly benefit from knowing how to execute some checks independently.

Our account manager is a great learner and has been very open to get to know more about the product, so we arranged a meeting to talk about my beloved monitoring tool – New Relic.

I have explained to him some basics of New Relic: where to find dashboards, how to see queries behind each dashboard, how to make your own queries. We created some queries together to check a few important questions and modified existing ones to get the grasp of how to build queries if you don’t know where to start.

Of course it will take some time for the account manager to get used to this new tool, but I’m sure that he got a good background now and will be able to check out some of important questions real-time.

It was very fun for me to share knowledge and we even found out together that one of device types for our web-service in the last 2 weeks was a car, specifying which car it was we learned a fun fact – our web service was used by Tesla car owners.

 

Ode to New Relic – Day 22 of 30 Days of Testing

SHARE YOUR FAVORITE TESTING TOOL

I must admit that I love using analytics and monitoring in my testing. This is why my favorite tool is New Relic! It’s a software service which monitors web and mobile applications in real-time.

You may wonder why I call it a testing tool: I believe that monitoring and analytics are a huge part of regression testing. If numbers are still correct (or better), it can be a very valuable KPI to measure the system change. And that is not the only benefit in testing that New Relic can give.

I am going to list 3 reasons why I love using New Relic Insights (that’s the part that I tend to use the most):

  1. You can collect statistical significance and evidence of reported bugs.
    In most of the cases, I can check real-time data and see how many users were affected by a certain issue. For example, if found issue happens for a specific set of items, I can check the percentage of all requests which were made on those items. The bug will definitely need to be fixed if the impact is high.
  2. You can find out your user demographics and devices/browsers they use.
    It is very important to know who is your audience. If most of your users are based in India, it is likely that they use different devices than the users in the USA. This can help you to decide which devices and browsers you should test on and which location settings are important. For example, the following screenshot displays what are the most popular desktop and mobile browsers among the users of the product I test:
    Screen Shot 2016-07-18 at 5.46.25 PM
  3. By monitoring the system, you can find the issues easily.
    You can create all kinds of monitoring dashboards. Our product is a service, so knowing that service is functioning correctly means a lot. If there is a drop in one of its functions – we have a problem. For this reason, I have created a dashboard for myself including all important KPIs to me. Every day I check to see if system is in tact, if not – I query for more specific examples and investigate what could be the reason. Nevertheless, after releases, I always doublecheck the dashboards for any possible regressions. It helps me to make sure that system continues working as expected real-time.

New Relic Insights has given me more confidence in bug reporting because I can add a real-life value and importance to them. Also, it helps me to do quick regression checks and investigations which I was not able to do this easily pre-New Relic.