Testing a software




















Save Article. Like Article. Previous Types of Software Testing. Next Software Engineering Seven Principles of software testing. Recommended Articles. Article Contributed By :. Easy Normal Medium Hard Expert. Writing code in comment? Please use ide. Load Comments. What's New. Most popular in GBlog. Top 10 Programming Languages to Learn in Web 1. Most visited in Software Engineering.

Most testing is done in this fashion because it is largely unbiased. Real white-box testing is when you understand some of the internals of the system and perhaps have access to the actual source code , which you use to inform your testing and what you target. With white-box testing , you have at least some idea of what is going on inside the software. Oftentimes, unit testing is called white-box testing, but I disagree. Unit testing is not testing at all.

Advantages Disadvantages Discovering of hidden bugs more efficiently Tester needs to have coding knowledge Code will be optimized Code access required Fast problem and bug spotting Focus on existing software, missing functionality may not be discovered. The basic idea of acceptance testing is that you have some tests which test the actual requirements or expectations of the customer, and other tests that run against the system as a whole.

This kind of testing could be testing the functionality of the system or it could be testing the usability or both. Automated testing is any testing in which the execution of the test and the verification of the results is automated. So, you might automate the testing of a web application by running scripts which open up a web page, input some data, push some buttons and then check for some results on a page. You could also automate the testing of an API by writing scripts which call out to the API with various data and then check the results that are returned.

More and more of testing is moving towards automated testing because manually running through test cases over and over again can be tedious, error-prone and costly—especially in an Agile environment where the same set of tests may need to be run every two weeks or so to verify nothing has broken. This brings us to regression testing, which is basically testing done to verify that the system still works the way it did before.

This is extremely important with Agile development methodologies where software is developed incrementally and there is a constant potential that adding new features could break existing ones. In fact, you could really make the argument that all automated tests are regression tests since the whole purpose of automating a test is so that it can be run multiple times. Functional testing is another broad term used in the testing world to refer to testing activities where what is being tested is the actual functionality of the system.

So, functional testing is the kind of testing where you are really concerned with the system doing what it is supposed to do from a functional perspective. But, there is definitely some legitimacy to the idea of exploratory testing and perhaps I am a bit too harsh and judgmental. The idea behind exploratory testing—when done correctly—is that you have some guidelines and a basic plan of which application areas you are going to test and ways you are going to test them.

Then, you go about without actual test cases and explore the application, looking for things that might be wrong or behavior that is unexpected. Oftentimes, exploratory testing sessions are recorded, so that if an error is found, the problem can be reproduced by retracing the steps taken by the exploratory tester.

Different organizations are going to have very different ideas of how testing should be done and what process should be followed. So, again, like a large amount of what I said about testing, the idea here is not to be prescriptive or to perfectly model the perfect testing process, but rather to give you an idea of what the testing process is like in general and what it entails. These are all questions that are generally answered in the test plan, or if the test plan is not a formal document, the test planning for a project.

Next, the tests are usually designed at a high level based on the requirements or functionality of the system. At this stage, a tester might be coming up with a list of general test cases which will be run, what kinds of conditions will be tested, and coming up with what will be needed to perform the tests. The results from the test execution are recorded and evaluated and any bugs or defects are usually logged into some kind of bug tracking system.

Fixed bugs are retested and this cycle continues until the software meets the quality standards criteria for a shippable code. Plan how to test, design the tests, write the tests, execute the tests, find bugs , fix bugs , release software. The standard process of testing tends to run into some problems on Agile teams where new features are being coded and implemented every couple of weeks or so. Many teams try to either strictly follow the standard testing process or completely throw it out the window instead of working it into the Agile testing lifecycle of software development process.

White-box testing is the detailed investigation of internal logic and structure of the code. White-box testing is also called glass testing or open-box testing.

In order to perform white-box testing on an application, a tester needs to know the internal workings of the code. Grey-box testing is a technique to test the application with having a limited knowledge of the internal workings of an application. In software testing, the phrase the more you know, the better carries a lot of weight while testing an application.

Mastering the domain of a system always gives the tester an edge over someone with limited domain knowledge. Unlike black-box testing, where the tester only tests the application's user interface; in grey-box testing, the tester has access to design documents and the database.

Having this knowledge, a tester can prepare better test data and test scenarios while making a test plan. The following table lists the points that differentiate black-box testing, grey-box testing, and white-box testing.

There are different levels during the process of testing. In this chapter, a brief description is provided about these levels. Levels of testing include different methodologies that can be used while conducting software testing. This is a type of black-box testing that is based on the specifications of the software that is to be tested. The application is tested by providing input and then the results are examined that need to conform to the functionality it was intended for.

Functional testing of a software is conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements. An effective testing practice will see the above steps applied to the testing policies of every organization and hence it will make sure that the organization maintains the strictest of standards when it comes to software quality.

This type of testing is performed by developers before the setup is handed over to the testing team to formally execute the test cases. Unit testing is performed by the respective developers on the individual units of source code assigned areas. The developers use test data that is different from the test data of the quality assurance team. The goal of unit testing is to isolate each part of the program and show that individual parts are correct in terms of requirements and functionality.

Testing cannot catch each and every bug in an application. It is impossible to evaluate every execution path in every software application. The same is the case with unit testing. There is a limit to the number of scenarios and test data that a developer can use to verify a source code. After having exhausted all the options, there is no choice but to stop unit testing and merge the code segment with other units.

Integration testing is defined as the testing of combined parts of an application to determine if they function correctly. Integration testing can be done in two ways: Bottom-up integration testing and Top-down integration testing. This testing begins with unit testing, followed by tests of progressively higher-level combinations of units called modules or builds. In this testing, the highest-level modules are tested first and progressively, lower-level modules are tested thereafter.

In a comprehensive software development environment, bottom-up testing is usually done first, followed by top-down testing. The process concludes with multiple tests of the complete application, preferably in scenarios designed to mimic actual situations.

System testing tests the system as a whole. Once all the components are integrated, the application as a whole is tested rigorously to see that it meets the specified Quality Standards. This type of testing is performed by a specialized testing team. System testing is the first step in the Software Development Life Cycle, where the application is tested as a whole. The application is tested thoroughly to verify that it meets the functional and technical specifications.

The application is tested in an environment that is very close to the production environment where the application will be deployed. System testing enables us to test, verify, and validate both the business requirements as well as the application architecture. Whenever a change in a software application is made, it is quite possible that other areas within the application have been affected by this change. Regression testing is performed to verify that a fixed bug hasn't resulted in another functionality or business rule violation.

The intent of regression testing is to ensure that a change, such as a bug fix should not result in another fault being uncovered in the application. Testing the new changes to verify that the changes made did not affect any other area of the application. The QA team will have a set of pre-written scenarios and test cases that will be used to test the application. More ideas will be shared about the application and more tests can be performed on it to gauge its accuracy and the reasons why the project was initiated.

Acceptance tests are not only intended to point out simple spelling mistakes, cosmetic errors, or interface gaps, but also to point out any bugs in the application that will result in system crashes or major errors in the application. By performing acceptance tests on an application, the testing team will reduce how the application will perform in production.

There are also legal and contractual requirements for acceptance of the system. This test is the first stage of testing and will be performed amongst the teams developer and QA teams. Unit testing, integration testing and system testing when combined together is known as alpha testing. The Application will be tested on machines with the lowest specification to test loading times and any latency problems.

This test is performed after alpha testing has been successfully performed. In beta testing, a sample of the intended audience tests the application.

Beta testing is also known as pre-release testing. Beta test versions of software are ideally distributed to a wide audience on the Web, partly to give the program a "real-world" test and partly to provide a preview of the next release.

Getting the feedback, the project team can fix the problems before releasing the software to the actual users. The more issues you fix that solve real user problems, the higher the quality of your application will be. Having a higher-quality application when you release it to the general public will increase customer satisfaction. This section is based upon testing an application from its non-functional attributes. Non-functional testing involves testing a software from the requirements which are nonfunctional in nature but important such as performance, security, user interface, etc.

It is mostly used to identify any bottlenecks or performance issues rather than finding bugs in a software. Performance testing can be either qualitative or quantitative and can be divided into different sub-types such as Load testing and Stress testing. It is a process of testing the behavior of a software by applying maximum load in terms of software accessing and manipulating large input data. It can be done at both normal and peak load conditions.

This type of testing identifies the maximum capacity of software and its behavior at peak time. Virtual users VUsers are defined in the automated testing tool and the script is executed to verify the load testing for the software. The number of users can be increased or decreased concurrently or incrementally based upon the requirements.

Stress testing includes testing the behavior of a software under abnormal conditions. For example, it may include taking away some resources or applying a load beyond the actual load limit.



0コメント

  • 1000 / 1000