- Code, documents and inspections.
- Unit testing
- Allocation of the time and other resources.
- Designing and coding according to the testing.
- Automation of the regression testing.
- Designing of the tests for the verification of the user expectations and specifications.
- Document analyzation
- Performing positive root cause analysis.
Saturday, June 30, 2012
Like all the other processes in the field the test automation process has also been optimized and has reaped huge benefits.
- Test automation is carried out for the manual testing processes employing formalized testing processes and this automated test is then further optimized to make it much more effective.
- Test automation is like any other process that requires writing a computer program that will do a particular thing like testing in the case of test automation.
- Test automation takes a lot of time but once if done can save a whole lot of time afterwards.
In this article we are going to discuss the effect the optimization inflicts up on the test automation process plus we will also chalk up the advantages as well as disadvantages of optimizing the test automation process.
- Throughput represents a very critical issue in almost all the testing processes.
- It is quite important to take care of the throughput factor especially at the maintenance level.
- There are some general rules and approaches that have been defined to be used during the analyzation of the total requirements of the software testing system and these rules and approaches have worked wonders in reducing the test time.
- Apart from these rules and approaches there are other things like new programming environments, new interface standards (like Ethernet) that helps in making a significant improvement in the testing system.
Till now a variety of approaches have been validated that can be used for the optimization of the test automation process in order to increase the throughput.
For optimization we can say that using it one can make significant gains only with a modest investment of time and effort. The software quality can be optimized by adopting the best of the software testing methodologies available, tools, processes and of course people.
For further optimizing your test automation process you must take a look at the below mentioned aspects:
- Some of the software systems and applications are quite small and simple and so the time taken to process the requests is quite less and negligible.
- However, when it comes to the larger software systems and applications, the optimization of the test automation process can save a lot of time for even the most basic test case.
- For testing any big and complex software system or application, the optimization becomes crucial.
- The goal of every software tesing methodlogy is to ensure that the software applications works just like what the customer has figured in his/ her perspective.
- One of the myth about the optimization is that it is quite expensive and hence it should be used when extremely necessary.
- There are people who believe that 100 percent optimization of the test automation process is an ultimate objective.
- However there is no particular formula, the relative merits of the optimization of the test automation process depends up on many factors.
- When you optimize the test automation process, the efficiency of the whole automation process is increased gradually.
Everyday we witness a dramatic increase in the complexity of the computing environments which puts quite a great pressure on the automated testing thus calling for optimization.
With the test automation use on the move, a lot of processes and testing activities are being automated nowadays as far as possible. Test automation has been widely accepted since it is quite an effective testing methodology that can help the software engineering industry to keep pace with this fast paced technology savvy world.
Usually the processes that are automated include manual processes that make use of formalized testing processes. But besides these, there are many other software development processes and activities that are automated using the test automation and process and the best part is that they do not disappoint the testers.
In this article, we have taken up the discussion regarding the activities that are quite often subjected to automation. These activities are mostly concerned with the test automation. Usually test cases for automated software testing are exclusively written but the test cases for most of the manual testing processes that deploy formalized processes are subjected to test automation in order to save time and efforts both. However, before automating any testing activity it is made certain that the automated tests will be compatible with the system on which they will be run.
Today the developers are forced to develop software systems and applications in quite a small time frame which represents quite a big challenge. There is not only the need of testing the software system or application rigorously but also there is a need to do it as quickly as possible.
What is automated Testing Life Cycle Methodology?
In order to make the development process quite systematic a methodology has been introduced which is commonly known as “automated testing life cycle methodology” or ATLM in short form.
The ATLM lays down 6 processes or activities in the process of test automation and many of the sub activities are automate.
1. Decision to automate test: This includes:
(a) Overcoming false expectations of automated testing.
(b) Benefits of automated testing.
(c) Acquiring management support.
2. Test tool acquisition:
This is the second phase of ATLM and involves activities like tool evaluation and selection process. Here the activity tool evaluation can be automated to some extent. While selecting the testing tool it is required that the tester should keep in mind the system’s engineering environment.
3. Automated testing introduction phase: This phase involves the following steps:
(a) Test process analysis: This analysis ensures that all the test strategies and processes are in one place. The test strategies, goals and objectives are all defined in this phase and are documented. In this phase only the testing techniques are defined and test plans are assessed.
(b) Test tool consideration: This step involves the investigation of the incorporated automated test tools and their viewing in the context of the automated project testing requirements. Also the mapping of the potential test utilities and tools to the test requirements is done. The compatibility factor of the testing tools with the software system or application and environment is verified and solutions are further investigated.
4. Test planning, design and development
5. Execution and management of tests: By this phase the test design and test development has been addressed by the testing team. The test procedures are now ready to be automated. The setting up of the test environment after every test case execution is also automated in accordance with the guidelines. Now the test plan is ready and test environment is also set up, the execution of the test cases is started. This whole process is automated in the favor of the exercising the software system or application under the test.
6. Test program review and assessment
Friday, June 29, 2012
Random testing is usually not followed because of its bad record as the case of worst program testing. But still it founds use in some of the software testing projects in the field. Though it has got a bad record, it is not always viewed as a foul case of software testing.
What are in demand are the software testing methodologies that take in to consideration the structure of the software system or application that is to be tested. Path testing, partition testing etc were some of the resultant techniques that grew out of such demands.
Is Random Testing Effective?
- After a rigorous research, simulation results were presented in which it was observed that it is not always that random testing is bad for testing, but sometimes it proves to be quite cost effective.
- Apart from the simulation results, the actual results of the random testing experiments were presented in which it was confirmed that the random testing is indeed a quite useful validation tool.
- The random testing has been categorized under the black box testing techniques which involve the testing of the software system or application with an arbitrary sub set of all the possible input values.
In this article we are going to discuss about the different techniques that can be used to carry out effective random testing. For random testing, the software testing strategies that take in to account the structure of the software system or application are usually preferred.
Such two testing strategies are namely:
- Path testing and
- Partition testing
Random Software Testing Techniques
- Path testing is considered to be an instance of the partition testing and is hence usually deployed for the structural testing.
- On the other hand, the partition test is usually used for random testing that works with any testing scheme which involves the forced execution of few test cases from the sub sets of a partitions of a domain from where input is supplied.
- Simulation results as well as the results of actual random testing were presented and it was concluded from them that the random testing is quite an effective and need not always be a bad case.
- The actual random testing experiments results declared the random testing as a viable tool for validation testing.
- Another technique for random testing is the simple black box random input testing.
- It is considered to be a crude technique that effectively locates most of the bugs in real time software systems and applications.
- In this technique the software system or application is subjected to two kinds of input: With these simple parameters any application can be subjected to random testing.
- Streams of valid mouse and key board events
- Streams of valid Win32 messages.
Goals of Random Testing Techniques
- Using the random testing techniques the command line applications could be crashed or hung. - The basic goal of any random testing technique is to stress the software system or application program.
- In random testing you are required to simulate the user input in the testing environment.
- Firstly, the random user input is delivered to the software system or applications by putting this random input into the main communication stream between the server and the application.
- In the case of first type of input data, complete random data was sent to the software systems since it provides an insight in to the level of robustness and testing of the software system.
- Any failure can be encountered during the normal use of the software system.
Test automation has proved to be quite useful in reducing the night mares of the testers regarding the testing of very complex, complicated and large software systems or applications. Almost all the manual testing processes that make use of the formalized testing processes have been automated. Although manual testing involves intense concentration and can root many of the defects and faults in the software systems and applications, it requires a hell lot of patience, efforts and time.
Can automation testing replace manual testing?
- In today’s fast paced software world, test automation has undoubtedly become one of the most strategic and critical necessity of the software development.
- In the past years, the level of testing was considered to quite sufficient since the software systems and applications were not so dynamic.
But in today’s world we have explosive software systems and applications and we need to test them? Here the manual testing alone cannot suffice!
- There are many classes of defects that cannot be traced without automated testing and there are several other types of errors and bugs that can be discovered using manual testing only.
- So, we will say the automation testing cannot replace manual testing though it can be considered as a surplus to the manual testing.
With rising demands for qualitative testing two things are possible:
(i) Either we increase the number of people involved in testing or
(ii) We increase the level of test automation.
- The rising demands for the rapidly developing web clients have made the need for test automation much critical.
- The most unfortunate thing is that the testers are not full time to hone their software testing skills and the testers remain testers and do not become programmers.
- As a consequence of this, the simplicity of the software systems and application has been ruined and made far too complex and difficult to implement.
- In order to get the most out of the test automation process, it should be implemented to the maximum extent it is possible.
- If it is not used appropriately you can even face a failure in the long term development.
To reap the full benefits of the test automation you need to keep the following things in mind:
- Test automation is not a sideline rather it is a full time effort.
- You should not confuse the test framework and test design as same entities.
- The frame work that is to be used for the test automation should be application independent.
- The frame work to be used must be maintainable and quite perpetual.
- The test design as well as the strategy must be independent of the frame work.
Benefits of Test Automation
- Test automation reduces the population of the staff required to carry out the testing.
- Consumes less time.
- Fewer efforts required.
- Much preferable option when it comes to the size and complexity of today’s software systems and applications.
- Testing is a repetitive process and this drudgery of the testers is taken by the test automation.
- Test automation allows the machines to complete tedious task of repetitive testing while in the meantime the testers can take care of the other chores.
- The testing costs are reduced.
- Using test automation the load testing and stress testing can be performed very effectively.
Thursday, June 28, 2012
Heard of decision table testing before? This concept is rarely heard since it is not used by the testers very often. This article is focussed upon the decision table testing and when it is used.
"Decision table testing proves to be a very handy software testing methodology which comes to the tester’s rescue whenever a combination of inputs is to be dealt with and different results are produced".
To understand this concept you can take example of two binary inputs A and B. You will get 4 different combinations of these two inputs which will produce 4 different results based up on whatever operation is performed on them. If you observe some of these outputs to be the same, then you can select any of them and the output which is different for testing.
With a small number of inputs you won’t realise the importance of this testing technique since you will feel like using a normal testing technique. But with a large number of inputs, the significance of the decision table testing becomes quite clear. The below mentioned expression gives the possible number of combinations of the inputs:
2^n, where n stands for the number of inputs.
Let us take n=10. The number of possible input combinations comes as 1024!
What is Decision Table Testing?
- Decision table is actually a table that showcases all the different possible combinations of the supplied inputs along with their corresponding outputs.
- Decision table testing is one of the black box testing techniques.
- This testing technique is widely used in web applications however; it has got limited scope when it comes to equivalence partitioning and boundary value analysis.
- In boundary value analysis and equivalence partitioning, the decision table testing can be applied only in specific conditions.
- Mostly, decision table testing is used for testing rules and logics.
- Sometimes, it is also used to evaluate complex business rules.
- These complex rules are broken down in to simple decision tables.
Advantages of Decision Table Testing
Below mentioned are some of the advantages of the decision table testing:
- With decision table testing you get a frame work that facilitates complete and accurate processing of the rules and logics.
- Decision table testing helps in the identification of the test scenarios faster because of its simple and accurate tabular representations.
- Decision tables are quite easy to understand.
- Decision tables require less maintenance and updating the contents is also very easy.
- With a decision table you can verify whether or not you have checked all the possible test combinations.
What portions are defined for decision table testing?
- Out of all the black box testing methods, decision table testing is quite rigorous.
- But nonetheless, decision tables provide quite a compact and precise way for modelling a complex logic.
- Below mentioned 4 portions have been defined for a typical decision table:
- Stub portion,
- Entry portion,
- Condition portion, and lastly
- Action portion.
- “Rule” is the column in entry portion and indicates which actions are to be taken for the condition that is indicated in the condition portion of the table.
- In some decision tables all the conditions are binary, such kind of decision tables are called “limited entry decision tables”.
- On the contrary, if the conditions have several values, such a table is known as “extended entry decision table”.
There is one disadvantage of decision table testing:
It is very difficult to scale up the decision tables.
Test automation is perhaps one of the best testing methodologies and this testing methodology is exploited usually by one of the either ways as mentioned below:
1. Code driven testing and
2. Graphical user interface testing
In this article we are going to discuss about the data driven automation. Data driven automation is a self justifying term. You can easily make out that data driven automation is one in which the data is obtained from the external files.
About Data Driven Automation
Now what is that which makes it so special with the testers?
- In this type of automation, you can easily change the input data without going down.
- Data driven automation in a way regulates easy maintenance of the scripts.
- Data driven automation is all about how the software system or application performs with multiple sets of the input data.
- While carrying out data driven automation, it is necessary that you link the data to the test scripts with which the concerned data is being driven.
- This whole process of linking the data to the test scripts is called “parameterization of the tests”.
- The data to be fed as input is recorded in a data table.
- This operation can be done either manually or it can also be automated by using some data driver wizard.
- Data driven automation is like picking up data from a data table (which has been parameterized) or query data base and writing down these parameters in some other file so that the software can track it back.
- As we approach a complex functionality whose testing requires more test cases, the work becomes quite laborious as the testing becomes more and more complicated.
- For multiple sets of test cases as well as data you can execute one common test in order to figure out which data will pass the test and which will not.
- The automation script is created for just one input and is used for the rest of the similar inputs. - Data driven automation today has become critical and strategic necessity.
- In the past, the software systems and applications were quite simple but today we have explosive web deployments and software systems and applications that require rigorous software testing.
Now the question arises, “how to test such software systems and applications?” there are two answers to this:
- Either we increase the number of people employed in manual testing or
- We migrate to some greater level of test automation.
Data driven automation is often abbreviated to DDA. As the size and the complexity of the functionality grows, it becomes more and more laborious to test the functionality since the number of test cases also grows.
In most of the tools like Winrunner, the data cannot be obtained from excel or notepad and so therefore it has to be taken from the data driven tables.
Wednesday, June 27, 2012
There are two main approaches to testing namely:
- Preventative approach to testing and
- Reactive approach to testing
What is Preventive Approach to testing?
- Preventative approach to testing is analytical in nature but reactive is rather heuristic.
- The designing of the preventative tests takes place after the production of the software.
- On the other hand, the reactive tests are designed quite early i.e., in response to the feed back or review comments given by the customers.
- But both of these tests are designed as early as possible.
- On an overall basis, preventative tests are created earlier than the reactive tests.
- The preventative testing approach is based up on the philosophy that the quality of the software system or application under testing can actually be improved by testing if it is done early enough during the software development life cycle.
- However, one specification is to be followed for implement this approach to testing which is that test cases should be created for the validation of the requirements before the code is written.
- Preventive approach is followed because it can be applied to all the phases of the project and not just to the code. It also reduces cost of correcting the underlying faults.
What is Reactive approach to testing?
- Reactive approach to testing is considered to be a performance testing activity in the field of performance management.
- The developers often do not think about the performance of the software system or application that they are developing during the early stages of the SDLC or software development life cycle.
- More often, the performance quotient is neglected till the testing of the system is complete.
- This is known fact that the performance of a software system or application revolves around its architecture.
- Designing an effective architecture is a high cost activity and in some of the cases the whole system is trashed because of the presence of the huge deviations in performance factors.
- However, waiting for problems related to the performance to surface and then dealing with them is not always the best option.
- So, performance testing is considered to be a reactive approach to testing since the system does not gathers much importance during the early stages of the life cycle.
- Reactive approach to testing is more of a kind of a “fix it later” approach which is less effective than the preventative approach.
- Even quality control is a reactive approach to testing.
- Every step of the production development cycle involves quality control.
- It is not that the developers are simply sitting idle and noting down all the areas where potential issues are suspected after the final outcome.
Importance of both the approaches
- Actually preventative and reactive approaches are considered to be two “test strategies” which are used to define the objectives of the software’s testing and how they are to be achieved.
- These two approaches also act as a determining factor in the cost and amount of effort that is to be invested in the testing of the software system or application.
- In preventative approach the testers are involved right from the beginning of the project.
- The specification and preparation i.e., test planning and test design is also carried out as soon as possible.
- Preventative approach involves activities like:
- Static analysis
- Contrary to the preventative approach, in reactive approach testers are involved late in a project.
- The test planning and designing is started after the development of the project has ended.
- Reactive approach involves techniques like exploratory testing.
“How to plan test automation?” is perhaps the most frequently asked question of today’s software testing field. Another important question is, “can test automation improve test effectiveness?”
In this article we have tried our level best to answer both of these questions!
What is meant by Test Automation?
- In test automation, we actually develop a quick process that will take care of the execution of the tests by itself i.e., without any human intervention.
- It also compares the actual and predicted outcomes, sets up the pre- conditions for the tests.
- A common test automation process involves automation of a manual testing process that makes use of a formalized testing tool.
- Although the manual testing can discover a whole lot of defects in the software system or application, it is quite laborious or you can say it involves a lot of drudgery and time.
- It is not possible for you to discover defects of all the classes using manual testing; it is a task that can only be accomplished using test automation.
- Test automation takes time only once i.e., while you automate them and after this it saves a whole lot of time when compared to manual testing, tests can be run quickly and repeatedly.
How to plan test automation?
There are two approaches to test automation and both of them are equally good and either of them can be followed. They are:
1. Code driven testing: This approach involves public interfaces to classes, libraries or modules to be tested with a whole variety of the input arguments for the validation of the results that are returned and are quite correct.
2. Graphical user interface testing: This approach involves a testing frame work that generates a user interface events like mouse clicks and key strokes for the validation of the observable behavior of the program i.e., whether it is correct or not?
There is one drawback which is that the test automation tools can cost you much and they cannot be employed without manual testing. Test automation is effective if you have to repeatedly test one thing.
There is one more approach to the test automation which is commonly known as “model based testing”.
- Using this approach you automatically generate tests through the use of a model of the software system or application for the generation of test case but this method of planning test automation is still under research and controversies.
- One should keep the following questions in mind while planning the test automation:
1. What to automate?
2. When to automate?
3. Whether or not automation is really required?
Can Test Automation improve Test Effectiveness?
Yes, test automation can improve test effectiveness.
- The test cases generated by test automation are quite reliable as compared to those created by manual testing.
- In test automation, human error is eliminated.
- The tests generated are repeatable as well as programmable.
- They also have the following characteristics:
* Comprehensive: The test suite that is built covers all the features of the software system or application.
* Cost reduction: Due to less resources, used cost is also reduced.
* Fast: Testing is quite fast.
* Better quality software: The resultant software system or application is of better quality since it is tested by a large number of tests with fewer resources and less time.
Tuesday, June 26, 2012
Automated testing has greatly reduced the drudgery of the developers who otherwise would have to carry out testing on big software systems and applications projects manually. Today there are many automation testing tools available to your advantage. Using these tools you can automate any of the test scripts which will make your work easier than ever consuming less time and efforts. In this article we have discussed about some of the automation testing tools. They are as follows:
- This testing tool has been designed for both the novice as well as advance testers.
- Using this tool, creating, managing and running tests for any system becomes so easy be it a desk top or web software.
- It has got a quite easy to use interface and a whole lot of tools for the purpose of customizing it
- This tool supports cross browser web testing, html5 applications and distributed testing as well.
- Using this tool, you can create tests using just one browser which can be run on almost any browser.
- You do not have to make any changes to the tests i.e., testing is completely browser independent.
- Furthermore, this testing tool is independent of any other development tool or software application.
- It supports all the languages.
2. Telerik by Test Studio:
- This testing tool supports functional testing, load testing, performance testing, and mobile testing very well.
- It also supports in depth desk top testing i.e., you can easily test AJAX, HTML5, WPF and Silverlight apps.
- This tool is quite affordable.
- Using this tool, you can create as well as capture tests.
-Web performance tests can also be created which offer a detailed insight in to the performance metrics of your apps.
- This tool is quite advanced and covers most of the technologies and protocols.
- Using this tool, you can even run a functional test which in turn can help you to gather data on server processing time, client rendering time and network latency etc.
- Furthermore, this tool supports testing for iOS apps.
- It also provides support for iphone, ipad, ipod, test natives, web and hybrid apps etc.
3. Micro focus- SilkTest:
- Using this tool, one can create robust, powerful and fast automated tests across a quite broad range of technologies and applications.
- It can be used easily for the identification of the quality related problems that occur in the early stages of the SDLC or software development life cycle.
- Till now two versions of this testing tool have proven to be quite worthy namely Silk4Net and Silk4J.
- These two testing tools provide you with the option of bringing the power of SilkTest to integrated development environment of your choice like eclipse or visual studio and so on.
- This testing tool has showed quite lot robustness.
4. HP: Unified Functional Testing Software (quick professional tool):
- This tool rules the software industry.
- This tool has got the ability of accelerating the functional testing by following a simplification process for simplifying the test design and maintaining both the non GUI based applications and GUI based applications.
- The integrated test scenarios can be validated quite easily.
- All these features result in a reduction in risk and improve the quality for the applications of the modern era.
- This testing tool includes HP service test products and HP functional testing.
- It also includes some of the other add-ins from HP.
- Using this tool you can increase the efficiency of your testing by using the automated processes and re- using of the data.