QA ENGINEER ROADMAP (Part 1)- Foundation Level

Hümeyra Köseoğlu
10 min readJan 14, 2024

--

BASIC OF SOFTWARE TESTING:

QUALITY ASSURANCE, TESTER MINDSET, TESTING APPROACHES, TESTING PRINCIPLES

In this series, we will focus on the concepts of QA and QC. The concept of software testing falls under QC because it focuses on the product or application tested. We actually test the product to check the quality. Additionally, we manage our tests according to planned QA processes. That is, while QA includes QC, QC includes testing. Therefore, let’s first learn what QA is, accompanied by a road map.

· QA is a technique for managing quality. QC is a technique for verifying quality.

· Quality assurance covers the concept of quality control. QA is the planning of a process. QC is the execution of this planned process.

· In a team, while all team members are responsible for QA, only testers are responsible for QC. In other words; QA is responsible for the Software Development Life Cycle (SDLC) while QC is responsible for the Software Testing Life Cycle (STLC).

When we consider the concept of software testing, testing falls under QC because it focuses on the product or application. We actually test the product to check the quality. Additionally, we manage our tests according to planned QA processes. That is, while QA includes QC, QC includes testing.

What is Quality?

Quality is extremely hard to define, and it is simply stated: “Fit for use or purpose.” It is all about meeting the needs and expectations of customers concerning the functionality, design, reliability, durability, & price of the product.

What is Assurance?

Assurance is nothing but a positive declaration of a product or service, which gives confidence. It is certain of a product or a service which it will work well. It provides a guarantee that the product will work without any problems as per the expectations or requirements.

Quality Assurance in Software Testing

Quality Assurance in Software Testing is defined as a procedure to ensure the quality of software products or services provided to the customers by an organization. Quality assurance focuses on improving the software development process and making it efficient and effective per the quality standards defined for software products. Quality Assurance is popularly known as QA Testing.

Best practices for Quality Assurance:

  • Create a Robust Testing Environment
  • Select release criteria carefully
  • Apply automated testing to high-risk areas to save money. It helps to fasten the entire process.
  • Allocate Time Appropriately for each process
  • It is important to prioritize bugs fixes based on software usage
  • Form dedicated security and performance testing team
  • Simulate customer accounts similar to a production environment

Types Of QA Testing

We need to focus on QA testing types in SDLC more and explain what types exist and how they are used. Only then can the QA role be understood. The software testing process is usually classified into two categories: functional testing and non-functional testing.

Functional testing implies the testing of functional software aspects. Functional testing types show the internal behavior of the software and how it may interact with other systems.

Functional testing includes the following types:

  • Unit testing
  • Integration testing
  • End-to-end testing
  • System testing
  • Smoke testing
  • Sanity testing
  • Acceptance testing
  • Regression testing
  • White box and black box testing
  • Interface testing

Functional testing can be performed both manually (so QA engineers do everything manually step by step) and with the help of automated testing (relevant software conducts the testing of your software, and then the QA engineer gets a result).

Non-functional testing implies testing of how the system works, how non-functional aspects of the software like performance, usability, security, etc., show themselves.

Non-functional testing helps QA engineers improve your software to a great extent, and it is always a second step after the non-functional testing, but vital nonetheless. And it is always performed using automation tools since it is a rather complicated process, and manual tests will take too much time and effort.

Non-functional testing includes the following testing types:

  • Performance testing
  • Security testing
  • Load testing
  • Reliability testing
  • Usability testing
  • Scalability testing
  • Compatibility testing
  • Volume testing
  • Stress testing
  • Maintainability testing
  • Compliance testing
  • Efficiency testing, etc.

Quality Assurance Functions:

There are 5 primary Quality Assurance Functions:

  1. Technology transfer: This function involves getting a product design document as well as trial and error data and its evaluation. The documents are distributed, checked and approved
  2. Validation: Here validation master plan for the entire system is prepared. Approval of test criteria for validating product and process is set. Resource planning for execution of a validation plan is done.
  3. Documentation: This function controls the distribution and archiving of documents. Any change in a document is made by adopting the proper change control procedure. Approval of all types of documents.
  4. Assuring Quality of products
  5. Quality improvement plans

What Specialists Make a Quality Assurance Team

  • QA analyst. QA analyst is a position close to the business analyst. Analyst collects all project information, evaluates its risks and weak sides, and creates documentation to describe a detailed analysis of future software development aspects QA engineers must pay attention to.
  • QA lead. The team lead is the person who controls the whole team of QA specialists. Besides, the QA lead manages tests, creates test plans, processes the information received from QA analysts, keeps up with all deadlines to ensure the software will be tested timely.
  • QA engineer. The specialist performs testing and does everything to improve the software quality and make it compliant with all the client’s requirements.

Responsibilities Of QA Team in IT

The scope of tasks QA specialists need to perform is really broad. The quality assurance team proves once again why the importance of QA in SDLC ranks one of the first positions.

  • Test planning. QA analysts plan the testing process, what testing objectives must be met, and what approach is recommended to use.
  • Early testing. QA engineers conduct early testing to detect bugs during the first development phase and speed up the development process.
  • Test execution. QA engineers perform manual/automated testing using different types of testing according to the software particularities.
  • Defects analysis. It is necessary to analyze all defects and identify the reason for their occurrence.
  • Reporting. Specialists use bug tracking systems to create reports for developers with descriptions of bugs and defects to be fixed.
  • Collaboration. The QA team collaborates with business analysts, project managers, developers, and clients to achieve the highest quality of a software product.
  • Test summary report creation. When software is tested, QA engineers need to create a test summary report that shows the quality level of software.

What Is The Role Of QA In Project Development?

Quality assurance in the software development life cycle plays a crucial role at every stage of it. Cadabra Studio does its best to identify all defects and loopholes during software development, and we want to show it is performed in each stage.

Quality assurance in the software development life cycle plays a crucial role at every stage of it. Cadabra Studio does its best to identify all defects and loopholes during software development, and we want to show it is performed in each stage.

  • Requirement analysis. In IT, the QA team collaborates with business analysts to perform a feasibility study of requirements, analyze possible risks, create test plans, and build a strategy for a quality assurance testing approach (each project requires an individual approach due to its uniqueness), what testing types will be used, etc.
  • Design. It is necessary to review the design, verify its testability, check whether the design architecture meets all functional and non-functional requirements. Also, QA specialists make Data Flow Diagram (DFD) together with UI/UX designers and document it. Finally, QA engineers test the design after its completion to imitate end-user behavior.
  • Development. Quality assurance in software development may be performed once the software is created, or it is possible to use the TDD approach — test-driven development. TDD means that the software undergoes a testing process during the development after each iteration. At Cadabra Studio, we apply both methods depending on software particularities and the client’s demands.
  • Post-release QA. Once the product is released, developers keep on maintaining it, and the QA team creates user guides and manuals of the product to deliver it to the end-user. Also, specialists draw up testing documentation to ensure that all bugs have been detected and everything is fixed.

What Is The Importance Of The Quality Assurance Process?

  • It Saves Your Money And Reputation
  • It Prevents Emergency Situations
  • It Increases Customer Loyalty
  • It Contributes To a Larger Number Of Sales
  • It Impacts Employees’ Productivity
  • It Makes Your Software More Secure

Differences between SQA and Software Testing

Testing Principles and Concepts

7 Principles of Software Testing

Experts have offered 7 basic recommendations on testing. These principles are included as a subject of the ISTQB curriculum.

1. Testing shows the presence of defects, not their absence

Testing software before deployment is crucial to identify and fix issues, ensuring system reliability. However, it’s essential to acknowledge that testing doesn’t guarantee 100% error-free software. Even with rigorous testing, undiscovered defects may still exist. Teams must accept this reality and manage client expectations.

A comprehensive test strategy, including thorough test plans, reports, and statistics, is key to instilling confidence in the software’s reliability. Testing release plans contribute to client reassurance by demonstrating progress and emphasizing the testing of critical areas.

Ongoing monitoring and testing post-deployment are vital for identifying and addressing issues that may arise in production. Anticipating potential problems, such as conducting load testing for new marketing campaigns, helps mitigate future issues and ensures the software can handle increased traffic volumes.

2. Exhaustive testing is impossible

As much as we would like to believe or wish it true(!), it is absolutely impossible to test EVERYTHING — all combinations of inputs and preconditions — and you could also argue that attempting to do so is not an efficient use of time and budget. However, one of the skills of testing is assessing risks and planning your tests around these — you can then cover vast areas, while making sure you are testing the most important functions. With careful planning and assessment, your test coverage can remain excellent and enable that necessary confidence in your software, without requiring that you test every single line of code.

3. Early testing saves time and money

Testing should start as early as possible in the Software Development Life Cycle. So that any defects in the requirements or design phase are captured in early stages. Involving testing early is also a fundamental Agile principle. It is much cheaper to fix a Defect in the early stages of testing. But how early one should start testing? It is recommended that you start finding the bug the moment the requirements are defined. More on this principle in a later training tutorial.

4. Defects cluster together

Defect Clustering which states that a small number of modules contain most of the defects detected. This is the application of the Pareto Principle to software testing: approximately 80% of the problems are found in 20% of the modules.

By experience, you can identify such risky modules. But this approach has its own problems

If the same tests are repeated over and over again, eventually the same test cases will no longer find new bugs.

5. Beware of the pesticide paradox

This is based on the theory that when you use pesticide repeatedly on crops, insects will eventually build up an immunity, rendering it ineffective. Similarly with testing, if the same tests are run continuously then — while they might confirm the software is working — eventually they will fail to find new issues. It is important to keep reviewing your tests and modifying or adding to your scenarios to help prevent the pesticide paradox from occurring — maybe using varying methods of testing techniques, methods and approaches in parallel.

6. Testing is context dependent

Testing is context dependent which basically means that the way you test an e-commerce site will be different from the way you test a commercial off the shelf application. All the developed software’s are not identical. You might use a different approach, methodologies, techniques, and types of testing depending upon the application type. For instance testing, any POS system at a retail store will be different than testing an ATM machine.

7. Absence-of-errors is a fallacy

It is possible that software which is 99% bug-free is still unusable. This can be the case if the system is tested thoroughly for the wrong requirement. Software testing is not mere finding defects, but also to check that software addresses the business needs. The absence of Error is a Fallacy i.e. Finding and fixing defects does not help if the system build is unusable and does not fulfill the user’s needs & requirements.

Tester Mindset

As a Quality Assurance Engineer, your job is to look for the weak spots in a product, whatever that product may be, and report them back, so that they can be fixed and thus, the product you are working on can be of the highest quality possible.

To do your job successfully, you need to have a Testing mindset. What does that mean? Among other things, it means you have to think in the most destructive way possible and be as creative as possible.

A few important points:

  • Know the product you are testing
  • Don’t be afraid to think outside of the box when you are testing it
  • Don’t be afraid to misuse it as much as possible.

Testing Approaches

Test approach has two techniques: Proactive — An approach in which the test design process is initiated as early as possible in order to find and fix the defects before the build is created. Reactive — An approach in which the testing is not started until after design and coding are completed.

Three approaches are commonly used to implement functional testing:

  • Black Box Testing
  • White Box Testing
  • Gray Box Testing

References:

--

--