Software Quality Assurance is a systematic process to check whether a software has been developed according to predetermined requirements. This process can be carried out by a QA Tester or by a QA Engineer.
QA Tester has the main task of carrying out tests on devices or emulators, creating test flows, and reporting test results.
While the QA Engineer is usually tasked with creating automated test programs, creating test reports, providing input on the applications being tested, and communicating with interested parties, such as UI/UX developers, back end or product managers (PM).
For the QA process, the following skills are needed:
- Testing Mindset
- Functional Analysis & Testing
- Process Improvements
- Defect Management
- Security Testing
- Performance Testing
- Automation
- User Acceptance Testing (UAT)
A Closer Look of Software Quality Assurance
Quality Assurance is a planned system of all necessary actions to ensure that an item or product conforms to predetermined technical requirements.
An activity designed to evaluate the process by which products are developed to meet quality requirements. Software Quality Assurance is a series of activities to assess the adequacy of the software process.
It aims to provide data that establishes confidence that the software process is suitable to produce software with quality suitable for the intended purpose.
Software Testing Types
Testing of the software itself is divided into two types:
1. Manual Testing
This test is usually carried out to check application flow, for defects (design or programming), test on different operating systems, and test migration from previous versions of the application.
2. Automated Testing
These tests consist of regression testing, automated tests conducted at night, automated reporting (via email or collaboration tools such as Slack), automated builds, and automated publishing.
Automated testing can be done on various systems: Jenkins Continuous Integration (CI), Travis CI, Circle CI, and others.
If an error occurs in testing, it is usually due to a problem on the backend side, on the Continuous Integration side (a library update, for example) or an improvement in the application.
Elements of Software Quality Assurance
Software quality assurance covers various issues and activities that focus on managing software quality.
1. Standards
Software standards play a vital role in software quality management. As part of this QA process, tools and methods to support this standard may also be selected.
SQA’s job is to ensure that the standards that have been implemented are followed and that all work products comply with them.
2. Reviews and audits (Reviews and audits)
Technical reviews are quality control activities performed by software engineers for software engineers. Reviewers should check the consistency and completeness of the reviewed documents or code and ensure that quality standards have been followed.
However, reviews not only check compliance with standards but are also used to help find problems and omissions in software or project documentation.
An audit is a review conducted by SQA personnel to ensure quality guidelines are followed for software engineering work.
3. Testing (Testing)
Software testing is a quality control function with one main goal: finding errors. SQA’s job is to ensure that tests are appropriately planned and performed efficiently so that they have the highest likelihood of achieving their primary objectives.
4. Error/defect collection and analysis
SQA collects and analyzes error and defect data to better understand how errors were introduced and what software engineering activities are best suited to eliminate them.
5. Change management
Change is one of the most disruptive aspects of any software project. Change can lead to clarity if appropriately managed, and clarity almost always leads to poor quality. SQA ensures that good change management practices are established.
6. Education
Every software organization wants to improve software engineering practices. The main contributors to improvement are the education of software engineers, their managers, and other stakeholders.
The SQA organization leads in software process improvement and is a major supporter and sponsor of educational programs.
7. Vendor management
The job of the SQA organization is to ensure that the resulting software is of high quality. SQA suggests specific quality practices that vendors should follow (where applicable) and incorporating quality mandates as part of any contracts with external vendors.
8. Security management
With increasing cybercrime and new government regulations on privacy. Every software organization must institute policies that protect data at all levels, establish firewall protection for WebApps, and ensure that software has not been tampered with internally. SQA ensures that the right processes and technologies are used to achieve secure software security.
9. Safety (Security)
SQA may be responsible for assessing the impact of software failures to initiate the steps necessary to mitigate the risk.
10. Risk management
While risk analysis and mitigation are a concern of software engineers. The SQA organization ensures that risk management activities are carried out correctly, and that risk-related contingency plans are in place.
SQA Goals, Attributes, and Metrics
The SQA actions described in the previous section were undertaken to achieve a set of pragmatic objectives:
1. Quality requirements
SQA must ensure that the software team reviews the requirements model to achieve high quality.
2. Quality of design
The software team must assess every element of the design model to ensure that the model exhibits high quality and that the design meets the requirements. SQA looks for design attributes that are indicators of quality.
3. Code quality
Source code and related work products (e.g., other descriptive information) must comply with local coding standards and exhibit characteristics that will facilitate software maintenance. SQA must isolate the attributes that allow a good quality code analysis.
4. Effectiveness of quality control
SQA analyzes the allocation of resources for reviews and tests to assess whether or not resources are being allocated most effectively.
What is the Jobdesk of Software Quality Assurance
The Jobdesk of Software Quality Assurance will be explained in the section below.
1. Perform Software Product Requirements Analysis
Software product requirements analysis is carried out by analyzing the product requirements documents prepared by the Project Manager and Product Owner and discussing the requirements made.
This analysis is carried out with the aim that SQA knows the requirements that will be carried out and those that will be tested in software product testing.
2. Testing Software Products
After the requirements analysis is carried out, the analysis results are entered into a test script. It will be in the form of test cases and scenarios carried out in software product testing.
In software product testing, two methods are carried out. The first is using the manual method, namely by testing each feature one by one contained in the software product.
The second method is an automation method, namely testing software products automatically using software such as Katalon Studio and Postman.
3. Performing Analysis on Testing Results
The results of the software product testing that has been carried out are analyzed for status. If the status is “Failed” or “Failed”, then an analysis is carried out again.
The errors are categorized as “Bug” or “Error” along with the priority of these errors with the priority category “High”, “Medium”, or “Low”.
4. Documenting Testing Results that Have Been Analyzed
Documenting the results of testing that has been analyzed is the final stage of the Software Quality Assurance job desk which is carried out by documenting test cases of software product testing that has been tested and analyzed, which then results from the documentation submitted to the Lead QA, who then from Lead QA submits the results of testing to The Project Manager, who is then from the Project Manager, submits the results of testing to the developer for review and correction of errors in software products.