Developing custom software applications can be daunting for clients. It's a significant investment of time, resources, and finances. At Savas Labs, we understand it can be an intimidating process. To make things less intimidating, we actively collaborate with our clients and educate them every step of the way.
When making the investment in custom software, we want to ensure that it is built to the highest quality standards. High coding standards are part of our DNA here at Savas. As such, the quality assurance process is one we value and take seriously. Through the course of this post, we’ll discuss what quality assurance is, our quality assurance process at Savas, and why it’s so important.
Quality assurance is the process of ensuring that standards are met and mistakes are mitigated throughout the development process so that the final product serves its intended purpose. The fundamental principle of quality assurance is that it permeates every aspect of the custom development process. It focuses on preventing mistakes and defining requirements by which the product is measured throughout the process.
The term quality control is often used interchangeably with quality assurance. While they share many similarities, the key distinction is that quality control is focused on identifying defects, while quality assurance is focused on preventing defects. Successful quality assurance runs in parallel to the custom development process so that quality standards and requirements remain at the forefront every step of the way.
The quality assurance process begins before we even start writing a single line of code. Regardless of the project, Savas employs high coding standards to ensure that every piece of code we write exceeds well-established best practices. These coding standards are validated through a process of code reviews and pull requests throughout the development cycle in which a second developer reviews all code and confirms the functionality of any new code changes.
In addition to enforcing our coding standards, we start by ensuring that we have clearly defined requirements for every project. These include both functional and non-functional requirements. For example, if you were developing a new social media platform, a functional requirement could be that users can log in to their profile and update their profile picture.
Non-functional requirements specify the criteria or parameters by which functions are achieved. A non-functional requirement might be that you want page load speed to be less than a second. It is vital that these requirements be clearly defined so that we can deliver on the expected results.
Once the requirements are defined, we move into building a plan for how we are going to test and ensure that the stated requirements are met. This includes determining the scope of what we’ll be testing, the types of tests we will execute, and a resourcing plan for executing the necessary testing. Documenting a testing plan ensures that nothing is overlooked and no corners are cut in delivering a quality product.
After the testing plan has been created, we move into writing and designing the test cases for all functional testing requirements. These functional test cases are a step-by-step workflow of how the tester will determine whether or not the software is functioning as expected.
Using our new social media platform as an example, our test case for our functional requirement of updating our profile picture guides the tester through the process of completing this action. If the tester can upload a new photo following the test case instructions successfully, then the test would be considered successful.
As features and functionality are completed and deemed ready for testing, we execute the functional test cases we’ve produced. As test cases are executed, any uncovered bugs or issues are documented as individual tickets and assigned to a developer to be addressed. Bug tickets are managed based on priority and then re-tested to ensure that they have been adequately resolved.
In addition to our functional test cases, we also execute a visual design quality assurance to ensure that the developed product is consistent with how it was originally designed. Browser compatibility testing, device testing, and accessibility are also carried out at this time. These testing protocols ensure that the product functions as expected and adheres to accessibility standards as outlined in the project requirements.
Quality assurance requires a significant investment in time and resources, but it is arguably the most important part of the custom development process. Investing in this important process is part of what separates Savas from the competition. Sure you might find a cheaper option out there, but if it comes at the expense of quality assurance those savings are often negated. In the absence of quality assurance, applications often require more iterations to fine-tune functionality and increased likelihood of bugs, which ultimately take more time and money to address than the savings that come from cutting corners on quality assurance in the first place.
Strong quality assurance protocols ensure that we are developing the highest quality product. Investing in quality assurance ultimately saves time and money in the long run as issues can be addressed sooner and more efficiently than if they are left unresolved until development is complete.
In addition to the time and money savings, quality assurance helps to ensure that we are producing the highest quality product. Through our commitment to quality, we are able to maximize the value we provide our clients. When we deliver a high-quality product, in an efficient manner, at an attractive price, we end up with satisfied clients and strong partnerships for the future.