Perfection Knows No Bounds, or Who Needs Testing?
In this article, we're going to...
-
tell you about the role of testing in the development cycle;
-
teach you how to cope with different kinds of errors and save money;
-
share the cases from our own practice.
Let's get started!
What is software testing?
First of all, it is an integral part of software development which has its own lifecycle. This cycle has its requirements for observing discipline both in the development process and in providing a product of the proper quality.
And during the development process, the certain conditions essential for the successful Life Cycle of Software Development had been created.
Need testing? No one knows what result you'll get!
Software testing involves a lot of various aspects. Every company has its own understanding of the testing process which differs from the standard rules. In one company, testing is based on comparing a finished product with a specification and documentation describing the functionality. Another company can conduct code-level testing called "white box testing" meaning the code accessibility for the tester. And the third company tests the product as a "black box": if there is "no smoke", the product is ready for release.
But, definitely, there are long-established concepts of quality assurance which are most often used in software development companies.
Software Testing Processes
To assure the quality of the product, one usually uses the following processes:
- assessing documentation (mockup, design, customer requirements, technical documentation, etc.);
- evaluation of the product that is already finished in order to provide information about its quality to parties concerned (the final product is being compared with stakeholders' requirements);
- searching for errors at the early development stages;
- maintenance of the development process that minimizes the possibility of errors.
Noncompliance with these processes may lead to significant omissions and even a deviation from the initial plan. As a result, the final product will be much different from the one conceived.
So why is testing so necessary and who needs it in the first place?
The main goal of the quality control is to reduce the company's expenses allocated to software development. Obviously, fixing errors found during the early development stages will cost the company much cheaper than after the final product has been released.
Also, an important task is to report on the current product state and provide documentation to interested parties, that is, the client, the developer company, and so on. Quality reporting can be used for making important decisions, such as a public release of a product.
And, of course, it's essential to find all the blocking errors as early as possible providing developers with a chance to fix them in time.
What should you do if you've found an error in the tracker?
There are many different bugs classifications, but the main of them often include the following items:
1) Severity
The principle of such classification is the level of the bugs criticality for the operation of the system as a whole.They fall into a few groups the set of which differs depending on the field of the program applying.
Groups of bugs can be defined by the corporate standard, the limitations of the current bug tracking system or the agreement of the team. We're going to describe our version.
-
Blocker
A blocking error causes the application to become inoperable, and as a result, further work both with the system being tested and with its key functions becomes impossible. The solution of this problem is necessary for the further system functioning.
Example:
If you are giving the Username and Password on the Gmail page, immediately Error page occurs or the Inbox page is not visible. So these sort of things to be considered as Blockers Bugs.
It will not allow the User to Test the Application further.
What should the owner or manager do if an error of this type has been found?
QA creates the task for the developer with the highest priority and such bug should be fixed in the first place, before the rest non-critical or trivial tasks or change requests.
-
Critical
A critical error indicates a malfunction of the key business logic, a security hole, an error that resulted in a temporary server crash or an inoperable state of any part of the system without the possibility of solving the problem using other input points. This solution is necessary for further work with the key functions of the system under test.
Example:
Critical bugs include those that:
- Render a site unusable and have no workaround.
- Cause loss/corruption of stored data. (Lost user input, e.g. a failed form submission, is not the same thing as data loss and in most cases is major).
What should the owner or manager do if an error of this type has been found?
QA creates the task for the developer with the high priority and such bug should be fixed secondly after the highest priority bugs are fixed. And after the rest, non-critical or trivial tasks or change requests could be fixed
-
Major
A major error implies that some parts of the main business logic work incorrectly. The error is not critical, or there is an opportunity to work with the function under test using other input points.
What should the owner or manager do if an error of this type has been found?
The major priority is used for issues that are not critical, but that does have a significant impact or are important by community consensus. These issues are prioritized in the current development release and backported to stable releases where applicable. Major issues do not block point releases.
-
Minor
A minor error doesn't violate the business logic of the app part being tested, it's an obvious error of the user interface.
Example:
Minor priority is most often used for cosmetic issues that do not inhibit the functionality or main purpose of the project.
Examples of the minor bug: an incorrect class reference only in a comment.
What should the owner or manager do if an error of this type has been found?
QA creates the task for the developer with the normal/low priority and such bug should be fixed after the highest priority bugs are fixed. Only after the rest, non-critical or trivial tasks or change requests could be fixed
-
Trivial
A trivial error doesn't apply to the business logic of the application. This is a poorly reproducible error which is barely noticeable through the user interface. It's an error of third-party libraries or services so it does not have any impact on the overall quality of the product.
Example:
Such bugs are mostly graphical and not related to code. It does not influence any aspect of the application
What should the owner or manager do if an error of this type has been found?
QA creates the task for the developer with the low/lowest priority and such bug should be fixed after the highest priority bugs are fixed. Only after the rest, non-critical or trivial tasks or change requests could be fixed
2) Priority
-
High
The error should be fixed as soon as possible because its existence is critical for the project.
What should the owner or manager do if an error of this type has been found?
The bug which has a high priority needs to be fixed as soon as possible. A bug without which we cannot proceed our testing further is such a type of bug that should have high priority. A bug that is a part of current software release or the build release needs to be fixed as soon as possible.
Example:
Usually, a bug with high severity is marked as high priority (for example, a login system of an e-commerce site is not working). Then such a bug is marked as high severity and high priority one.
Simply put, High priority bugs need to be fixed as soon as possible.
-
Medium
The error must be fixed, its existence is not critical but requires a binding decision.
What should the owner or manager do if an error of this type has been found?
A bug can be marked as a medium priority bug when it does not affect other parts of the software and does not result in the termination of the software. And we can wait till the next build (or the next release) to solve this bug. So the bug is marked as medium priority bug.
Example:
For example, a user taps on some button on the navigation bar to navigate into another screen, but this button does not change the color into expected. Such a bug doesn't influent on the functionality and application work, but it should be fixed in the next release.
-
Low
The error must be corrected, its existence is not critical and does not require urgent intervention.
What should the owner or manager do if an error of this type has been found?
A bug has a very negligible impact on the software. If it’s a not a part of the current release, it’ll be a part of the future one because it does not affect any feature of the software.
Example:
Low priority bugs include those related to UI, small spelling mistakes, grammatical mistakes and so on.
It is the priority of the error that determines the fixing sequence. For example, one high-priority bug and five bugs of low priority had been found during testing. In this case, of course, the bug of the highest priority will be put into the working process in the first place followed by the trivial bugs that need fixing.
There is more to come! Testing can be very various
Another important factor is the distribution of the process by the types of testing depending on the performer's aim.
Everything is quite simple here. Types of testing can be divided into three main groups:
- Functional testing is one of the types of testing aimed at checking the conformity between functional requirements of software and its real characteristics. The main task of functional testing is to confirm that the product being developed has all the functionality the client wants to see.
- Non-functional testing includes tests necessary to determine the characteristics of software that can be measured by different values. In general, here we're testing "how" the system works.
- Re-testing. After the process of fixing bugs/defects, the software must be re-tested in order to confirm the fact that now everything is working as it should.
Summarizing, we can say:
- Testing is a necessary stage in the web and app development because it allows to significantly reduce costs.
- It is important to understand what kind of testing you need at one stage or another.
- You should intelligently allocate resources and priorities basing on the types of errors.
So, we hope, we've convinced you to choose a development company with a QA department. We're happy to offer our services! Our Agilie team employs professional QA experts who ensure that you get exactly the product that you wanted.