We all have an interest in doing our best work. But sometimes it feels quite difficult to determine what the best possible quality is, given time and budget constraints.
The meaning of quality and project goals
What is quality? There are many definitions. In general, it is the level of satisfaction with meeting the expectations, both implicit and explicit, of all stakeholders. By stakeholders, we mean that everyone is affected by the state of the product and project: your customers, your users, your developers, or your suppliers.
The definition of quality must be consistent with the purpose and context of the project. Common sense dictates that the development and management of a prototype project cannot be approached in the same way as a long-term or high-risk domain project. And you cannot expect the same level of quality in these two types of projects.
How to define test approach
- First, discuss the business goals of the project, assess the risks of the project, and determine quality expectations from all stakeholders. Depending on the project objectives, you need to understand stakeholder expectations of the project and determine what quality means to you.
- Based on the context of the project, you should select applicable test activities that will help reduce risks and meet the definition of quality and achieve the business objectives. Then develop an approach that will help you achieve the required level of quality. You should also develop a testing strategy.
- Discuss and approve the testing activities along with the development activities. They should be included in the project framework as they can be quite time consuming.
- Once approved, put them in the project framework and in the definition of work completed.
- After that, establish the testing process within the team.
- But here is the trick: later, as the project evolves, the project goals may change. The basic test strategy and approach should be updated along with the project evolution.
How the definition of quality evolves with the project
As a rule, many changes are made to the project during its development. New requirements are identified, both functional (new features) and non-functional (e.g., accessibility, performance or localization requirements). The goal is to keep these expectations in mind as you develop your testing strategy and share the new quality vision with the team as it evolves. For example, if you're introducing new accessibility requirements, it's not enough to just change the code and test the changes once. It's important to add an accessibility criterion to the definition of "done" for all subsequent features.
We suggest regularly scheduled test strategy reviews with key project stakeholders (e.g., quarterly or biannually) to ensure that the quality definition and testing approach are aligned with current project goals. Below you will find three examples of quality definition vs. project goals to give you an idea of how the approach to testing can vary from project to project:
- Proof of ? concept
- Short-term project (without further support)
- Long-term project
Proof of ? concept
Project Objectives: Understand the value or suitability of the solution. The constraints are time and budget.
Quality Definition: The product must be good enough to understand the value of the solution.
Possible test approach:
- Manual ad-hoc testing
- User acceptance testing (UAT)
- UX testing (if applicable)
- No time investments in dev support activities (unit tests, peer reviews, etc).
Risks: All project participants must clearly understand that this type of project has no release quality and is not designed for maintainability. Functional and non-functional requirements are not applicable to this type of project. Its only purpose is to determine the value of the solution.
Short-term project (without further support)
Project Objectives:Develop a short-term solution for a specific purpose. Usually the main constraint is time.
Quality definition:The product must meet functional and non-functional requirements such as reliability, performance, etc. (if applicable). However, maintainability may not be part of these requirements.
Possible test approach:
- Manual and instrumental testing methods are used to ensure that the product meets requirements. The team uses exploratory testing and test development techniques.
- UAT is used to make sure that the product meets business need)
- The team may practice paired programming, peer code reviews, and team design reviews to prevent defects, but the team is not focused on continuous testing and code base coverage.
- There is no temporary investment in continuous development support activities (e.g., unit tests or CI mechanism). A minimally viable set of tests can be implemented.
- A task management system is chosen for short-term support (e.g., Trello may be used).
- Defects are either fixed or quickly rejected.
Risks:: All project participants must clearly understand that this type of project has the quality of release, but because the main constraint is time, maintainability was not the focus of product development, so it may not respond well to change, and further support and development of such a project can be costly.
Project goals: Develop a long-term reliable solution. Volume is usually divided into iterations, and cost can be a major constraint. In addition, the project is expected to undergo a number of changes along the way.
Definition of quality: After each iteration, the product must meet functional and non-functional requirements. In addition, the approach to design, development and testing must prioritize maintainability and responsiveness to change from the beginning.
Possible test approach: The team focus is on continuous development, testing and support, so continuous automation testing is used when possible:
- Automated regression test suites are created to provide quick feedback after any change is implemented.
- Automated test suites include unit, integration, end-to-end, and acceptance tests.
- Test coverage requirements may be introduced.
- Automated contract tests may also be included in the suite.
- Some non-functional requirements may be covered by continuous on-demand automated tests (e.g., continuous performance tests, automated security checks, or visual regression tests).
- The team practices pair programming, peer code reviews, team design reviews, etc. to prevent defects, along with continuous automated testing.
- Manual testing is used to ensure the product meets high-level business goals, appeal and usability. The team uses exploratory testing and test design techniques.
- Instrumental non-functional testing is used to ensure the product meets non-functional requirements such as reliability, performance, etc. (if defined).
- A long-term task management system is selected.
Risks: All project participants should understand that developer support, the creation of automated test suites, and careful design require more time, but only in short-term projects. Implementing changes without a continuous feedback mechanism, such as automated regression test suites, unit tests, or CI, can lead to a waste of time in long-term projects.
It is critical for a project to update the definition of quality and the testing approach as the project goals are achieved and new requirements are identified. There are many types and techniques of testing to cover different product expectations, and you must choose the ones that fit the context of your project to ensure that all stakeholder expectations are met at any stage of the project life cycle.
This is a hot topic because it affects how fast and successful the entire development process is. As you delve deeper into this issue, you will discover a variety of solutions, ranging from one tester to 3-5 developers to a staggering 1:1 ratio, which at first appears impossible. When deciding how many testers to include in a project, we consider the scope of quality assurance tasks rather than the number of developers.
You can be certain that you require test automation if:
Your project is expected to last a year or more. The number of tests you must run during regression testing grows steadily, resulting in a massive load of routine tasks.
You keep multiple versions of the product on hand and release patches and service packs for each. The reason is obvious in this case: testing different configurations is routine.
You create a data processing and transformation service. Manually entering data, visually analyzing results, sending requests, and analyzing responses are all things that humans should avoid doing on a daily basis.
You employ an Agile development methodology characterized by short iterations and frequent releases.
The adage "fail to plan, plan to fail" is well known. That is why a test plan includes all of a project's main activities and resources, as well as entry and exit criteria for testing.
Then we begin defining requirements. At this stage, we analyze requirements, evaluate potential risks, and establish priorities. We then design tests and evaluate test coverage based on the test conditions. We begin testing immediately after the test implementation stage, when the test environment, test suites, and test procedures are complete.
Continuous testing is a strategy for evaluating a product's quality at each stage of the Continuous Delivery process. Continuous testing's goal is to test early and often - to test everywhere and automate. Automated tests are run as part of the software delivery pipeline during this process to obtain feedback on the business risks associated with a software release candidate as quickly as possible. Continuous testing means testing on an ongoing basis, from unit and integration testing to production and live testing.
All testing activities must be properly planned.Communication. Communication is essential if you want to build smooth and efficient processes, whether it's with a client, management, third parties, or within the team. Teamwork. Similar to how you can invite the best stars and well-trained players to a football team, you can hire engineers with the right skills and knowledge in development. Knowledge and abilities. Professional and domain knowledge, as well as technical and soft skills, all have a significant impact on the success of a project.
Willingness to go the extra mile. Our commitment to anticipating and exceeding our clients' expectations is one of the most important principles that distinguishes us from other companies.
Testing during the design phase can help to avoid flaws later on. Three things should be checked:
1. Ensure that the design is sound, efficient, compact, testable, and maintainable.
2. Ensure that the design meets the specifications and is complete (specifies all relationships between modules, how to pass data, what happens in exceptional circumstances, starting state of each module and how to guarantee the state of each module).
3. Ensure that the design includes enough memory, I/O devices, and a fast enough runtime for the final product.
The entire software development process is involved in software quality assurance. Prevention entails monitoring and improving the process, ensuring that any agreed-upon standards and procedures are followed, and ensuring that problems are identified and addressed. Detection is also a focus of software testing. Testing entails running a system or application under controlled conditions and analyzing the results. The way organizations assign responsibility for QA and testing varies greatly. They are sometimes the joint responsibility of more than one group or individual. Project teams, which include a mix of test engineers, testers, and developers who collaborate closely, are also common, with overall QA processes monitored by project managers. It all depends on your organization's size and business structure.
Quality assurance ensures that all project participants follow the process and procedures, standards and templates, and test readiness reviews. The quality assurance service is determined by the customers and projects. Much will be determined by team leaders or managers, feedback to developers, and communication between customers, managers, developers' test engineers, and testers.
Processes and procedures that are detailed and well-written ensure that the correct steps are taken to complete a task successfully. They also ensure that a process can be repeated.
All documents should adhere to a specific standard and template. Document consistency is maintained through the use of standards and templates. It also aids in learning where information is stored, making it easier for users to find what they are looking for. Finally, by using standards and templates, information will not be accidentally left out of a document.
Black box testing is functional testing that does not rely on internal software design or code. Black box testing is performed on the basis of requirements and functionality.
White box testing relies on understanding the internal logic of an application's code. Coverage of code statements, branches, paths, and conditions is used to create tests.
The first level of dynamic testing is unit testing, which is the responsibility of developers first, followed by test engineers. After the expected test results are met or differences are explainable/acceptable, unit testing is performed.
Parallel/audit testing involves comparing the output of the new system to the output of the current system to ensure that the new system performs the operations correctly.
Functional testing is a type of black-box testing that focuses on an application's functional requirements. Functional testing should be performed by test engineers.