View stunning SlideShares in full-screen with the new iOS app!Introducing SlideShare for AndroidExplore all your favorite topics in the SlideShare appGet the SlideShare app to Save for Later — even offline
View stunning SlideShares in full-screen with the new Android app!View stunning SlideShares in full-screen with the new iOS app!
jects I have seen. So it is important to think about a structured process for test au- tomation (keyword-driven, data-driven or scenario-driven), andThis makes this test automation approach an expensive, ineffec- to also consider how to set up a good test automation framework.tive and time consuming one, with little or no benefits. How to start with a structured and generic approachGarbage in, garbage out for test automationA common misunderstanding of test automation is the fact thatautomated test scripts are of better quality than manual test In this part we will focus on creating a structured, generic frame-scripts. Ok, by eliminating the human factor in execution of the work for test automation. In a few steps I will try and explain howtest scripts you will reduce the chance of errors through repeated you can set up an automation framework that will help you toexecution of the script during retest or regression test. But still, improve your automated testing. The first important step is:the automated test script is as good as the tester who created Selecting the right person for the jobit. For example, if you set up an automated test with poor cover-age or one of poor quality, automating this test will only lead to As mentioned in one of the pitfalls listed above, you need to selectspeeding up the execution and will give a poor result in less time. the right person for the job. Test automation needs a specialistSo test automation starts with setting up a proper test case de- with the right skills and knowledge. He/she needs testing experi-sign which leads to good test cases to automate. ence, development skills, planning skills etc. You need someone dedicated for building your test automation framework and notLack of knowledge and expertise someone who is only available part-time.A lot of organizations set up test automation as part of a test Selecting the right tool for the jobproject because they want to improve testing. They already havea test policy and a good testing methodology and want to start There are hundreds of test tools for automating test execution.with the next step, test automation. Often this starts with some- From simple open source web automating tools to very complex,one who has heard of test automation as the best solution for multi-platform and multi-technology tools (tools that use recordimproving quality with less effort and at lower costs. and playback, tools for scripting etc.). The most important rule to keep in mind is to select the right tool for the job. Start with defin-So without any knowledge of test automation, the green light ing requirements for your tool and start a tool selection project.is given and some tester starts with test automation. Tool selec- Don’t underestimate this part of test automation; it is a crucialtion is done by this tester and in most cases the outcome is a tool part for success.which is already in use by development, or a tool part of a broader Creating a different mindsetsuite of tools which is already part of the organization’s softwarelandscape. The tester has to implement this tool alongside other We have selected one or more tools for doing the job. The nexttest activities. The biggest mistake to make is to think that you can thing I want you to do is to create a different mindset about inter-do test automation in parallel to your other activities. You need to acting with any application. Most of the people I advised on testthink of it as a project of its own. The tester has to be dedicated automation had their eyes opened after I told them the following:to set up test automation. He /she has to have an affinity to tools,and a technical background (former developer) can be a big plus. We want to test a chain of applications, from a web front-end toThe tester needs to know the language of testers, but also that of a mainframe back-end. We have a variety of screens to test. In thedevelopers. The tester doing test automation is a specialist. web front-end we create a new account for an online insurance company. To do so we have a few screens to interact with:If the tester is not able to focus entirely on the task of setting up • Press the link Create new account on the Home screentest automation, there is a good chance that test automation willfail. What if the tester is only partially available for test automa- • Fill and submit the data in screen My account informationtion and spends the other part doing regular testing activities? • Verify New account has been createdWhen a change in the SUT occurs, the tester has to divide the timebetween two tasks, where the priority is on test automation. If Now we need to modify some information in the back-end via ter-this is not the case due to a lack of time, the quality of testing minal emulation. To do so, we again have a few screens to interactcan degrade, and also testing time can take longer because auto- with:mated test execution is not possible. • Search account on the Search screenThe lack of a structured process and a test automation framework • Modify account information and save account informationAs mentioned earlier, organizations start with test automation by • Verify account information has been changedselecting a tool and then trying to automate as many test scriptsas possible. Unfortunately, not much thought is given on how to We just created an account in a web front-end and changed in-set up test automation in a way that it is easy, maintainable and formation in the back-end. We identified several screens, alsoscalable. After a while these organizations conclude that hun- two different technologies, but is there a difference for us? No,dreds or even thousands of test scripts have been made, without because it makes no difference, a screen is a screen independentthinking about the use of external test data, re-usable tests or from technology or environment. This is true for most of the ob-setting up a generic framework for test automation. Missing this jects that are in a SUT. In almost every application we expect theis missing out on successful test automation. Maintaining the same, we fill in the fields on a screen and do some kind of actionautomation software and creating new scripts will be time con- (Enter or F4), and we arrive in a new state. This new state can be asuming. More effort is needed from the test automation team, new screen or the existing screen that has been modified.with higher costs but little result.www.testingexperience.com The Magazine for Professional Testers 129
Now that we have reached this mindset that interacting with an test case which can make it complex to automate.application, any application, is the same for us, no matter whatkind of application or technology, we can go to the next step. A possible better way is to translate the business process that needs to be tested into separate steps. Let’s get back to the ac-Format of a test case count we just created. Several steps were needed to create theIf you want to start setting up test automation in a structured account:and generic way, you have to focus on two sides, namely test case • Press link Create new accountdesign on the one side and automation of these test cases on theother. There has to be a uniform way to create new test cases, so • Fill and submit the data in screen My account informationthey themselves can be a uniform input for the test automation • Verify New account has been createdscripts. Once the steps have been identified, we translate them into aOne such way is the use of key words or action words for test case logical business flow (in most cases the Happy Flow) and createdesign. You create your test step with an action word, e.g. “Press this for example in Microsoft Excel™ or Open Office Calc™. I preferSubmit”, and in the automation software you program all steps a spreadsheet program for the overview in rows and columns andnecessary to press the submit button in the SUT. The problem for its power to manipulate data like variable dates etc.here is that you still have a lot of different action words in yourThe flow consists of different steps ,and each step represents a or environment, we can start with the automation process itself.screen or part of a screen with input, verifications and actions.For example: For the automation we use the selected tool for its unique ca- pability to steer objects in the SUT. So this can be a commercial• Fill the Name field with First Name multi-platform tool, or an open source web automation tool, or• Verify the default value in the Country combo box any other tool. The overall approach stays the same.• Press Continue Creating generic interaction functionsOnce we set up this vertical flow, you will see that it’s a highly So, let’s start automating test cases. As stated before, a screenreadable and understandable way of setting up your test cases. is a screen and a button is a button. Keeping this in mind youThis test case can be read by the tester, the test automation spe- can start defining your first generic interaction functions to startcialist, but also by business users. This is a great advantage, be- with a test automation framework. Simple functions that cancause it can be used as communication with all parties involved push a button or fill in an edit field. You can do so by recording orin the testing process. Because of the power of the spreadsheet programming (depends on the selected tool) a single steps “Pushprogram, new alternative flows can be developed very quickly and Button Next” and try and make a generic function out of it likea high coverage can be reached. “Push Button(x)”. Where Button(x) is of course any button avail- able in the SUT.Now that we have this uniform way of creating test cases and themindset that every screen is the same regardless of technology130 The Magazine for Professional Testers www.testingexperience.com
Interacting with different types of objectsIf you do this for a variety of objects that are available in the SUT,you build a library with all kinds of these generic functions, e.g. First of all you have to have an idea of how these test tools work. When trying to interact with a SUT, a test tool needs technical• Push Button(x) information on the object it wants to interact with. This steering• Fill Edit box(x) information is crucial to the test tool. Many test tools use a repos-• Select combo box value(x), etc. itory to store this information in, but I choose to keep it outside of the tool. If we store this information within an XML file (ob-Of course you need to do all kinds of verifications on objects, for ject map), we can maintain it outside the tool when somethingexample check the default country selected in a combo box when changes. For example, maintenance can be done by the develop-you first access a webpage. For this you create a set of functions ment team, they know best what technical information is neededlike above, but only now for verification purposes. to steer an object.Now you are able to automate the testing of an entire screen and So now we have all the information needed for objects to beverify values etc., but where is the next catch? steered in this XML file, and the generic interaction functions that need this information are also available. Within the framework you need to build in some functionality to read the technical in- formation from the XML file and use it in the functions that needthis information. The XML functionality will be used for other Preferably, you will want to know what happened, in what step,parts of the framework as well (this will be explained below). on which screen and on what object on this screen. I believe the best way is to create reporting functionality which stores theError handling and reporting results in an XML-file for each test step executed. Why XML? Be- cause then you can import it to a big variety of tools available andWhat if unexpected behavior occurs, or objects on your screen create custom reports.have changed? You need to built proper error handling. Building Final stepsfunctions for error handling is an important part of your test au-tomation framework. So now almost everything is in place for a generic test automa- tion framework which can help improve your automated regres-At this moment let’s look back at the primary goal of automated sion testing. There are just a few things left to do:testing: “Automation of test cases”. When we manually execute • Get the information stored within your test case in thethe test cases we just created, we will verify them, and if some- spreadsheet program into your test automation framework;thing is incorrect we log a defect. In the case of automated testexecution, however, what if the test executes on a system on an- • Run the test case within your automation framework.other floor or even in another country. How do we know if an erroroccurs and what defect to create. We need some kind of reporting The next big step is to read your test cases from the spreadsheetto these things, so the next step is to build in reporting function- program, because all the information you need for the flow youality in your test automation framework. want to test is in the spreadsheet. There are many ways to do so,132 The Magazine for Professional Testers www.testingexperience.com
for instance create a comma separated file, open a text streamfrom the test tool and read line by line from the file. However, > biographysince we use XML for other parts of the framework, why not ex-port the spreadsheet to an XML file. Because the functionality for Bernd Beersmareading from an XML file was already created, we can now com- is competence leader test au- tomation and senior test con-bine test step information and steering information for screens/ sultant with Squerist. He hasobjects etc. at runtime. over 9 years experience with different forms of test auto-At this moment a generic test automation framework has been mation and performance test-created that is ready to use. ing for different companies. Bernd holds a bachelor de-Conclusion gree in software engineeringCan we avoid the pitfalls mentioned earlier? First of all the main- and became acquainted withtenance issue. By using a framework as described in this article software testing during this period.you can reduce maintenance, mostly because you only need to During his numerous customer assignments Bernd creat-identify new or modified screens/objects and add or change the ed different frameworks and solutions for test automationtechnical information in the object map. with a broad variety of tools. These different approaches led to creating a generic approach for test automation.The second pitfall, garbage in is garbage out. Because of the way As a result of his knowledge about test automation, he alsotest cases are created in the spreadsheet, you always will get the gives advice on how to implement test automation andsame input for your test automation. This reduces the amount of does workshops and trainings.garbage in, because there is less room for errors or own interpre- Bernd is a member of the TestNet Test Automation work-tation of test cases. Ok, spelling errors or faulty test data are still group and co-initiator of the Test Automation Day. His goal is to keep on learning and thus improving his skillsa risk, because the test cases are as good as the tester creating on test automation.them.Third, Lack of knowledge and expertise. This one is very important,you need to have the right person and the right tool for the job.Skilled test automation specialists are a must, but also make sureyou have a good tool selection process. Your framework dependsheavily on both.The last pitfall is of course the one about the lack of a structuredprocess and a test automation framework. If you take all of theabove into account and you have the knowledge, time and theright tools, you are able to create a structured process and a testautomation framework.You and your test organization are now ready to experience allthe advantages that good test automation can provide, and in do-ing so your regression testing will improve.134 The Magazine for Professional Testers www.testingexperience.com