Quality assurance (QA) is a very significant branch of the entire Software Development Life Cycle(SDLC). It is an integral and critical phase of any software development project. This process not only meets requirements but also ensures reliable and stable software to make sure that any agreed-upon standards and procedures are followed.
The purpose of this page is to describe for our clients how the Software Quality Assurance (SQA) program in Nova is structured and how we ensure that the process is followed by every project team.
Agile Software Development and incremental development,
Build Quality In and make sure task is really done.
All developers obey to the company‟s standards.
Teams in Nova adopted a lot of best practices to improve quality.
Management in Nova will also monitor and support the teams.
One of the essential components of Nova's QA process is the participation of standardized workflow, in which we have integrated our quality strategies and methods.Here is a high-level flowchart abstracted from the document.
This flow ensures no necessary steps will be skipped by developers, thus many potential issues can be avoided. And as you can tell from the figure above, in this flow many checking will be executed at the first moment on potential outputs, this will further ensure that issues will be found and fixed in the first place.
Unit tests are codes written to validate the correctness of development units (such as functions and classes). They form a safety net to prevent codes from unintended changes. Thus once something goes wrong, unit tests can help the programmer find and fix it very quickly, and it also saves many testing efforts. In Nova, each project will implement unit testing once they get clients‟ approval.
Test Driven Development requests developers to write tests before implementing functions. This way will force developers thinking from the users‟ point of view, and making a more thoughtful design before coding. As the infamous over-design issue is avoided by TDD, it will keep the codes‟ complexity at a minimal level, so many wastes can be saved. Nova teams will adopt this practice if the client understands the cost and benefit of TDD.
Code Review is a proven practice which can improve the codes‟ quality a lot. By reviewing the codes, many potential issues will be spotted, deviation of standards will get corrected, and most importantly, experience will be shared between developers, all of these will contribute to the overall quality of the software. Every Nova team is practicing Code Review.
Refactoring is a disciplined way to clean up code and improve design. It can keep codes tidy so that minimizes the chances of introducing bugs. By refactoring, the codes quality will be improved a lot and the product‟s lifecycle will be extended. All projects in Nova are requested to refactor codes when new changes are made, and refactor is also a part of Nova‟s development workflow.
Daily Build is the practice of doing software builds on a daily basis. It can minimize integration risk and avoid many time-consuming bugs which would appear in batch integration. Daily Build assures that developers are sync with each other so that any defects caused by misunderstanding and lack of communication can be easily addressed and quickly fixed. All the projects in Nova are requested to check in codes every day and build them.
Good quality is a result of team work, management play a very important role in QA. Company's support is very critical for successful quality assurance.
Training conducted by the company can make sure that the employees have a good understanding of the quality assurance policies, standards, practices etc. Training will also remove some obstacles encountered by the team when adopting best practices. And by sharing experience across different teams, training will help other teams avoid similar mistakes. Besides, technical training will increase the programmers‟ skills which will result in less errors and better quality.
The inspection team is an in-house management team to make sure the company policies, standards, workflows, required practices, management regulations are well executed by Nova teams. It is consisted of the most experienced managers and technical experts in our company. The inspection team carries out an inspection every two weeks by randomly select some team in Nova. If your team is selected, an inspector will come to work with the team, find out what they are doing right, what they are doing wrong, and then work out the improvement points and solutions with the team. The team has to adjust its‟ behavior in limited time period when the inspector will come back to recheck. By making sure the standards are well executed by Nova teams, Inspection Team is the QA methodology facilitator in Nova.
Process improvement is another important support to QA offered by Nova, it means the company will continuously improve the processes, standards, practices and so on. By gathering feedback from teams, summarize the experience and learning industry standards, Nova will continuously improve the existing QA methodology to further assure our quality.