Tanzania Online Payment Service Providers and Gateways Guide Book Read More
The Fundamentals of a Great Software Solution: Software Quality Assurance and Control

The Fundamentals of a Great Software Solution: Software Quality Assurance and Control

By Tonny  |  Aug 08, 2023

How often do you find yourself opening your mobile apps to get updates 

or just heading over to a website to look for specific info or a service.


Without any doubt, It happens many times, over and over again.


And what makes you choose one app or website over another?


One way to answer this would be, the value it offers you and the experience you get.

This is the reason why Software Quality Assurance and control exist in software  development.


At the core, software quality assurance and control ensure a software product has value to the end user and provides a good experience.


In this digital era, software is no different from any regular product,

Low quality simply is not acceptable! 


People expect nothing less than top-notch performance and a seamless experience. 


Hello, I am Tony, the Software Quality Assurance & Control Representative from iPF Softwares.My colleagues call me TBS, which stands for Tanzania Bureau of Standards.


In this article, I will:-


  • Share some wonderful insights on software quality assurance and best practices.
  • Define what software quality truly means in software development.. 
  • Clear the misconceptions between Quality Assurance and Quality Control.
  • Explain how we have successfully been able to set proper Quality Assurance and Control processes at iPF Softwares  and tools we use
  • Case Study and examples on how we have executed Software Quality Assurance and Control in featured projects.
Software Quality Assurance | Key ConceptsSoftware Quality Assurance | Key Concepts

What is Quality assurance?

Quality assurance, often shortened to QA, is a step-by-step process used in software development to make sure that all software engineering processes, methodologies, activities, and products meet specified standards and requirements. 


Basically, it's all about guaranteeing top-notch software quality.


To achieve this, the QA team  carries out a series of planned activities, techniques, and methods to carefully check and verify that everything in the software works as it should.

Software Quality Assurance PurposeSoftware Quality Assurance Purpose

What defines software quality?

Now that we understand quality assurance, let’s explore what actual software quality means.


When it comes to software, just like any other product,

It's the end users who get the final say on its quality. 


The development and quality assurance team can only rely on lessons learned over the years.


These lessons have led to the creation of methods and principles to assess the software's quality. 

However,it's still very important to involve the end users in the whole process.

They're the ones who can tell you if it's really up to the mark or not.

3 Aspects Of Software Quality3 Aspects Of Software Quality

Understanding 3 Aspects Of Software Quality

Software quality is not an easy question to answer because the concept means different things to different people. 


When we assess quality, we are basically figuring out how valuable something is by comparing it to something we believe that is more valuable.


But measuring value requires answering another question.

Value to whom?


In order to gain insights,

We must first pay attention to three groups of people who really are interested in the software's quality.


The end-users, project sponsors and the development team, 

What each group cares the most, is not the same


In order to understand these differences we have to take a closer look at what software quality really means by grouping the various components of this idea into three broad aspects

Functional quality

Functional quality means that the software correctly performs the tasks it's meant to do for its users. 

This aspect of quality includes lots of different things among the most important of these are:


Meeting the specified requirements 

Since requirements commonly change during the development process this requires the team to understand and implement the correct requirements throughout not just those initially defined.


Less defective

Functional quality also means creating software that has few defects, however achieving zero defects is too much to ask for and achieve, 

End-users are rarely happy with a product they perceive as buggy. 


Good performance

Good enough performance is also a component of functional quality 

From a user's point of view there is no such thing as a “good slow application”


Ease of learning and ease of use

Functional quality also includes ease of learning and ease of use to users.


Effective UI/UX

Effective user interface and a well built user workflow are important for the aesthetics of the interface.

Structural quality

The second aspect is structural quality which is performed at the code level.

This can be hard to test for, although there are tools that are used to assist the testing process.


This aspect includes things like:- 


Code testability, checking how organized the code is in a way that makes testing easier and 


Code maintainability, how easy is it to add new code or change existing code without introducing bugs.


Code understandability,  Is the code readable?Is it more complex than it needs to be?


These things have a big impact on how quickly new developers can start working with a code base.


Structural quality also includes 


Code efficiency, writing efficient code can be really important in some situations.


Code security, does the software allow common attacks like buffer overruns or SQL injection?

Process quality

This is a third aspect of software quality.

Process quality greatly affects the value seen by end users, the development teams and the stakeholder.


So it affects all the three groups.


The most obvious attributes of process quality includes the delivery dates and meeting

budgets. 


The process quality also includes having a repeatable development process that reliably delivers quality software. 


If a process has only the first two attributes, that it delivers software on time and on budget, 


But stresses the development team so much then, the process quality has issues.

Software quality tradeoffs

There are lots of connections among these 3 aspects of software quality 


For instance, improving process quality with adopting agile methods can increase the odds of getting the project's requirements right which improves functional quality. 


However, there are trade-offs as well where improving quality in one area can lower the rate in another.


An organization might speed up a project's development process to beat a deadline, For example improving process quality but then find that the number of bugs in the software has gone up which lowers functional quality. 


Something to note is that each project has to weigh the interests of all three groups and all three aspects of quality against each other, different projects make different trade-offs,


And also everyone involved in a software project cares most about the aspects of quality that most impacts them.


End-Users

End-users care primarily about functional quality, since that's what they see and experience,they  also care about some attributes of process quality like the delivery date of the final product but

They commonly don't care at all about structural quality because they can’t really experience it.


Development team

The product development team certainly cares about structural quality since they are the ones who will be affected by the challenges it causes, they also care about process quality partly because it provides many of the metrics by which the team is measured.


Project sponsors care about everything, functional quality, structural quality and process quality,


If you happen to be a software sponsor or fundraiser, always consider that embracing weaknesses in any aspect is not a wise approach for a successful software product. 


In the end, you are striving to create business value and the best way to do this is by paying attention to addressing the weaknesses. 


Hence paying attention to these three distinct aspects is extremely important.

Software Quality Assurance Vs Software Quality ControlSoftware Quality Assurance Vs Software Quality Control

Quality Control

You are probably wondering after all this, why do we even need quality control. 


Quality control (QC ) is the process that ensures or verifies the product does what it was intended to do.


It assesses the quality of the "end products" and the ultimate output rather than the procedures utilized to make a product.


Quality Control (QC ) is focused on locating flaws in the developed solution. 

QC ensures that the project's approaches, techniques, methods, and processes are implemented correctly.

 

QC activities ensure that the project deliverables fulfill the established quality requirements by monitoring and verifying them.



Tools we use for Software Quality Control 

Well, the main objective of the Software Quality Control processes is to​ ensure that the product satisfies performance and usability requirements. 


While these standards are established throughout the software development process, quality control testing frequently helps to improve them. 


Below are a few tools we use for quality control of software solutions developed at iPF Softwares.


  1. Bugsnag: We use bugsnag to track application stability so that our team can make data-driven choices about whether to add new features or resolve bugs.
  2. Firebase: ​​ We leverage Google's Firebase Crashlytics to prioritize and solve your most common crashes on iOS and Android apps based on the impact on actual users.
  3. Google’s Lighthouse: We use Google Lighthouse to improve the performance, quality, and accuracy of our partners' online apps and websites.
  4. Circle CI: We use CircleCI for continuous integration and deployment to automate deployment and ensure that we do not push breaking changes to the live environment by identifying and finding faults more rapidly.

And many others.

One of the numerous software testing sessions held at iPF Softwares.One of the numerous software testing sessions held at iPF Softwares.

Software Quality Assurance Process And Control at iPF Softwares

At iPF Softwares, we've developed our software quality assurance through years of testing and experience.Our carefully crafted procedures have yielded amazing results for all our software products released to the market.


And now, we proudly share them with the world to inspire quality into software products built in Africa.


Review documentation and analysis

At iPF Softwares, right from the start, the quality assurance team is involved in the analysis and definition of software requirements, both functional and non-functional. 


During this stage, we have an opportunity to share requirements that are consistent, comprehensive, traceable, and clearly marked. 


This process helps the QA team to design test cases specifically tailored to the product or feature to be tested.


Preparation of test plan against requirements

The data gathered during the requirements analysis phase is utilized to plan all of the tests that are required.

The software testing strategy, the scope of testing, and deadlines are all part of the test plan.


It also specifies the types and degrees of testing that must be performed, as well as the procedures and tools for tracking issues, and assigns resources and duties to individual testers.


Preparation of test cases

At this phase, we apply our understanding of the features being developed to construct the test cases we have prepared.


A test cases checklist describes the preconditions, expected outcomes, and postconditions of a specified test scenario in order to ensure that a feature meets the established acceptance criteria.



Software Test Execution & Defect Reporting 

As the development starts, the QA team keeps a watch and it never ends until the product is shipped. 


And we believe testing is the responsibility of every expert involved in the software development life cycle.


This includes everyone on the design team, engineering team, QA team, and our clients, who (together with a group of handpicked beta testers) are often early users of the product and our first line of quality assurance outside of iPF Softwares.



At the design level, once our UI / UX design team has completed product or feature design, 


We conduct a pre-usability test where we put ourselves in the point of view of the user and test the usability of the design based on the provided visuals(and sometimes interactive prototypes)  to see if the product is simple to use and behaves in the manner specified by the acceptance criteria.


Our engineers do their part by testing the features as they build them as well as writing automated tests. 


In a nutshell, test automation is a software testing method that uses automation technologies and computing resources rather than human testers to perform tests.


Our engineering team creates the automated tests and then our DevOps team configures deployment pipelines that ensure that only features that have passed automated tests can be deployed and reach end-users.


Manual testing as the name implies is a test procedure in which we manually evaluate a software product in order to find defects.


To accomplish this, the Quality Assurance team follows a well-defined test plan that outlines a series of distinct test scenarios. 


QA at iPF Softwares is  so efficient  and so much fun since we developed and documented the testing strategy.

Software Quality Assurance Case Study

Recently we had an exciting opportunity to perform technical assessments for 18 fintech startups. 


During this process, we thoroughly evaluated the software solutions offered by these startups to ensure they meet the highest standards of quality, security, and performance.


Additionally, we had the privilege of conducting a specialized technical bootcamp, where we focused on upskilling the founders and developers of these startups. 


By sharing our expertise and best practices, we aimed to empower them with the necessary knowledge and tools to build high quality software applications.


We had an opportunity to put together every activity, takeaways and insights for every tech startup out there into one strong case study. Read it to get these eye opening insights.

Assessing The Quality Of Fin-Tech Solutions: Insights From The Pesa Tech Accelerator Program


Software Quality Assurance And Control With Agile Methodology 

In agile software development, continuous delivery is the most effective approach that we know of for creating software.


It's fast, efficient, provides great feedback on progress, and enables development of amazing products.


Another way to describe agile software development is that we work so that our software is always in a releasable state.


This however raises some challenges, especially from how everyone works, 

including the role of Quality Assurance.


The product owner should focus on releasing changes little by little, instead of all at once with a large documentation.


Developers need to prepare their work and software in a way that allows them to release it anytime, even while still working on a feature.


The Quality Assurance team has to test for its “releasability”.


Testing for releasability certainly involves two kinds of check


  • Does the software do what we meant it to do?
  • Does it still do what it used to do before this changes?


And the biggest role of  Quality Assurance is to find the answers to these questions once the development of new features or bug fixes is finished.


Keep in mind, Quality Assurance focuses on spotting mistakes as soon as possible. They achieve this by identifying them at the very moment when we make changes.


Just like how 

Edward Deming said “ You can't inspect quality into a system, you build it into the system ”.



One important role for Quality Assurance professionals is to act as guide experts on thinking about quality and testing,


Not after the project is finished but rather before it begins.


Quality assurance people work with developers to understand new features before they start working on them.


And evaluating new features while they are being created,this way the team can spot mistakes as they happen rather than days, weeks or even months later.


This is how quality assurance is carried out in Agile software development.

Read more on agile methodology here


Conclusion

As a software stakeholder, you should know that Software Quality Assurance And Control are like a strong foundation for successful software.


Here are some key things to remember:


Development teams are like talented architects who need to create clean, easy-to-maintain code, follow standards, and build software that works well and looks nice.


Project sponsors should see Software Quality Assurance And Control as an investment in the long-term success of the software, not just a phase.


And most importantly in this digital age, software end users want software that works smoothly and gives them a great experience.


Understanding all this, iPF Softwares is here to help you improve your software quality. 

We can test your software and give suggestions to make it even better, just like we did at

 Pesa Tech Bootcamp. 


Contact us today and let's work together for outstanding software quality.



SHARE POST:

Continue reading other blogs

Premium Insights into your inbox

Subscribe to our newsletter for fresh, premium content from industry experts.