This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
What is black box testing? By guessing the metaphorical meaning of black box testing, we can get something like the black box must be tested without opening it and we can't see through its surface. It also can be like what you put in the box (inputs) and what comes out of the box (outputs) but not what happens inside the box.
The definition of black box testing is "the verification of a software system based solely on requirements with no reference to its internal workings". Besides that, black box testing can also be known as functional or behavior testing, opaque testing and closed box testing.
There are many different types of black box testing strategy. These types are functional testing, stress testing, recovery testing, volume testing, user acceptance testing (UAT), system testing, sanity or smoke testing, load testing, usability testing, exploratory testing, ad-hoc testing, alpha testing, beta testing and others. All of these testing types can be separated into two groups.
The first group is testing in which user is not required. The testing in this group are functional testing, stress testing, load testing, ad-hoc testing, exploratory testing, usability testing, recovery testing and volume testing.
The second group is testing in which user plays as a tester. The testing in this group are user acceptance testing, alpha testing and beta testing.
Black box testing is necessary in order to buy a web-based system.
First and foremost, it is about the functional testing which means the web-based system is tested for the functional requirements. This test is needed because we want to ensure that the system works as what we have looked-for.
For examples, for the register function, when a new user enters and submits personal information and to test this, we need to make sure that all information can be stored properly and organized in the database system.
Another example is about the log in function. We need to check and test that the system to make sure it only allows valid logins and won't allow user with invalid username or password to login. This test can definitely help to avoid any error, fault or failure to be occurred.
Besides that, in interface testing, a web-based system definitely cannot function on its own so it needs to refer to many other external servers to obtain additional data, verifying data or fulfilling orders. The interface between the browser and the server should be tested first.
For example, in transactions function, we should attempt it then go through the server logs and make verification on what has been seen in the browser is really happening on the server. Running queries on the database is also a good way to ensure transaction data is being stored properly.
External interfaces exist in some web systems. For instance, credit card transactions are verified real-time by a merchant in order to reduce fraud. Test transactions need to be send using web interface.
All credit cards that are valid, invalid, and stolen should be tried. Try using a Discover card if the merchant only takes Visa and MasterCard. The objective of this is generally to make sure that every possible message returned by the external server can be handled by the software.
In addition, the next testing will be the usability testing. Usability testing is also known as "Testing for User-Friendliness". It is used to measures the usability of the system that include learnability, efficiency, memorability, errors and satisfaction, by testing it on users. The few techniques that used to gather data during this usability test are think aloud (talk while doing the job), talk right after (direct observation), Co-discovery Learning and eye tracking.
For learnability, the user interface is quite important because by verify and make sure the site is easy to use, and then this can definitely lead to the increase of the number of visitors no matter how young or how old they are.
For instance, we can also check whether there is a site map, consistent navigation bar or breadcrumbs available in every page to help to guide the users and make sure them won't get lost easily.
For efficiency, it is used to measure and test of how fast users can perform and complete their tasks or goals using the web system. The users do not need to enter the personal information all over again whenever they want to buy items at the website as long as users have registered by entering all the information needed and they have been saved in the web-based system's database.
For memorability, we should test on how easily the users can re-establish proficiency after a long time not using the system. For errors, we use this to check on how many errors and how serious of these errors occurred that users have made and how easily the users can recover from the errors.
For satisfaction or appeal, it's about the content of the web system, we have to check and ensure the website looks professional and not overdoing it. Besides, we should make sure the presentation of the website will not be in an unpleasant way as it is overwhelmed with extra big fonts, bold texts, different fonts or font sizes in one short page.
The colors and backgrounds also necessary for us to check before you buy a web-based system. Users are actually more focus or interested on the functionality but not the colorful background or texts. This not only cannot satisfy the user needs but it also may annoy and irritate the user as well.
Furthermore, the next one is about the performance testing. Performance testing is a technique to ascertain and test on how fast some facet of web system performs under a particular workload.
For example, placing images at the website are sometimes useful and it can help to show and inform users something more easily than using just words. But we also need to consider if the picture or image that we used for this purpose will waste the bandwidth and even slowing down the page's loading time. This is because by having a rapid speed loading website, the time and chance of users stay in this website will be increasing for sure.
Load testing is process of testing against heavy load or inputs to determine the maximum operating capacity and what actually cause the performance to degrade. Stress testing is used to test against heavy load like complex and large number of inputs, queries or numbers to examine and identify the stress or load the applications can withstand. Most of this test is carried out beyond normal operational capacity.
In terms of load and stress, it is important to make sure that the system has the ability to manage a big amount of users at a time, the huge amount of pouring-in data from each and every user and a long continuous usage.
Last but not least, it is very important to keep the system accessible to users at all times. They would turn to the competitors instead when they get busy signals. Besides checking the system to ensure accessibility by customers, crackers may try to overload the system to access it. Therefore, it is a must that the systems know how to react when such cases happen instead of just failing down.
When certain competition is held, swarm of users will attempt to access the system when the results are posted. To simulate such crowd of users at a time, a load test tool could be used.
When dealing with huge data amount from every user, for instance, an online bookstore which limit up to 5 books per purchase, encountered flooding orders of thousands of different books from a university or perhaps on request of customers to deliver gifts to 100 different recipients with each of their corresponding mailing addresses. The question is does the system have the ability to handle such stress of incoming data from just one user?
Then it comes to the ability of the system to withstand long period and continuous usage. A site providing flower delivery services would have to be able to keep running during Mother's Day. For web-based email service providers, the system has to be tough enough to run for years without malfunctioning. As these condition are way upon reach of manual solution, an automated test tool can be use to implement these tests. The worthwhileness of such implementation will very soon be testified once it is put into regular use. It's just as simple as a click to start running the test once the tool is all set up and ready to go.
There are few advantages of this black box testing. First of all, black box testing will let us perform almost all the testing classes and most of them can be carried out solely by black box tests.
For test classes that can be done by both black box and white box testing, black box testing actually needs fewer resources if compared to white box testing. Next, we can start designing the test cases once the specifications are ready and complete.
Besides that, black box testing is not done from the standpoint of the designer but is from the user. Any professional developer or expert is not needed and knowledge of any specific programming languages is also unnecessary in order to perform this test. Therefore, it can help to save money and carry out even more tests.
On the other hand, one of the main disadvantages of this black box testing is the difficulty of test cases design is quite high if the specifications are ambiguous, inaccurate or incomplete.
Moreover, it is impossible to test all the possible inputs as it would be take a very long time or nearly forever to test all those inputs. Therefore, this may leads to many untested program paths. The redundancy of tests would be happen also. So there would be some code paths that are not tested at all whereas the others can get tested again and again.
To cut a long story short, black box and white box testing are equally important and they are both required for a complete software testing.