In: Computer Science
The objective of this assignment is to look at two aspects of testing, one is an exploration of the theory of testing, the second is the exploration of a practical software tool.
You should pick a specific topic in software testing and explore it in a bit of detail, issues you could look at include: Functional testing, Compatibility testing, Static testing, Dynamic testing, White box testing, Black box testing, Grey box testing, Visual testing, Unit testing, Integration testing, Regression testing, Alpha testing, Beta testing, Usability testing, Certification, etc. or whatever you want.
Write between one page and one and a half pages on the topic, and include at least four references you use - this can be websites, papers, videos or books. Use the six thinking hats as a model for the structure of the article you write so do an Introduction Section (blue hat), some facts and details about the topic (white hat), the benefits of this topic (yellow hat), the shortcomings around this topic (black hat), the alternatives or interesting facts or examples about this topic (green hat), your views and reflections on this topic (red hat), and a conclusion at the end (another blue hat). Additionally include a simple MindMap about the topic.
Software Testing:
Testing is the process of evaluating a system or its component(s) with the intent to find whether it satisfies the specified requirements or not. In simple words, testing is executing a system in order to identify any gaps, errors, or missing requirements in contrary to the actual requirements.
Testing is done in different forms at every phase of SDLC −
Manual Testing
Manual testing includes testing a software manually, i.e., without using any automated tool or any script. In this type, the tester takes over the role of an end-user and tests the software to identify any unexpected behavior or bug.
Automation Testing
Automation testing, which is also known as Test Automation, is when the tester writes scripts and uses another software to test the product. This process involves automation of a manual process. Automation Testing is used to re-run the test scenarios that were performed manually, quickly, and repeatedly.
There are different methods that can be used for software testing.
Black-Box Testing:
The technique of testing without having any knowledge of the interior workings of the application is called black-box testing. The tester is oblivious to the system architecture and does not have access to the source code. Typically, while performing a black-box test, a tester will interact with the system's user interface by providing inputs and examining outputs without knowing how and where the inputs are worked upon.
White-Box Testing:
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.The tester needs to have a look inside the source code and find out which unit/chunk of the code is behaving inappropriately.
Grey-Box Testing:
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.
Functional 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
There are five steps that are involved while testing an application for functionality:
Unit Testing
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
Integration Testing:
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
Bottom-up integration: This testing begins with unit testing, followed by tests of progressively higher-level combinations of units called modules or builds.
Top-down integration: In this testing, the highest-level modules are tested first and progressively, lower-level modules are tested thereafter.
Regression Testing
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.
Alpha Testing
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. During this phase, the following aspects will be tested in the application −
· The Application will be tested on machines with the lowest specification to test loading times and any latency problems.
Beta Testing
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. In this phase, the audience will be testing the following −
Usability Testing
Usability testing is a black-box technique and is used to identify any error(s) and improvements in the software by observing the users through their usage and operation. According to Nielsen, usability can be defined in terms of five factors, i.e. efficiency of use, learn-ability, memory-ability, errors/safety, and satisfaction. According to him, the usability of a product will be good and the system is usable if it possesses the above factors.
Compatibility Testing?
Compatibility Testing is a type of Software testing to check whether your software is capable of running on different hardware, operating systems, applications, network environments.
Compatibility Testing is a type of Non-functional testing
Let's look into compatibility testing types
Dynamic Testing
Dynamic Testing a code is executed. It checks for functional behavior of software system, memory/cpu usage and overall performance of the system. Hence the name "Dynamic". The main objective of this testing is to confirm that the software product works in conformance with the business requirements. This testing is also called an Execution technique or validation testing.
Six Hats of Thinking:
You can use Six Thinking Hats in meetings or on your own. In meetings, it has the benefit of preventing any confrontation that may happen when people with different thinking styles discuss a problem, because every perspective is valid.
Each "Thinking Hat" is a different style of thinking. These are explained below:
· White Hat: with this thinking hat, you focus on the available data. Look at the information that you have, analyze past trends, and see what you can learn from it. Look for gaps in your knowledge, and try to either fill them or take account of them.
· Red Hat: "wearing" the Red Hat, you look at problems using your intuition, gut reaction, and emotion. Also, think how others could react emotionally. Try to understand the responses of people who do not fully know your reasoning.
· Black Hat: using Black Hat thinking, look at a decision's
potentially negative outcomes. Look at it cautiously and
defensively. Try to see why it might not work. This is important because it highlights the
weak points in a plan. It allows you to eliminate them, alter them,
or prepare contingency plans to counter them.
Black Hat thinking helps to make your plans "tougher" and more
resilient. It can also help you to spot fatal flaws and risks
before you embark on a course of action. It's one of the real
benefits of this model, as many successful people get so used to
thinking positively that they often cannot see problems in advance.
This leaves them under-prepared for difficulties.
· Yellow Hat: this hat helps you to think positively. It is the optimistic viewpoint that helps you to see all the benefits of the decision and the value in it. Yellow Hat thinking helps you to keep going when everything looks gloomy and difficult.
· Green Hat: the Green Hat represents creativity. This is where you develop creative solutions to a problem. It is a freewheeling way of thinking, in which there is little criticism of ideas. (You can explore a range of creativity tools to help you.)
· Blue Hat: this hat represents process control. It's the hat worn by people chairing meetings, for example. When facing difficulties because ideas are running dry, they may direct activity into Green Hat thinking. When contingency plans are needed, they will ask for Black Hat thinking.
An Example of Six Hat Thinking
The directors of a property company are considering whether they should build a new office block. The economy is doing well, and the vacant office spaces in their city are being snapped up. As part of their decision-making process, they adopt the Six Thinking Hats technique.
Wearing the White Hat, they analyze the data that they have. They can see that the amount of available office space in their city is dwindling, and they calculate that, by the time a new office block would be completed, existing space will be in extremely short supply. They also note that the economic outlook is good, and steady growth is predicted to continue.
Thinking with a Red Hat, some of the directors say that the proposed building looks ugly and gloomy. They worry that people would find it an oppressive or uninspiring place to work.
When they think with the Black Hat, they wonder whether the economic forecast could be wrong. The economy may be about to experience a downturn, in which case the building could sit empty or only partially occupied for a long time. If the building is unattractive, then companies will choose to work in other, more attractive premises.
Wearing the positive Yellow Hat, however, the directors know that, if the economy holds up and their projections are correct, the company stands to make a healthy profit. If they are lucky, maybe they could sell the building before the next downturn, or rent to tenants on long-term leases that will last through any recession.
With Green Hat thinking, they consider whether they should redesign the building to make it more appealing. Perhaps they could build prestige offices that people would want to rent in any economic climate. Alternatively, maybe they should invest the money in the short term, then buy up property at a lower cost when the next downturn happens.
The chairman of the meeting wears the Blue Hat to keep the discussion moving and ideas flowing, encouraging the other directors to switch their thinking between the different perspectives.
Having examined their options from numerous viewpoints, the directors have a much more detailed picture of possible outcomes, and can make their decision accordingly.