Tester’s and Developer’s Mindsets

In this tutorial, we will learn about tester’s and developer’s mindsets that can carry how software developers have the mindset of creation.

Software testers are more concerned with how things might be destroyed—the details why testers don’t always need to code and why UI (User Interface) and API automation matters.

In this IT world, some IT professionals think that a tester’s role is useless and that a developer can test the code that is written by him alone. A developer can test his code and code written by other developers, but the developer will lack the tester’s procedure process and mindset.

Some people believe that discovering and fixing defects early in the software development life cycle (SDLC) will result in higher quality software and lower costs. If more testing is moved in an automated process than problems can be corrected earlier.

The requirement of balance between developers and testers is critical because both software developers and software inspectors have a different mindset but have a single aim to deliver top-quality products and services that meet or exceed the customer’s needs.

The developer’s job is to build, and the tester’s job is to tear down. The biggest challenge for developers is to test their work rather than handing it off to an inspector. The possibility is that they might overlook errors and forget to make changes or feel optimistic.

How is the Tester mindset during SDLC?

  • During the requirement gathering phase, the testers understand the application as a whole. The testers create the test plans, test strategies, and follow the scope of the use.
  •  Once the development is done, and a well-built and transferable product is available. The test of application correctly in different environments and check the overall application performances and functionalities.
  •  Testers start experimenting with the mindset that the development done by the developers might be faulty and need to be tested before providing testing sign off.
  • Any defects that appear during the testing are log in a defect tracking tool.
  • Then we create the automation scripts designed to reduce the manual overhead.
  •  It provides reliable product delivery, regression testing, and retesting have performed.

How is the Developer mindset during SDLC?

  •  The post requirement gathering developer analyzes the requirement and defines the challenges involved and includes the best possible approach.
  •  Developers are confident about their coding irrespective of their skill. They assume their coding is perfect and error-free, but once the coding is complete, then create unit tests and the application according to their understanding.
  • If issues appear during this phase, then code patches are used to repair them.

How tester and developers work together?

Now, as we know, tester and developer work individually, but now the software development life cycle process is whole, i.e., when developers and testers work together as a team.

  •  After the requirement gathering phase has been performing, developers get involved in coding their tasks and features. In contrast, testers use the business requirement document to frame test cases and test strategies.
  • As the developer creates the unit test case and performs at least one round of testing, the stable application has given to the tester. During this phase, the developers stick to the requirement in hand and provide test data for testing the application. Such testing has a narrow scope and can overlook a lot of possible errors.
  •  When the tester gets the developed form, the inspector goes through the requirement document and executes each test case. Also, a round of integration testing is done to ensure that the newly implemented logic or functionality doesn’t damage the earlier version of the application.
  •  The thorough examination provides testers significant advantages and helps them identify errors that were missed by the developer. As testers, they cannot be involved in the coding phase; they have a fresh outlook towards the use.
  •  Once the testing is completed, and bugs logged, automation scripts are created and executed at periodic intervals to provide better test coverage.
  • The tester is also responsible for performing different testing like performance testing, API testing to eliminate any further issues. This type of testing depends on the type of application and the client’s request.

Human Psychology And Software Testing

In this tutorial, we will learn about human psychology and software testing, and we will also understand how human psychology impacts software testing.

As testing is done by any human being who plays the role of Software Tester, people’s reaction in this composite world of happenings varies widely to circumstances, opinions, needs, surroundings, time, money, etc.

Such a compound is the nature of human beings, and indeed there is no deviation at the workplace. So, we cannot easily say that testing done by a tester is complete and straightforward. Testing Psychology is entirely dependent on the mindset of a developer and tester.

When building the software, we need to work positively towards the software and never think about negative things. While testing and reviewing the developed software, the mindset should be different, and if the programmer has the correct mindset, he can check their code.

The mindset used while testing and reviewing is different from the mindset used while developing software, and with the right mindset, the developers can test their code.

The tester is responsible for helping to focus effort and provide additional benefits, such as the independent view by trained and professional testing resources. We can carry out independent testing at any level of testing.

A specific level of independence makes the tester more effective at finding defects and failures, and developers can also efficiently find many code mistakes.

How human psychology and testing are related?

Software testing is a technical task, but it also involves some vital reviews of economics and human psychology.

In this IT world, we would want to test every possible combination of a program. In some cases, it is not possible as a simple program can have hundreds or thousands of potential input and output combinations, but creating test cases for all these combinations is impractical.

What are the levels of independence in Software Testing?

Several levels of independence can define, as shown here from low to high:

  1. Tests were created by the person who wrote the software.
  2.  Tests are designed by another person from the same team.
  3.  Tests are designed by a person from a different organization group or test specialist.
  4.  Tests are designed by a person from a different organization or company.

Why is independent testing required?

People are inclined to place their plans with the objectives set by management and other stakeholders, for example, to find defects or to confirm that software meets its goals.

Objectives drive human beings and projects; therefore, it is essential to mention the testing objectives. Finding failures during testing may be acclaimed as criticism against the product and the author.

If errors, defects, and failures are communicated in a useful way, then the differences between the testers, and the analysts, developers can be ignored, and this applies to those defects which are found during reviews as well as in testing.

The tester and test leader need excellent interpersonal skills to communicate accurate information about defects, progress, and risks in a proper way.

In software testing, people and projects are carried by objectives. While developing the software, the programmer writes the code to build the software. At that time, the programmer tests their system and then pass through the next phase; however, it is difficult for the programmer to find their errors why independent tester highly recommended.

Communication also plays a vital role in the psychology of testing, where tester and test lead need excellent interpersonal skills to communicate. The testers and others can improve communication by:

  • Everyone should have a common goal or task of quality software.
  • Make sure that the other person has understood what you have said.
  • Start the collaboration instead of issues.
  • Improve mutual understanding while working.

Test Activities And Tasks

In this tutorial, we will learn about test activities and tasks, and for that, a defined process must be followed.

What is the test process?

The expensive, well-ordered, and settled process is a key to smoothly and systematically carrying out any task to achieve success. In the software development life cycle, the job of testing is also not just limited to execute test cases on the software product. The examination also consists of an extensive process that completes its cycle after going through several phases, just like the process of software development. 

The test process is an essential part of the software development life cycle and consists of various activities that are carried out to improve the equality of the software product. From planning to execution, each stage of the process is designed systematically and needs the discipline to act upon them. These steps and stages are necessary and have their criteria and deliverable, which are combined and evaluated to get expected results.

What is the importance of the Test Process?

The test process is vital to gain most of the testing activities, and a defined process must be followed. To start with, any testing activity produces a good test plan. Let us have a look at the importance of the test process. The test process helps us to maintain the product quickly in the future.

  1.  It helps in planning and managing the testing activities.
  2. Following a proper testing process will result in a better product.
  3. A systematic and well-planned process enables the team to detect defects more rapidly.
  4. It streamlines the work that is being performed by the team members.
  5. Five fundamental test activities and tasks
  6. As the software development has the life cycle in the same way that software testing has the life cycle, it is Software Testing Life Cycle, which includes the series of activities that initiate, start, and terminate the testing process successfully. The testing consists of five phases:

 Test Planning and Control – 

The first stage of the process is test planning and control, which is an essential part of the Software Testing Life Cycle where the manager or test leader describes the efforts and cost of the entire project. The whole team works together to define test objectives, prepare test plans, and build up a test strategy to implement test plans at various software levels systematically.

Analysis and Design –

After the planning stage, the next step is analysis, and design test cases are designed with the help of the information and output from the planning and controlling stage. In this stage, the objectives are transformed into test cases.

Test implementation and Execution –

In this phase of testing, the test scripts and procedures are defined by integrating the test cases in a particular order, testing environment, and executing the test cases. We can divide this phase into two categories:

 Test Implementation:

The designed test cases and test suites are finally implemented in this stage with the help of the following steps:

1. Finalize Implementation & Test Cases

2. Create Test Data

3. Check environment

4. Check test suites

5. Develop & prioritize test procedures

Test Execution: 

The test is finally executed on the software program while

following the steps:

1. Execute the test procedure as planned

2. Record the result

3. Compare the actual and expected result

4. Report discrepancy as an incident

5. Analyze incident for cause, and then retest

Evaluating exit criteria and reporting –

In this stage the evaluation of outcomes of the test implementation and execution stage to further decide the ways of testing as well as its closure and based on risk assessment the exit criteria are prepared, which work as a metric to determine the amount of testing needed in the product or project.

Some points to remember:

  • Check logs against Exit Criteria and compare them.
  • The team works together and decides if more tests needed or exit criteria need to be changed or not.
  • A test summary report is prepared after this stage which includes details about the whole testing process.

 Test Closure – 

The test closure is the last stage of any testing process and is initiated after the delivery of the software product. This stage of testing can also be started because of various other reasons like termination of the testing process due to cancellation of the project, targets not achieved, etc.

Seven Testing Principles

In this tutorial, we will learn about seven testing principles: testing shows the presence of defects, early screening, exhaustive testing is not possible, context-dependent testing, defect clustering, pesticide paradoxes, and absence of error.

Software Testing is a process to execute a program to find an error so that we can produce an error-free program as well as it should perform well. If testing is done successfully, then it will remove all the mistakes from the software.

In software testing, you must achieve the best results while conducting testing without changing the goal. But how a tester can determine that is following the right strategy for testing? For that, you need to follow some basic testing principles.

Some of the universal testing principles used in the software industry are but to understand this, let us consider one example:

To understand this, let us have an example of moving a file from folder X to folder Y.

So, think of all the possible ways you can test and also try to check the following conditions:

  •  I was trying to move the file from one folder to another when it is open.
  •  When Folder Y already has a file with the same name.
  •  When you do not have the security rights to paste the data in Folder Y.
  •  Folder Y is on a shared drive, and storage capacity is full.

If you were to test all possible combinations, project execution time & costs would rise exponentially. To achieve this, we need to follow some testing principles and strategies to optimize the testing effort:

 Defect Clustering – 

In defect clustering, during the testing, most of the defects found are related to a small number of modules within a system, i.e., a small number of modules containing most of the system’s flaws.

There can be multiple reasons for defect clustering like the modules may be involved, coding can be complicated, which are related to the blade.

Testing Shows Defects – 

The purpose of testing is to make the software fail, and screening reduces the presence of flaws or bugs. Testing an application can tell us one or more bugs present in the form, but it cannot prove that the use is error-free. So, it is essential to design test cases that find as many defects as possible. Every application is released into production after a sufficient amount of testing by different teams through different phases like User Acceptance Testing, Beta Testing, System Integration Testing, etc.

 Testing Is Context-Dependent – 

Testing is context-dependent, which means the testing approach depends on the software development context. We need different types of software that need to perform various kinds of testing. For example, screening as a banking application is different from testing any e-commerce application. The risk associated with each application type is different; thus, it is not useful to use the same method, technique, and testing type to test all application types.

 Early Testing – 

Early Testing means to find the software; the first test activity shall be started. The errors that are detected in the early phases of SDLC will be very less expensive. For better performance of software, the software testing will begin with the initial step, i.e., and testing will perform at the requirement analysis phase.

 Absence Of Error Fallacy – 

It built software is 99% bug-free, but it does not follow the user requirement; then, it is unusable. The software doesn’t have to be 99% bug-free, but it is also mandatory to fulfill all the customer requirements.

 Pesticide Paradox –

If the same kinds of tests repeated again and again, then the same set of test cases will no longer be able to find any new bugs and to overcome this issue it is essential to review the test cases regularly, and new and different tests need to be written to exercise different parts of the software.

Exhaustive Testing Is Not Possible – 

It is a process of testing the software’s functionality in all possible inputs and pre-conditions, which is known as thorough testing. Exhaustive testing means the software can never check at every test case, which means it can test only some test cases and assume that it is correct and will produce the correct output in every test case. If the software examines every test case, then it will take more cost, effort, etc., and which is impossible.

Test Process In Context

In this tutorial, we will learn about the test process in context-driven software testing. It advocates testing based on the context of the project.

Instead of going by books methodology testing or some fixed notion of best practices. Seven Basic Principle of Context-driven measurement given as The value of any method depends on its context.

 What is context-driven testing?

The context-driven testing concept is used for debugging and developing the computer software in which the programs will be used or expected to be used in the real world.

 To perform this testing, the software developers must identify the considered market and evaluate the environments in which people are likely to employ it. The context-driven testing is done with other types of conceptual testing in agile software development.

 Context-driven testing is different from other kinds of software testing that are more technical. For example, black-box testing and white box testing are two software testing methodologies that are different in terms of whether developers are looking at the product’s internal design.

 The context-driven testing methodology is similar to the agile process implemented when the end users have different preferences and needs; for instance, notepad is a simple application to write a text.

 The context-driven testers choose their testing objectives, techniques, and deliverables by looking into the specific situation’s details. Context-driven testing is about doing the best we can with what we get rather than applying best practices.

 Why do we need context-driven testing?

 Sometimes, the programmers do not have a proper document that can explain exactly how to do the work, which they are supposed to do, and testers will not be provided with complete materials; in that case, they will not be able to know the total requirement.

They may have an essential document like BRD or some reference documents that tell them what they need to do, but they can find the best way to achieve the task.

Techniques used in Context-Driven Testing are

Grey box testing

 Grey box testing is a software testing technique that combines the Black Box Testing technique and the White Box Testing technique. In the Black Box Testing technique, the tester is unknown to the item tested’s internal structure, and in White Box Testing, the internal structure is known to the examiner.

 Exploratory testing

It is a type of software testing where Test cases are not created in advance, but testers check the system on the fly. It may note down ideas about what to test before test execution. The focus of exploratory testing is more on trial as a “thinking” activity.

 Seven Basic Principles of Context Driven Testing

  •  In context-driven testing, there are good practices, but there are no best practices.
  •  Proper software testing is a challenging process.
  •  In context-driven testing, some projects unfold over time in ways that are often not predictable.
  •  Only through understanding and proper skills are exercised collectively throughout the entire project, then we can do the right things at the correct times to effectively test our products.
  •  The product is like a solution; if the problem is not solved, then the product will not work.
  •  People who are working together are an essential section of any project’s context.
  •  The value of any practice relies on its context.

Some of the Illustrations of Principles are:

  •  It is done on behalf of stakeholders in the service of developing, qualifying, investigating, selling, or debugging product. Different testing strategies are there for various objectives.
  •  Context Driven Testing is entirely for different test groups to have multiple missions.
  • The first practice in the service of one task may be irrelevant or counterproductive in the service of another.
  •  Testing groups are to provide testing-related services. They do not run the development project; they perform or assist the project.
  •  Test artifacts are worth as they satisfy the stakeholder’s relevant requirements.
  •  Automated testing is not automatic manual testing.
  •  Different types of tests will reveal different kinds of defects. Analyses should focus on various risks as the program becomes more stable.
  •  The value of testing can be determined when it provides useful and timely information.
  • Tester tries to understand the customer position and make the best case when they feel it is not addressing.
  •  Testing information providing solutions, not a quality assurance function.