What are the software testing techniques




















This software testing method divides the input domain of a program into classes of data from which test cases should be designed. The concept behind this technique is that test case of a representative value of each class is equal to a test of any other value of the same class. It allows you to Identify valid as well as invalid equivalence classes. A decision table is also known as to Cause-Effect table. This software testing technique is used for functions which respond to a combination of inputs or events.

For example, a submit button should be enabled if the user has entered all required fields. The first task is to identify functionalities where the output depends on a combination of inputs. If there are large input set of combinations, then divide it into smaller subsets which are helpful for managing a decision table.

For every function, you need to create a table and list down all types of combinations of inputs and its respective outputs. This helps to identify a condition that is overlooked by the tester. Following are steps to create a decision table:. Example : A submit button in a contact form is enabled only when all the inputs are entered by the end user. This testing technique allows the tester to test the behavior of an AUT. The tester can perform this action by entering various input conditions in a sequence.

In State transition technique, the testing team provides positive as well as negative input test values for evaluating the system behavior. In the following example, if the user enters a valid password in any of the first three attempts the user will be able to log in successfully. If the user enters the invalid password in the first or second try, the user will be prompted to re-enter the password. A test to ascertain if the software works according to its design specifications and requirements.

Unlike System Testing that checks everything, this testing is normally concerned with the output of the system, not minding the inputs and processes carried out.

The user is the most important element in the development of any software. This test examines how human factors and the user interface agrees with end-users. It looks are the processes and steps required to carry out tasks and analyzes how effective, intuitive and easy those steps are. For example, suppose a user uses the camera phone and each time the system asks where to save the file internal or external memory.

This could be looked at as inefficient. Instead, the user could set the default storage location and not have to indicate such each time the camera is used. Regression testing ensures that new versions or upgrades have not created problems for other areas previously working okay.

The test is carried out using previous test cases and the new results compared to previous results. Security testing looks for loopholes, defects and vulnerabilities in the system that can expose the software to such threats. A test carried out with no documentation or planning given. It is usually carried out randomly without any pre-defined process or intention. The goal is to identify defects and break the application by either executing the flow or a random functionality.

A testing that ensures that the ideals of agile software development are adhered to according to their Manifesto. This is testing of the entire system by persons who have no idea about the design, structure and implementation of the software. This is similar to Black Box testing except that the design, structure and implementation of the software are known to the tester.

Some parts of the design, structure and implementation of the item are known to the tester and some are not. Is Your Application Secure? Talk to our experts Now. Prototype development could be an extra overhead in such projects and may need lot of extra efforts. Software prototyping is used in typical cases and the decision should be taken very carefully so that the efforts spent in building the prototype add considerable value to the final software developed.

The model has its own pros and cons discussed as follows. Testing is executing a system in order to identify any gaps, errors, or missing requirements in contrary to the actual requirements.

This tutorial will give you a basic understanding on software testing, its types, methods, levels, and other related terminologies. In the IT industry, large companies have a team with responsibilities to evaluate the developed software in context of the given requirements. Moreover, developers also conduct testing which is called Unit Testing. However diagnosing and fixing the errors identified during proper testing is a time-consuming but productive activity.

Test automaton should be started when the software has been manually tested and is stable to some extent. Moreover, test automation can never be used if requirements keep changing. In simple words, testing is executing a system in order to identify any gaps, errors, or missing requirements in contrary to the actual requirements.

It depends on the process and the associated stakeholders of the project s. It is not possible to test the software at any time during its cycle. The next two sections state when testing should be started and when to end it during the SDLC. An early start to testing reduces the cost and time to rework and produce error-free software that is delivered to the client. It also depends on the development model that is being used. How a software application shapes up during the development process entirely depends on the how the software engineering team organizes work and implements various methodologies.

For an application to develop properly, it is important that all processes incorporated during the software development are stable and sustainable.

Many times developers come under pressure as the delivery date approaches closer this often affects the quality of the software. Rushing through the processes to finish the project on time will only produce a software application which has no or minimal use for the customers.

Hence, work organization and planning is important and sticking to the plan is very important. The project manager should ensure that there are no obstacles in the development process and if at all there is an issue it must be resolved with immediate attention.

How soon and how well you can achieve your testing goals depends solely on the capabilities of the testing team. Within the testing team itself it is important to have the correct blend of testers who can efficiently work together to achieve the common testing goals. While forming a team for testing, it is important to ensure that the members of the team jointly have a combination of all the relevant domain knowledge that is required to test the software under development. It is very important to ensure that the software testing team has a proper structure.

The hierarchy and roles should be clearly defined and responsibilities too should be well defined and properly distributed amongst the team members. When the team is well organized the. If every team member knows what duties he or she has to perform then they will be able to finish their duties as required well within the time limit.

It is very important to check what kind of defects the tester is able to uncover and what kind of detects he tends to miss.

This will give you a fair idea about how serious your team is about the work. All the team members should work together to prepare a document that clearly defines the roles and responsibilities of all the team members. Once the document is prepared the role of each member should be communicated clearly to everyone. Once the team members are clear about who is going to handle which area of the project, then in case of any issue it will be easy to determine who needs to be contacted.

Each member of the team should be provided with the necessary documents that provide information on how the task would be organized, what approach will be followed, how things are scheduled, how many hours have been allocated to each member and all details related to applicable standards and quality processes.

A Software tester software test engineer should be capable of designing test suites and should have the ability to understand usability issues. Such a tester is expected to have sound knowledge of software test design and test execution methodologies.

It is very important for a software tester to have great communication skills so that he can interact with the development team efficiently. The roles and responsibilities for a usability software tester are as follows:. A Software Tester is responsible for designing testing scenarios for usability testing. He is responsible for conducting the testing, thereafter analyze the results and then submit his observations to the development team. He may have to interact with the clients to better understand the product requirements or in case the design requires any kind of modifications.

Software Testers are often responsible for creating test-product documentation and also has to participate in testing related walk through. A software tester has different sets of roles and responsibilities. He should have in depth knowledge about software testing. He should have a good understanding about the system which means technical GUI or non-GUI human interactions as well as functional product aspects.

In order to create test cases it is important that the software tester is aware of various testing techniques and which approach is best for a particular system. He should know what are various phases of software testing and how testing should be carried out in each phase.

The responsibilities of the software tester include:. Creation of test designs, test processes, test cases and test data. Carry out testing as per the defined procedures. Participate in walkthroughs of testing procedures. Prepare all reports related to software testing carried out. Ensure that all tested related work is carried out as per the defined standards and procedures.

The company expects the test manager to know testing methodologies in detail. A test manager has to take very important decisions regarding the testing environment that is required, how information flow would be managed and how testing procedure would go hand in hand with development. He should have sound knowledge about both manual as well as automated testing so that he can decide how both the methodologies can be put together to test the software.

He should be good at project planning, task and people coordination, and he should be familiar with various types of testing tools. Many people get confused between the roles and responsibilities of a test manager and test lead. For a clarification, a test lead is supposed to have a rich technical experience which includes, programming, handling database technologies and various operating systems, whereas he may not be as strong as Software Test Manager regarding test project management and coordination.

The responsibilities of the test manager are as follows:. Since the test manager represents the team he is responsible for all interdepartmental meetings. Interaction with the customers whenever required. A test manager is responsible for recruiting software testing staff. He has to supervise all testing activities carried out by the team and identify team members who require more training. Schedule testing activities, create budget for testing and prepare test effort estimations.

Selection of right test tools after interacting with the vendors. Integration of testing and development activities. Carry out continuous test process improvement with the help of metrics. Check the quality of requirements, how well they are defined. Trace test procedures with the help of test traceability matrix. Software test automator or an automated test engineer should have very good understanding of what he needs to test- GUI designs, load or stress testing.

He should be proficient in automation of software testing, and he should be able to design test suites accordingly. A software test automator should be comfortable using various kinds of automation tools and should be capable of upgrading their skills with changing trends. He should also have programming skills so that he is able to write test scripts without any issues. The responsibilities of a tester at this position are as follows:. He should be able to understand the requirement and design test procedures and test cases for automated software testing.

Design automated test scripts that are reusable. Ensure that all automated testing related activities are carried out as per the standards defined by the company. Interactions between Software Test Team And Business Teams If at all a customer has any issues related to testing activities and operational matters of the project then it is the software testing manager who is responsible for communicating the details to the client regarding how things are being managed.

The software testing manager. Interactions between Software Test Team And Development Teams In order to produce good software applications, it is important that software testing and software development teams work together with good understanding. A good communication skill is very important both for testers and developers. Before getting started with testing work it is important to discuss the basic guidelines and expectations so that there is no confusion in later stages.

Criticism should be taken in a positive sense. It is important to understand that developers and testers have a common goal of producing high quality software. A tester is not discovering bugs to show someone down, the idea is to learn from mistakes and avoid repeating them in future.

A culture of constructive criticism can be of great help. Interactions between Software Test Team And Release Management Teams The release management teams are responsible for moving the software from development into production. This team is responsible for planning the releases for hardware, software and testing.

It is also responsible for development of software development procedures and for coordinating interactions and training of releases. Software testing is considered to be a very important aspect of software engineering life cycle but it does not get over with development.

Testing and verification is a very important part of release management exercise. He has to recruit testing team and take responsibility for getting them trained. A software manager has to perform ongoing analysis of various testing processes and ensure that the testing team is carrying out all the processes correctly. This job is of great responsibility as the software testing manager is the one who selects, introduces and implement various tools for testing.

A software test manager is responsible for finalizing templates for testing documents, test reports and other procedures. Since a software tester manager has to deal with all the details of various testing activities, it is very important for him to be in constant touch with the project manager and provide necessary support in project planning and scheduling so that the project can be successfully completed in time within the specified financial budget limits.

These two terms are very confusing for most people, who use them interchangeably. The following table highlights the differences between verification and validation.

Verification Validation. Software testing is a procedure of implementing software or the application to identify the defects or bugs. For testing an application or software, we need to follow some principles to make our product defects free, and that also helps the test engineers to test the software with their effort and time. Here, in this section, we are going to learn about the seven essential principles of software testing.

While doing testing, we can only identify that the application or software has any errors. The primary purpose of doing testing is to identify the numbers of unknown bugs with the help of various methods and testing techniques because the entire test should be traceable to the customer requirement, which means that to find any defects that might cause the product failure to meet the client's needs.

By doing testing on any application, we can decrease the number of bugs, which does not mean that the application is defect-free because sometimes the software seems to be bug- free while performing multiple types of testing on it. But at the time of deployment in the production server, if the end-user encounters those bugs which are not found in the testing process. Sometimes it seems to be very hard to test all the modules and their features with effective and non- effective combinations of the inputs data throughout the actual testing process.

Hence, instead of performing the exhaustive testing as it takes boundless determinations and most of the hard work is unsuccessful.

So we can complete this type of variations according to the importance of the modules because the product timelines will not permit us to perform such type of testing scenarios. Here early testing means that all the testing activities should start in the early stages of the software development life cycle's requirement analysis stage to identify the defects because if we find the bugs at an early stage, it will be fixed in the initial stage itself, which may cost us very less as compared to those which are identified in the future phase of the testing process.

To perform testing, we will require the requirement specification documents; therefore, if the requirements are defined incorrectly, then it can be fixed directly rather than fixing them in another stage, which could be the development phase.

The defect clustering defined that throughout the testing process, we can detect the numbers of bugs which are correlated to a small number of modules. We have various reasons for this, such as the modules could be complicated; the coding part may be complex, and so on.

These types of software or the application will follow the Pareto Principle, which states that we can identify that approx. Eighty percent of the complication is present in 20 percent of the modules. With the help of this, we can find the uncertain modules, but this method has its difficulties if the same tests are performing regularly, hence the same test will not able to identify the new defects.

This principle defined that if we are executing the same set of test cases again and again over a particular time, then these kinds of the test will not be able to find the new bugs in the software or the application. To get over these pesticide paradoxes, it is very significant to review all the test cases frequently.

And the new and different tests are necessary to be written for the implementation of multiple parts of the application or the software, which helps us to find more bugs. Testing is a context-dependent principle states that we have multiple fields such as e- commerce websites, commercial websites, and so on are available in the market. There is a definite way to test the commercial site as well as the e-commerce websites because every application has its own needs, features, and functionality.

To check this type of application, we will take the help of various kinds of testing, different technique, approaches, and multiple methods. Therefore, the testing depends on the context of the application.

Once the application is completely tested and there are no bugs identified before the release, so we can say that the application is 99 percent bug-free. But there is the chance when the application is tested beside the incorrect requirements, identified the flaws, and fixed them on a given period would not help as testing is done on the wrong specification, which does not apply to the client's requirements.

The absence of error fallacy means identifying and fixing the bugs would not help if the application is impractical and not able to accomplish the client's requirements and needs. UNIT II: Understanding the foundations, techniques, and tools in the area of software testing and its practice in the industry.

The purpose is to check whether the software satisfies the specific requirements, needs and expectations of the customer. It creates a structure for the developer to design, create and deliver high quality software according to the requirements of customer or end user.

The outcome of one phase acts as the input for the next phase sequentially. Here, the specifications of the input and output or the final product are studied and marked. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture. The software code to be written in the next stage is created now.

Each unit is developed and tested for its functionality which is referred to as Unit Testing. The software designed, needs to go through constant Software testing to find out if there are any flaws and errors. Testing is done so that the client does not face any problem during the installation of the software. These modifications arise either due to change requests initiated by the customer, or defects uncovered during live use of the system.

The client is provided with regular maintenance and support for the developed software. It allows for incremental releases of the product, or incremental refinement through each iteration around the spiral. It includes estimating the cost, schedule and resources for the spirals.

As the product matures, identification of system requirements and unit requirements are all done in this phase. Once the risks are identified, risk mitigation strategy is planned and finalized. Actual development and testing of the software takes place in this phase. It includes testing, coding and deploying software at the customer site. It is also known as Verification and Validation Model. V- Model is an extension of the Waterfall Model and is based on association of a testing phase for each corresponding development stage.

This phase involves detailed communication with the customer to understand their expectations and exact requirement. They figure out possibilities and techniques by which the user requirements can be implemented. System design comprises of understanding and detailing the complete hardware and communication setup for the product under development.

System test plan is developed based on the system design. This phase focuses on system architecture and design. An integration test plan is created in order to test the pieces of the software systems ability to work together. In this phase the actual software components are designed. It defines the actual logic for each and every component of the system. The designed system is broken up into smaller units or modules and each of them is explained so that the programmer can start coding directly.

The following are the typical phases of validation in the V-Model. Unit testing is the testing at code level and helps eliminate bugs at an early stage.

A unit is the smallest entity which can independently exist, e. These tests verify that units created and tested independently can coexist and communicate among themselves within the system. System Test ensures that expectations from application developed are met. The whole application is tested for its functionality, interdependency and communication.

User acceptance testing: Acceptance testing is associated with the business requirement analysis phase and involves testing the product in user environment. It is a term used in a variety of contexts, including semantics, design, electronics, and software programming.

The interactions with prototype can enable the client to better understand the requirements of the desired system. The prototype is usually not complete systems and many of the details are not built in the prototype. The goal is to provide a system with overall functionality. The purpose of software testing is to identify errors, gaps or missing requirements in contrast to actual requirements.

This tutorial introduces testing software to the audience and justifies its importance. It gives no idea about defects still uncovered. Testing cannot guarantee that the system under test is error free. Locating root causes of failures can help us in preventing injection of such faults in future. Integration testing An integration testing focuses on the construction and design of the software. Validation testing Check all the requirements like functional, behavioral and performance requirement are validate against the construction software.

System testing System testing confirms all system elements and performance are tested entirely. It's a primary requirement needed in the development of a software product.

These requirements works as a base and is being used in developing a particular software product to perform specifically for a targeted group or audience and for the specific environment. Basically, these requirements imparts the appearance or an overview of a desired software product such as how will it look its functionality, features, how it should perform, etc. Therefore, there exists a separate phase in a SDLC to gather, study and analyse the software requirements so as to avoid such type of circumstances.

Further, these requirements may also be categorized into multiple types, based on different perspective. These requirements are specified from the business point of view. It generally involves the specified objectives and goals of a particular project that needs to be fulfilled.

It provides an abstract of a project. It generally involves the participation of the client, stakeholders, business and project managers for gathering and analyzing the business requirements. Through business requirements, it is easy to assess the project cost, time required, business risks involved and many such things associated with a software development project.

These system requirements may be broadly classified in two types functional requirements and non-functional requirements. Requirements encompassing the functional attributes and behaviour of a software product are called functional requirements. These requirements reflect the working and functionalities of an intended software product. These requirements defines and describes the functions to be performed, and features to be possessed by a software product.

What and how does a product supposed to perform on accepting inputs from the user, and what desirable output it should provide to the users. These requirements should be complete and clearly well-defined so as to meet all the specified feature and functionalities without misunderstanding or leaving the requirement so as to achieve a desirable quality product. Requirements other than functional requirements which are essential and contribute towards the performance of a software product under variant type of conditions and multiple environments are commonly known as Non-functional requirements.

These requirements are used to evaluate and assess the software product behaviour other than its specific or desired behaviour under unexpected conditions and environment, contrary to what is favourable for its functioning. It also covers the standards, rules and regulation that a software product must adhere and conform to it. These requirements are accountable for system's performance and quality and, generally cover the following requirements and attributes:.

As there is no a specific criterion or rule to assess these non-functional aspects, it becomes a tedious job to verify these attributes of a software product. Hence, it requires the usage of metrics to validate a software product, quantitatively against these requirements. Further, these requirements are documented in the form of Software Requirement Specification SRS by the project manager, which works as a manual for the development team to proceed the development process in a particular and correct direction.

Requirements generated from a users point of view and scenarios of using a software product in a multiple manner under real environment by a targeted user to execute a particular task, specifies the user requirements. It defines the user's expectation from a software product.

These types of requirements are generally gathered and documented using use cases, user scenarios, and user stories. Functional Requirements: These are the requirements that the end user specifically demands as basic facilities that the system should offer.

All these functionalities need to be necessarily incorporated into the system as a part of the contract. These are represented or stated in the form of input to be given to the system, the operation performed and the output expected.

They are basically the requirements stated by the user which one can see directly in the final product, unlike the non-functional requirements. Non-functional requirements: These are basically the quality constraints that the system must satisfy according to the project contract. The priority or extent to which these factors are implemented varies from one project to other.

They are also called non- behavioral requirements. A non-functional requirement defines A functional requirement defines a the quality attribute of a software system or its component.

Non-functional requirement is specified by technical peoples e. Architect, Functional requirement is specified by Technical leaders and software User. It is captured in use case.

It is captured as a quality attribute. Functional Requirements Non Functional Requirements. Helps you verify the functionality of Helps you to verify the performance of the software. They help clearly define the expected system service and behavior. Software Testing Review process:.

A software review is a process or meeting during which a software product is examined by a project personnel, users, computers, user representatives, or other interested parties for comment or approval. It is very clear from the above definition that a software review is as essential as software testing. A software review has its own significance as it provides a better view on the developed software. It requires a team that can provide insights of the build software.

In the review, various things come to surface such as future casualties, technical content, quality, specifications of the software, etc.

This deep overview of a software gives an idea that how will the software run and is shortcomings that are likely to occur in the near future. It also provides an idea that this software is even worth launching. Sometimes, the software has fewer benefits and greater number of disadvantages falling, in this condition the software is discarded or a better development of better software is proposed.

The value of the software is defined by the reviews. The qualified team looks over the software as per the guidelines provided to them. The specifications and standards are kept in mind while reviewing build software. It is a healthy form of discussion between the people who are in direct developers of the authors as well as the staff associated. Software Peer Reviews: This type of review is conducted by the main author of the software, or it can be between the colleagues so that the evaluation can be done of the technical content or quality of the work.

A discussion is always a solution for a software analysis. Aforementioned, it always provides a deeper insight of the software shortcomings and also its benefits. If the software shortcoming weigh higher than benefits, the software goes in testing mode again and it rectified as required. Different types of Software Peer Reviews are there which are enumerated below:.

There can be a number of reviewers involved in this type of reviewing. Software Management Reviews: The management representatives are responsible for this type of review. The status of the work is evaluated and the decision by the activities of the software.

This review is very important in making a decision regarding software. Software Audit Reviews: These are conducted by the personnel outside of the software project. They evaluate the software with specifications, standards, and other criteria. All the reviews are important to make software run successfully. Formal code reviews require a huge amount of investment of the time and the preparation of the review.

Internal disputes also may carry leverage on these reviews. It is a time taking process and it may not be that accurate. There are certain guidelines that a person has to follow to perform a perfect review on build software. We have various types of testing available in the market, which are used to test the application or the software. The process of checking the functionality of an application as per the customer needs without taking any help of automation tools is known as manual testing.

While performing the manual testing on any application, we do not need any specific knowledge of any testing tool, rather than have a proper understanding of the product so we can easily prepare the test document. Automation testing is a process of converting any manual test cases into the test scripts with the help of automation tools, or any programming language is known as automation testing.

With the help of automation testing, we can enhance the speed of our test execution because here, we do not require any human efforts. We need to write a test script and execute those scripts. The box testing approach of software testing consists of black box testing and white box testing. We are discussing here white box testing which also known as glass box is testing, structural testing, clear box testing, open box testing and transparent box testing.

It tests internal coding and infrastructure of a software focus on checking of predefined inputs against expected and desired outputs.

It is based on inner workings of an application and revolves around internal structure testing. In this type of testing programming skills are required to design test cases. The primary goal of white box testing is to focus on the flow of inputs and outputs through the software and strengthening the security of the software.

The term 'white box' is used because of the internal perspective of the system. The clear box or white box or transparent box name denote the ability to see through the software's outer shell into its inner workings.

Developers do white box testing. In this, the developer will test every line of the code of the program. The developers perform the White-box testing and then send the application or the software to the testing team, where they will perform the black box testing and verify the application along with the requirements and identify the bugs and sends it to the developer.

The developer fixes the bugs and does one round of white box testing and sends it to the testing team. Here, fixing the bugs implies that the bug is deleted, and the particular feature is working fine on the application.

Therefore, the test engineer should always find the bugs, and developers should still be doing the bug fixes. In the path testing, we will write the flow graphs and test all independent paths.

Here writing the flow graph implies that flow graphs are representing the flow of the program and also show how every program is added with one another as we can see in the below image:. And test all the independent paths implies that suppose a path from main to function G, first set the parameters and test if the program is correct in that particular path, and in the same way test all other paths and fix the bugs.

In the loop testing, we will test the loops such as while, for, and do-while, etc. We cannot test this program manually for all the 50, loops cycle.

So we write a small program that helps for all 50, cycles, as we can see in the below program, that test P is written in the similar language as the source code program, and this is known as a Unit test.

And it is written by the developers only. As we can see in the below image that, we have various requirements such as 1, 2, 3, 4. And then, the developer writes the programs such as program 1,2,3,4 for the parallel conditions. Here the application contains the s line of codes. The developer will do the white box testing, and they will test all the five programs line by line of code to find the bug.

If they found any bug in any of the programs, they will correct it. And they again have to test the system then this process contains lots of time and effort and slows down the product release time.

Now, suppose we have another case, where the clients want to modify the requirements, then the developer will do the required changes and test all four program again, which take lots of time and efforts. In this, we will write test for a similar program where the developer writes these test code in the related language as the source code. Then they execute these test code, which is also known as unit test programs.



0コメント

  • 1000 / 1000