Quality Assurance

Quality Assurance Testing. Is a management activity essentially that is focused on providing the best quality software to its customer base.  

QA Testing is focused on the quality testing of the software packages before release. QA Testing is referred to in the software development world as Quality Assurance.

QA is an activity to ensure that an organization is providing the best possible product or service to customers whether on premises or in the cloud. QA focuses on improving the processes to deliver Quality Products to the customer. An organization has to ensure, that processes are efficient and effective as per the quality standards defined for software products.

What is Quality?

Quality is expected and consistency is required..  

Quality is extremely challenging to clearly define since the expectations between customer and the software vendor is ever increasing.  Quality in the world of software development world is really  about meeting the needs and expectations of customers with respect to functionality, design, reliability, durability, & price of the product.

What is Assurance?

Assurance Assurance is a positive declaration on a cloud service or application which gives confidence to both the company and customer.

What is Quality Control?

Quality Control It is a Software Engineering process used to ensure quality in a product or a service is met as set by internal or external requirements. It does not deal with the processes used to create a product but rather it examines the quality of the “end products” and the final outcome.  The main purpose of quality control is to check whether the products meet the specifications and the requirements of the customer.  

What is Quality Assurance?

Quality Assurance It is a Software Engineering process used to ensure quality in a product or a service is met as set by internal or external requirements. It does not deal with the processes used to create a product but rather it examines the quality of the “end products” and the final outcome. Quality control is to check whether the products meet the specifications and requirements of the customer. If an issue or problem is identified, it needs to be fixed before delivery to the customer.

Quality Assurance

Quality assurance has a defined cycle called the PDCA cycle or what is also known as the Deming cycle. The phases of the PDCA cycle are as follows Plan, Do, Check and Act

Figure 1 Shows the four parts of the PDCA cycle.

Plan – Organization should plan and establish the process related objectives and determine the processes that are required to deliver a high-Quality end product.

Do – Development and testing of Processes and also “do” changes in the processes

Check – Monitoring of processes, modify the processes, and check whether it meets the predetermined objectives

Act – Implement actions that are necessary to achieve improvements in the processes

An organization must use Quality Assurance to ensure that the product is designed and implemented with correct procedures. This helps reduce problems and errors, in the final product.

Quality Assurance vs Quality Control  

Quality Assurance vs Quality Assurance is routinely confused. Quality assurance is to examine the processes and make changes to the processes which led to the end result of the software package. Quality control is to examine the software package and make changes to processes end results. Quality Control is more product focused and is reactive based on the end results. Quality Assurance is more process driven which in turn is a proactive process that aims to reduce defects or prevent defects.

Figure 2 compares the main differences between Quality Control and Quality Assurance.  

Quality Assurance Certifications are available as guidance on how to determine how to select a software provider but also could be used determining compliance around cloud providers. 

The most common standards around certification are

International Standards Organization (ISO) 9000

This standard was first established in 1987, and it is related to Quality Management Systems. This helps the organization ensure quality to their customers and other stakeholders. An organization who wishes to be certified as ISO 9000 is audited based on their functions, products, services and their processes.

Capability Maturity Model Integrated (CMMI)

Is a process improvement approach developed specially for software process improvement? It is based on the process maturity framework and used as a general aid in business processes in the Software Industry. This model is highly regarded and widely used in Software Development Organizations.

Test Maturity Model (TMM)

This model assesses the maturity of processes in a Testing Environment and has five levels as part of the assessment process.

Cloud Testing

Cloud Native Applications

Cloud Native Applications are nothing more than applications or services that have been written to run in the cloud.  Essentially, if your company writes an application to run queries in Google Cloud Platforms BigQuery service only then this application could be construed to be a “Cloud Native” application.

The Cloud Native Computing Foundation ( CNCF) defines “cloud-native” more specifically which means using open source software stack to be containerized, where each part of the app is packaged in its own container, dynamically orchestrated so each part is actively scheduled and managed to optimize resource utilization, and microservices-oriented to increase the overall agility and maintainability of applications.

When considering testing your application the main focused is to realize that the Cloud-native application development cycles include DevOps, Agile methodology, microservices, cloud platforms, containers and pipelines. 

Microservices

Microservices architecture (microservices) is a distinctive method of developing software systems that tries to focus on building single-function modules with well-defined interfaces and operations.

The trend has grown popular in recent years as Enterprises look to become more Agile and move towards a DevOps and continuous testing.

Figure 3 shows the architecture of a cloud microservices deployment.

Benefits of Microservices

The main benefits however, not exclusively to every organization are.

  • Simple to Deploy
  • Simple to Understand
  • Re-useable
  • Defect Isolation
  • Lower Risk

Microservices can help create scalable, testable software that can be delivered weekly, not yearly. 

Cloud Testing

When testing areas for cloud enabled applications, we can generally separate our testing into two main categories which are Functional testing and Benchmark testing

Benchmark Testing

Benchmark Testing is focused on how a software package performs in handling certain transaction volume efficiently. Ultimately, a benchmark test measures the time taken to process a certain number of transactions in a software package whether in the cloud or not.

Figure 4 shows the common areas that would be tested in a benchmark test.

Functional Testing is focused on how a software package involves testing of all the features and functions of the cloud application.

Figure 5 shows the common areas that would be tested in a Functional test.

Functional Testing in a cloud environment involves both traditional and new methods.

Sandboxing

 
Sandboxing is an IT security term referring to when a program is set aside from other programs in a separate environment so that if errors or security issues occur.  The main goal is to ensure those issues will not spread to other areas on the network or to the services.  

Sandboxing is utilized mainly in the software development world thru microservices and containers.  Sandboxing could also be utilized with appliances from IT security vendors as well.

Some common benefits of using a cloud sandbox are.

  • Eliminate infrastructure constraints on the business.
  • Avoid expensive application rewrites.
  • Reduce data center cost and complexity.
  • Enable global team collaboration with shared virtual infrastructure.
  • Slash provisioning time with a self-service model.
  • Reduce the time to replicate and resolve bugs.
  • Create pre-production environments to test the impact of production changes.
  • Allow IT operations teams to focus on and optimize the production environment.
  • Maintain policy management and control costs.

Load testing

Load testing may also be referenced as performance testing, stress testing or even scaled testing. Load testing simulates real-world workloads. The load test examines how the system behaves during normal and high loads and determines if a system, piece of software, or computing device can handle high loads given a high demand of end users.

Load Testing is applied when a software development project nears completion and is getting closer to deployment (production).

Benefits of load testing could include the discovery of bottlenecks before production, scalability, reduction of system downtime, improved customer satisfaction, and reduced downtime costs.

Regression testing is focused on validating existing software applications to make validate that a change or addition hasn’t broken any existing functionality in the software program. The main purpose of regression testing to catch bugs that may have been accidentally introduced into a new build or release candidate and to ensure that previously eradicated bugs continue to stay dead.

Benefits of regression testing is reduced application issues, reduced application support calls, better user experience and a better ROI

Integration Testing

Integration testing ensures that different modules interoperate efficiently and deliver the required functionality. This is done by performing regression test on the assembled modules. Integration testing is done by a different testing team generally by employing a black-box or grey-box techniques; unlike unit testing which is conducted by developers using white-box techniques.

Benefits of regression testing is reduced application issues, reduced application support calls, better user experience and a better ROI

Leave a Reply