Skip to main content
Image
Fundamentals%20of%20Testing%20%28Banner%20Image%29_1.png

Fundamentals of Testing: Part 1

Technology

Testing is a process of evaluating the performance of a product or service under controlled conditions. It is imperative since an effective testing process ensures that the products and services are safe, high quality, and efficient. 

In this article, we will examine the basics of testing, including the testing process, and objectives.

What is Testing?

Testing can be defined in many ways but we’ll try to keep it simple and avoid the complexity that comes with other definitions.

In Software development, Testing consists of all life cycle activities, both static and dynamic, concerned with planning, preparation, and evaluation of products and related work products to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose, and to detect defects. ( Source: ISTBQ). 

“No amount of testing can prove a software right, a single test can prove a software wrong.”— Amir Ghahrai

Human psychology and testing allegedly have a deeper relationship with each other. Being a vital component of the development life cycle, it is considered a bad messenger in the development space. Let’s understand how they both are interconnected and what role they play in the software development life cycle.

Human Psychology & Testing

The whole process of software development involves a lot of human participation. Psychologically humans despise criticism of any sort and testing sheds light on whatever is faulty and hinders the software’s performance. 

Therefore, it is sometimes perceived as criticism by other team members. Fundamentally, it is difficult to accept evidence that contradicts their existing ideas about a particular product or service. 

Discovering faults during a static test, such as a requirement review or user story refinement session, or identifying problems during dynamic test execution, are some examples of testing activities that execute the same thing.

Since developers expect their code to be correct, they have a confirmation bias that makes it difficult to accept that their code is incorrect. In addition to confirmation bias, other cognitive biases may make it difficult for people to understand or accept information produced by testing.

Another human trait is to blame the bearer of bad news, and information produced by testing often contains bad news.

As a result of these psychological factors, some people may perceive testing as a destructive activity, even though it contributes greatly to project progress and product quality.

“QA should try to reduce these perceptions and communicate information about defects and failures in a constructive way”

This way, tensions between the testers and other stakeholders can be reduced. This applies during both static and dynamic testing.

The motive of the Quality Assurance team is to support the delivery of an enhanced and flawless product not to pull the team down as the ultimate goal is always to make the user experience smooth while using the application.

There are numerous ways to establish better communication between teams. To make the collaboration effective and efficient below are some steps that can confirm that all the teams have the same understanding of prerequisites. (Source: ISTQB)

Start with collaboration rather than battles. Remind everyone of the common goal of better quality systems.
Emphasize the benefits of testing. For example, for the authors, defect information can help them improve their work products and their skills. For the organization, defects found and fixed during testing will save time and money and reduce overall risk to product quality.
Communicate test results and other findings in a neutral, fact-focused way without criticizing the person who created the defective item. Write objective and factual defect reports and review findings.
Try to understand how the other person feels and why they may react negatively to the information.
Confirm that the other person has understood what has been said and vice versa.
To ensure better software delivery, there are certain testing objectives that should be taken into consideration. 

Typical Objectives of Testing

  • Test Object: The component or system to be tested.
     
  • Test Objective: A reason or purpose for designing and executing a test.

For any given project, the objectives of testing may include:

  • Preventing defects by evaluating work products such as requirements, user stories, design, and code
  • Verifying whether all specified requirements have been fulfilled
  • Checking whether the test object is complete and validating if it works as the users and other stakeholders expect
  • To build confidence in the level of quality of the test object
  • To find defects and failures by reducing the level of risk of inadequate software quality
  • To provide sufficient information to stakeholders to allow them to make informed decisions, especially regarding the level of quality of the test object
  • To comply with contractual, legal, or regulatory requirements or standards, and/or to verify the test object’s compliance with such requirements or standards

“The objectives of testing can vary, depending upon the context of the component or system being tested, the test level, and the software development lifecycle model”

These differences may include, for example

During component testing, one objective may be to find as many failures as possible so that the underlying defects are identified and fixed early. Another objective may be to increase code coverage of the component tests.


During acceptance testing, one objective may be to confirm that the system works as expected and satisfies requirements. Another objective of this testing may be to give information to stakeholders about the risk of releasing the system at a given time. 


 A test process consists of the following main groups of activities:

Testing Process

  • Test planning: Test planning involves activities that define the objectives of testing and the approach for meeting test objectives within constraints imposed by the context
     
  • Test monitoring and control: Test monitoring involves the ongoing comparison of actual progress against planned progress using any test monitoring metrics defined in the test plan. Test control involves taking actions necessary to meet the objectives of the test plan (which may be updated over time). Test monitoring and control are supported by the evaluation of exit criteria, which are referred to as the definition done in some software development lifecycle models.
     
  • Test analysis: During test analysis, the test basis is analyzed to identify testable features and define associated test conditions. In other words, test analysis determines “what to test” in terms of measurable coverage criteria.
     
  • Test design: During test design, the test conditions are elaborated into high-level test cases, sets of high-level test cases, and other testware. So, test analysis answers the question “what to test?” while test design answers the question “how to test?”
     
  • Test implementation: During test implementation, the testware necessary for test execution is created and/or completed, including sequencing the test cases into test procedures. So, test design answers the question “how to test?” while test implementation answers the question “do we now have everything in place to run the tests?” Test design and test implementation tasks are often combined.
     
  • Test execution: During test execution, test suites are run in accordance with the test execution schedule.
     
  • Test completion: Test completion activities collect data from completed test activities to consolidate experience, testware, and any other relevant information. Test completion activities occur at project milestones such as when a software system is released, a test project is completed (or canceled), an Agile project iteration is finished, a test level is completed, or a maintenance release has been completed.

Conclusion


A transparent and effective testing process ensures timely project completion and delivery. It also helps in the overall product lifecycle and guarantees flawless product delivery for end users. Apparently, it has a huge role in making the product better with consistent error detection and regressive improvements.

With emerging technological trends you need a partner that makes sure your website is innovative and profitable. At OpenSenseLabs, we help enterprises provide a better digital experience. Contact us at [email protected] and let our experts help you out.

Subscribe

Ready to start your digital transformation journey with us?

Related Blogs

Debunking 6 Common Software Testing Myths

Common%20Misconceptions%20about%20Testing.png

A flawless product delivery requires a perfect combination of both development and testing efforts. Testing plays a vital role in…

With Ant Design, Create React Components Like a Pro

With%20Ant%20Design%2C%20Create%20React%20Components%20Like%20a%20Pro.png

Most enterprise-grade solutions depend on the React stack to create a robust platform for improved delivery and performance. React is one…

Boost developer productivity with Chakra UI

What%20is%20a%20chakra%20%281%29.png

React component libraries are helpful tools in creating stunning interfaces for react-based applications. Though each website component…