Table of Contents
Let’s start with what “testing” is. First, let’s abstract from dry definitions and look at this concept from everyday use. When we test something, we ask ourselves a simple question: “Does this work as we expect?” or, in other words: does the actual behavior of the test object meet our expectations? If the answer is yes – great, if not – we are deceived in our expectations, which means that something needs to be corrected.
Why is testing so important?
Testing is necessary because we all make mistakes. Some of them may be minor, while others may have the most devastating consequences. Everything produced by a person can contain errors (this is how we humans are made). That is why any product needs to be tested – tested before it can be used effectively and safely.
The same applies to software. Computer technologies penetrate deeper and deeper into our daily life. Software controls the work of many things around us – from mobile phones and computers to washing machines and credit cards. In any case, we have all come across one or another error in the programs: a text editor that hangs tightly while working on a thesis project; An ATM that “ate” a card or just a website that won’t load in any way – all this does not make our life easier.
However, not all errors are equally dangerous – for different software systems, the risk levels may differ. Besides, the level of risk will depend on the likelihood of negative consequences. For example, the same minor error, say a typo, can have completely different risk levels for various programs:
– a typo in the description of interests on a personal page on a social network is unlikely to have significant consequences, except that it will make your friends smile;
– the same simple misprint made in the description of the activities of a large company posted on its website is already dangerous since it indirectly testifies to the lack of professionalism of its employees;
– a typo in the code of a program that calculates the exposure levels during the X-ray machine operation (for example, 100 instead of 10) can have the direst consequences – harm to the health and safety of people will result in a loss of confidence in the company and lawsuits with many zeros.
To avoid these errors, both minor and global, any software product needs high-quality testing. Testing can be manual (manual) or automated. This article will talk about the first one since manual testing is still based on any automated testing.
What is manual testing?
Manual testing consists of following a documented procedure that describes how to execute the tests. The technique sets the order of tests and, for each, a list of parameter values that are supplied as input and a file of results as output. Since a person intends to perform the procedure, some common sense defaults may be used in its description for brevity or refer to information stored in another document.
In manual testing, testers manually execute tests without using any automation tools. Manual testing is the lowest-level and most straightforward type of testing that does not require additional knowledge.
From the above, it might seem that testing is a simple job done by someone and does not have to involve a separate specialist. But this is not so, let’s analyze the most popular myths about manual testing and try to dispel them.
Manual Testing Myths
– anyone can do manual testing
No, performing any testing requires specialized knowledge and professional training.
– automated testing is more efficient than manual testing
Full automation is not possible. Manual testing should also be used. Besides, it is imperative that you first run a series of manual tests before automating any application testing. Manual testing requires significant effort, but we cannot be sure whether automation is possible in principle without it.
– manual testing is easy
Testing can be very challenging. We are conducting testing to test as many execution paths as possible using as few test cases as possible requires significant analytical skills.
Testing process in our company
We are convinced that manual testing is an essential part of development, which must be approached consciously, which is being done in our company.
The company uses an analytical approach to testing based on specifications (requirements) and checklists. A critical component is that testers are involved in creating the project from the very early stage – drawing up the specification and development of the design and dot leaving until the product is released.
The work of any tester begins at the assessment stage. First, together with other project participants, a preliminary assessment is made. After the specification is written, it is discussed by the grooming team, corrected and supplemented. And after its confirmation, one of the main stages begins – the preparation of test documentation. The testing uses checklists based on requirements and prepared according to specific standards accepted by the company. At the same time, test documentation must be reviewed by the appointed reviewers, which once again guarantees its quality.
Depending on the project, different test management systems are used – TestLink or Zephyr for JIRA. For the most part, this is a test management system – TestLink.
Jira is used as a bug tracking system; in some cases, it can be a client’s bug tracking system. The bug tracking system’s tasks are conducted according to a specific flow, which is all project standard.
Manual testing includes many levels and types of testing, which are conducted by our testers.
Integration testing, System Testing, and Acceptance testing are distinguished among the testing levels. All these levels are applicable to both web applications and mobile app. Integration Testing aims to verify that each module of the system is working correctly. The addition of a new module does not interfere with the system’s health and integrity.
System testing and Acceptance testing are aimed at testing the entire system. For System testing, it is essential whether the system as a whole meets the specified requirements; Acceptance testing, in turn, is focused on validating the system for user needs, meeting requirements, and business processes.
Each level of testing is an essential part of a particular development stage and must be applied to ensure the product’s proper quality. As for the types of testing, more than 15 of them are carried out in our company, but let’s talk about the most important ones.
- Even before the start of the leading testing of the software product, Static testing is carried out. This type of testing focuses on checking requirements and documentation before dynamic testing. At this stage, the tester is engaged in preparing test documentation, which will later be tested.
- The most significant types of testing can be distinguished by Functional testing, which is aimed at checking a component or system for the stated requirements. The main task of functional testing is to confirm that the developed software product has all its functionality.
- Usually, when performing Functional testing, UI testing is also carried out, which is aimed at checking the interface. What does the interface look like? Is it convenient for the user to click on the buttons? Are the icons clear, readable text, format, font? What accents will be located in what places and what will attract attention? The appearance of the application should contribute to the usability and clarity of the product. When testing the interface, we simulate the actions of the application user. Such testing aims to make sure that all components of the system interact correctly with each other.
- Cross-browser and Cross-platform testing also occur during functional and UI testing.
– Cross-browser testing is focused on the operation of a website or web application in different browsers (Internet Explorer, Safari, Mozilla Firefox, Google Chrome – the latest and penultimate version as adaptability).
– Cross-platform testing aims to verify that a website or mobile application works on different PCs or mobile OS.Along with these two types of testing, Configuration testing and Compatibility testing are carried out. Configuration testing is the process of checking your software’s operation with various types of hardware and software platforms and their different settings. Compatibility testing is testing your software’s service with other software. Web pages are perfect examples of where you can apply this type of testing.
- Suppose problems were discovered during Functional testing, then after their elimination. In that case, Confirmation (Re-testing) is mandatory, the essence of which is not only to check the removal of the defect but also to make sure – the module in which it was found an error, works again as required.
- Regression testing is carried out after each new stage of development. When performing this type of testing, the tester’s main task is to check the previously implemented functionality. The implementation of each new module or component should not affect the appearance of defects in the already finished functionality.
- Smoke testing aims to check the primary, critical functionality before full testing. For example, part of Smoke testing might include Installation testing, verifying that a product is successfully installed in a specific environment. If it turns out that the product has not passed Installation testing during Smoke testing, then further testing is pointless.
- Performance testing is also an integral part of any Performance testing. Performance testing determines the speed, responsiveness, and stability of a computer, network, software program, or device under a workload. Typical parameters include processing speed, data transfer rate, network bandwidth, and throughput, workload efficiency, and reliability.
- Localization testing is carried out (most often) together with UI testing. If the software product has several languages, then the purpose of this type of testing is to check that the system works correctly when switching the language. The system interface is displayed according to the selected language.
- An important role is also given to Security testing. The overall security strategy is based on three basic principles: confidentiality, integrity, availability. During testing, our testers make every effort to identify XSS, XSRF / CSRF, Code injections (SQL, PHP, ASP, etc.) and other types of vulnerabilities to maximize your security system users.
Closing Thoughts
Based on the above, it is safe to say that our company’s testing department makes every effort to ensure your product’s quality. All types of testing are carried out by qualified workers using carefully prepared documentation. We are maximally focused on meeting all customer needs and providing users with an engaging, safe, and high-quality product.
Manual testing is a rather tricky task. Many people think that it is possible to skip or automate tests, but manual testing is vital in software development because automated testing cannot cover everything. After all, people will use your software, so it makes sense that people should participate in testing your software. Manual testing identifies and solves more usability issues than automated testing because it allows the tester to be flexible during testing to try different options.
It does not mean that automated testing is worthless. The main benefit of using automated testing is to ease tedious, repetitive tasks, including reruns.