Software Quality Assurance is a
buzzword for quite some time but with the agile transformation hits the ground,
there were some questions like ‘will it die out sooner or do we need a separate
gang to assure quality?, etc’ But, still, it stands tall with other areas in the
software field with more interesting methodologies and practices. Anyway, as
QAs, we kept questioned by various parties about the real requirement of a QA
or in other words, what we are actually doing other than just testing
functionalities in the application and adding bugs.
I can remember a few years back,
one of my colleague developers also questioned us about a designation that we
have added to our QA track. He blamed that we took an engineering track which
belongs to them.
Whatever the things said and done in the
past, the future of the QA depends on the change that we are going to be
incorporated and how effective it is. In this article, I like to emphasize one factor which we can gain the boost and differentiation. That is how QAs can
be UX Engineers.
In our projects, we are
normally working with product owners and stakeholders directly to get the
requirements. So this is a better move rather than requirements are coming from
a BA or a person who is dealing with the customers. Hence, this is a very good
chance to get leverage over traditional mechanisms.
I need to start like this,
according to my experience and knowledge, User Experience (UX) has two areas
which can depict as follows:
According to the diagram, the first
area is basically related to UI/UX engineers on the project. They need to make
sure that the website should be designed according to the user's expectations.
Say, for an example, if we are creating a website for Scandinavian countries,
they have a different color set and unique thinking patterns which we need to
read.
Other than that, as the second
area depicted in the diagram, QAs have a big part in order to ensure the
functional and non-functional user experience. Why are functional and
non-functional areas related to user experience? What is the relationship? I
would say, even though it is not highlighted, QA is all about ensuring
functional and non-functional user expectations and improving the experience. Now
let’s have a look at how exactly this happens.
Functional User Experience:
In an application, the first priority
should go to the functionality. I will take ‘Login to the system’ as my user
story in all the cases. Let's say login functionality is not working properly, it
is directed to the subpage instead of the home page. You can see, obviously, the
user experience ruined. User is not satisfied and there will be a lot of customer
complaints. To fix this issue in the application, we need to check the root cause
and the quality assurance process to understand why it is not being tested. Have we covered it or not in the test case suite. If it is covered then why it is
not being executed, etc. So the point is, whatever we call, functionality is
directly affected to UX.
Nonfunctional User Experience:
Even though the first priority should
go to the functional areas, a lot of big problems are coming from the nonfunctional
part of the application. Say for an example, in my project, due to a
performance issue, we had to spend 2 weeks to find the problem. Fortunately, we
were able to but at a cost. Some of the experts say, nonfunctional requirements
or problems are not clear enough and it’s like a hidden part of the iceberg. Hence
user experience in nonfunctional areas is crucial and we need to spend more
time on it.
Security:
I will take the same example. Let's say due to the weak password validation mechanism, an unauthorized user entered into
the system and deleted some valuable info. Now some of the real users cannot
access the site as their login data is missing in the DB. So this triggers a
big impact on the user experience (UX) and is really bad for the reputation of the
application and the brand. Sometimes, an entire business can be collapsed within a few days due to such incidents. Hence, all the QA engineers need to concentrate
on the Security aspect and need to learn how to apply these tests in the
testing process.
Performance:
In the peak time of the day, if
some of the regular customers cannot log in to the site due to a performance issue,
it will lead to a big loss in the reputation and the growth of the business. This
is an often situation in the Sri Lankan GOV web sites, since it is free of
charge we are not bothered much. But, if it is a service for a certain cost,
then we have to face a lot of problems from the users. Therefore, whether it is
Performance Engineering or whatever, it is impacting the user experience (UX). Hence,
we should look at these nonfunctional areas from the beginning of the
production cycle than wait till the end.
I am not going to describe the reliability
and maintainability but those are also big pieces of the UX puzzle. Therefore when you get the requirements from the customers or end-users, we need to check
the SLAs (Service Level Agreements), Security background (Who are the user
group), etc of the application. I encourage you to have a non-functional requirement gathering document that we can send to our customers or end-users to
fill with their requirements. If they are not technical enough to fill that,
better we fill it with the past experience and send for the validation.
Following are a few sample questions for application performance data gathering:
Finally, What I have to tell you
is that even we have divided into several areas such as Quality Assurance,
Security Engineering, Performance Engineering, etc., User Experience (UX) is
the umbrella there at the top. Hence, all the QA Engineers should think
from the user perspective first of all before going to the technical separation
as I mention above. In other words, we should be UX engineers than QA
engineers.