Welcome to the latest tech.mn original series where industry experts answer your burning technology and startup questions – FAQ Friday. We’ve gathered top Minnesota authorities on topics from software development to accounting to talent acquisition and everything in between. Check in each week, and submit your questions here.
This week’s FAQ Friday is sponsored by Coherent Solutions. Coherent Solutions is a software product development and consulting company that solves customer business problems by bringing together global expertise, innovation, and creativity. They help companies tap into the technology expertise and operational efficiencies made possible by their global delivery model.
Meet Our FAQ Expert
Max Belov has been with Coherent Solutions since 1998 and became CTO in 2001. He is an accomplished architect and an expert in distributed systems design and implementation. He’s responsible for guiding the strategic direction of the company’s technology services, which include custom software development, data services, DevOps & cloud, quality assurance, and Salesforce.
Max also heads innovation initiatives within Coherent’s R&D lab to develop emerging technology solutions. These initiatives provide customers with top notch technology solutions IoT, blockchain, and AI, among others. Find out more about these solutions and view client videos on the Coherent Solutions YouTube channel.
Max holds a master’s degree in Theoretical Computer Science from Moscow State University. When he isn’t working, he enjoys spending time with his family, on a race track, and playing competitive team handball.
This Week’s FAQ Topic – Quality Assurance
What are the best ways to add QA to your existing workflow?
QA is a set of practices established with a goal of preventing defects in the end product and should be an integral part of your overall systems development life cycle (SDLC). Regardless of which software development methodology a team uses, technology stack it develops on, or how mature overall SDLC is, QA cannot be an afterthought. The costs of identifying and fixing a defect grow exponentially between beginning of the SDLC, when you are writing requirements and creating software architecture, and when you have a bug in a product that is in a customer’s hands.
It is critical to have quality assurance be a part of your development process starting with defining clear acceptance criteria when writing requirements, performing design reviews to ensure you are designing for success, and performing quality control on the ongoing basis as you develop the solution without postponing it until the release date when the rework costs may become significant.
What is test-driven development and what are the best ways to implement it?
Test-driven development (TDD) is a software development methodology that puts quality first in your software development lifecycle. In a traditional approach, a developer will write code to meet the requirement specifications and then will pass it to a quality engineer to create test cases to verify that code meets the requirements. With a test-driven approach, requirements are translated into — typically automated — test cases first, and then code is written to make test cases pass. So, instead of being a sequential activity, you are leading with tests that fail until you write code that meets the requirements.
The advantages of the TDD, especially in agile environment, is that it provides fast feedback that helps you identify problems early on. Your requirements are essentially code of your tests which makes them unambiguous. It also helps developers write better code that follows best practices, increasing productivity and quality.
Are Quality Assurance, Quality Control, and testing the same thing?
All these items are closely related but they are not the same thing.
The best way to describe it is that testing is one of the ways to perform Quality Control. Quality Control is a component of your Quality Assurance practices. Quality Assurance is a process and set of practices that are focused on preventing defects in the end product. It is not enough to identify bugs; you need to work to minimize the chance of bugs being introduced in the first place. If bugs are identified, each one gets fixed properly as to not be reintroduced. Quality Control focus is on identifying defects in the end product. Defects are identified in a variety of ways and product testing against functional requirements specifications is one approach. Quality Control may also involve technical design reviews and code inspections. Testing is thus a subset of Quality Control too. Again, all elements are closely related but not the same approach throughout.
To find a breakdown of the full quality assurance life cycle, answers on how client requirements can impact QA, and tips to improve on QA team collaboration, visit the Coherent Solutions site.
Still have questions? Ask Max and the Coherent Solutions team questions on quality assurance and more on Twitter at @CoherentTweets.