Home
        enhanced testing automation proof of concept for freenest
         Contents
1.     Python  n  d  What is Python  Executive Summary  Referred on October    3  2012  http   www python org doc essays blurb html    RobotFramework SeleniumLibrary  February 1  2011  Advanced test  distribution utilizing Selenium GRID  Referred on November 7  2012   http   code google com p robotframework   seleniumlibrary wiki UseSeleniumGRIDwithRobotFramework    Robot Framework  2012  Robot Framework Introduction  Referred on  November 4  2012   http   wiki robotframework googlecode com hg RobotFrameworklntrodu  ction pdf    Robot Framework  September 30  2011  Robot Framework User Guide   Referred on November 9  2012     http   robotframework googlecode com hg doc userguide RobotFramew  orkUserGuide html    62    Selenium Documentation  August 26  2012  Selenium WebbDriver   Selenium 1  Selenium RC   Referred on October 24  2012     http   seleniumhg org docs     SmartBear  2012  Why Automated Testing  Referred on October 10      24  2012  http   support smartbear com articles testcomplete manager   overview     Software Testing Fundamentals  n  d  Gray Box Testing  Referred on  October 17  2012    http   softwaretestingfundamentals com gray box testing     Software testing Fundamentals  n  d  Software Testing Levels  Referred  on November 14  2012     http   softwaretestingfundamentals com software testing levels     TestLink  March 18  2012  TestLink User Manual  Referred on  November 14  2012     http   www teamst org  tldoc 1 9 testlink user manual pdf    Tivit  Decembe
2.     The installation should be started by installing Java  VNC4Server and  Firefox     sudo apt get install openjdk 7 jre vnc4server firefox    Firefox requires a display before it can be used at all  thus starting the  VNCAServer would be a good idea  It can be started using command     vnc4server     it will ask for a password and finally give a number of the  display  The virtual display can then be viewed from another computer  using Vinagre  After starting Vinagre  the user can create a new  connection by pressing  connect   changing the protocol to VNC and  giving the IP address and the port of the display  For example  if the IP  is 192 168 42 104 and the display number is 1  the address would be   192 168 42 104 1   Then Vinagre will ask for password and after that  the connection should be working     The next step is important for escaping the SSL certificates  since there  are no keywords for them in Robot Framework  all tests get stuck in the  certificate dialog and fail due to timeout  For that selenium needs a  Firefox profile  thus Firefox profile manager needs to be started using    72    command    firefox  Profilemanager    in the command prompt visible in  Vinagre  It should give a file path for the profile while creating it  it will  be needed later on  The only way to get past the certificate is using the  new profile for visiting the site and accepting the certificate manually  so the choice will be remembered  Firefox can be safely closed after  accepti
3.   This will only work if Git has been set up  correctly and the user has enough rights for cloning the repository   Testing scripts are cloned into the same folder and one more folder is  created for the output data with command    sudo mkdir   robot testing output     Now there should be testlink robot    robot testing scripts and robot testing output  folders inside Testlink   Robot  folder     Before FNTC can be used  it needs to be configured properly  First thing  to do is creating the log file for FNTC with the command  touch  testlink robot client log  in testlink robot  folder  Testlink client conf  needs to be updated with Team Server s IP address and the API key  generated in TestLink  the rest of the options should work as they are  by default  To ensure that FNTC can be run remotely  the owner of all  the folders needs to be changed to www data  This can be done with    command  sudo chown  R www data www data Testlink Robot        Now Selenium hub can be started with command  java  jar selenium     server standalone 2 25 0 jar  role hub      71    Grid Slaves    The Grid Slaves are the easiest virtual machines to set up in the tool  chain  They only contain Firefox  Selenium Server for setting up the  node  Java  which is required for Selenium  and VNC4Server  which acts  as a virtual display  VNC4Server is not required if the machine is a  desktop Ubuntu  but it is required for Ubuntu Server and it is useful for  remotely checking the status of the node machine 
4.   customFields xml  The custom fields can be defined by clicking  Define  Custom Fields  in TestLink project main page  The additional custom  fields are testingEngine as a list  scriptNames as a test area  runTimes  as a string and tolerance as numeric value  They need to be enabled  on test specification and displayed in test execution  nowhere else   After the custom fields have been defined  they need to be assigned to  the project by clicking  Assign Custom Fields  in the project main page   The last step in TestLink is creating the API access key  This can be  done by clicking  My Settings  in TestLink s top bar and then clicking   generate a new key   button under API interface  The key is then  printed above the button and it can be added into the configuration file  in Master Tester     69    The last step in Team Server is creating a new Git repository for the  test scripts  This can be done either by using the Control Panel in  FreeNest 1 4 or by using Gitolite  In FreeNest it should be as easy as  going in Administration  then Control Panel and then Git Admintools  and adding a new repository under repositories  tab  Adding an new  repository is not hard with Gitolite either  only a few lines need to be  added into gitolite admin conf gitolite conf  Those lines consist of the    repository name and user rights as shown below     repo robot testing scripts  RW     9admin  R   gitweb    Master Tester    The Master Tester is the most complex machine in the tool chain
5.   experience of Python when the project started  most parts of FNTC  could be built differently and more efficiently  The core could be  written to be truly modular since some parts are currently hard coded  to support only specific tools  TestLink API and Git wrapper being  examples of this  TestLink API will not have any use if FNTC is not used  with TestLink  and Git should be replaceable with Subversion if the user  prefers     TestLink could also be modified to better support testing automation   The interface looks messy when the results are returned  notes being  just raw text without any kind of formatting unless the user realizes to  press one small button for the formatted notes to show up  The  interface does not give any kind of feedback about when the tests are  being executed  it just waits for them to be finished and then updates  the page with results  This can lead to the user thinking that nothing is  happening and pressing the execution button again  possibly creating  conflicts in the scripts  The interface should be more user friendly and  provide sufficient feedback for the user to prevent misunderstandings     59    It was planned that the testing automation could be integrated into  JunkCloud in a way that it could control the cloud resources   Implementing the CloudNest  tool into FNTC would allow it to launch  new Grid Slaves into the cloud depending on the amount of tests to be  run  It would also be able to kill unneeded instances after running the
6.   tests  This would make FNTC more automated  removing the need to    manually launching and setting up new nodes for it to use     At the time of writing this thesis  Mikko Ojala has already started  refactoring and improving the core parts of FNTC for better modularity  and fit in MIDEaaS  project  Instead of using the  fakeXMLRPCTestRunner php  Twisted Framework is used for creating a  server that receives the test requests and launches FNTC  It can be  used as a daemon  meaning that the server starts up automatically  when the machine starts  and it runs in the background listening for  test requests  This makes it possible to have several FNTC instances  running at the same time in separate threads  and it is not as strict  towards the data it receives unlike fakeXMLRPCTestRunner php  This  way PHP can also be removed from the software requirements     The installation process is also unnecessarily complex and has several  possible points of failure if the user does not know exactly what needs  to be done  That is why FNTC will be Debian packaged properly in the  future  either by Mikko Ojala or the Cloud team  The file locations will  be changed to more suitable ones  for example FNTC would be located  in AdminUser s home folder instead of  var www   folder  which can be  considered as a security issue     60    REFERENCES    Cloud Software Finland brochure  August 2011  Referred on November    8  2012  http   www cloudsoftwareprogram org rs 2226 6e620c3b   438c 425c bf
7.  A hub acts like central point in the network  it  receives all the test requests and distributes them for all the nodes to  execute  Nodes are the slaves in the network  they are all connected to  the hub and when they receive tests  they execute them and report  the results to the hub  In other words  test suites are not run ona  single machine one at a time  they are run on several machines in  parallel  This does not have much effect when the tests are simple and  there are not many of them  however  Grid can run the tests several  times faster than a single server when used with large and complex  test suites  in theory twice as fast with two nodes  four times as fast  with four nodes and so on and so forth   Selenium Documentation   August 2012     3 4 Git    Git is an open source distributed version control system  It was  originally developed to hold the source code of the Linux kernel since  the free of charge status of the original version control system   BitKeeper  was revoked in 2005  The design was based on the lessons  the developers had learned while using BitKeeper and the main goals    31    of the new system were speed  simple design  strong support for non   linear development  fully distributed and ability to handle large  projects  Git is used in some of the largest FOSS projects like Linux  kernel  Ruby on Rails etc   Getting Started   A Short History of Git     Distributed version control system    Distributed version control system means that every co
8.  and  while it is mostly straight forward  there are some parts that most likely  will not succeed the first time  The installation is started by installing  the required software by using the command     sudo apt get install apache2 php5 openjdk 7 jre git    After they have been installed  Robot Framework  Selenium server and  the library between them can be downloaded and installed  They can  be found here   http   code google com p robotframework downloads list  https   github com rtomac robotframework selenium2library downloads  http   seleniumhg org download     The newest versions at the time of writing this are robotframework   2 7 5 tar gz  selenium server standalone 2 25 0 jar and  robotframework selenium2library 1 1 0 tar gz  Robot Framework and  SeleniumLibrary can be installed by unpacking them with command    70       tar  xzf  lt package name gt     and running the script inside them with  command    python setup py install     Selenium Server is a runnable jar   file  thus it can be moved somewhere safe  PyYAML is also required for    FNTC to work  it can be found here  http   pyyaml org wiki PyYAML and    it is installed the same way as Robot Framework     Before FNTC can be installed  a folder needs to be created to hold all  FNTC related files  The folder can be created in  var www  folder with  command    sudo mkdir Testlink Robot    and FNTC can be cloned inside  that folder from Strongbow s repository with command    git clone  strongbow testlink_robot   
9.  and has  some knowledge about the functions of the program  The test cases  are designed using that knowledge  however all testing is still done in  black box level  The testers can for example manipulate the data inside  a database  which would not be possible in black box level  or use  reverse engineering to determine boundary values or error messages  and then test the program like they would normally do in black box  testing   Software testing  Wikipedia  Software Testing Fundamentals     2 2 3 Testing Levels    Software testing can be categorized into testing levels based on the  depth  scale and subject of the tests  There are three main levels of  software testing  unit  integration and system testing as shown in  figure 2  Acceptance testing is the last level of testing where the  functionality of the software is compared to the business requirements  and while it is an important part of testing  this thesis will not go into  specifics or acceptance testing   Software testing Fundamentals   Software Testing  Wikipedia     12    ACCEPTANCE TESTING  i SYSTEM TESTING i    INTEGRATION TESTING  H UNIT TESTING N    FIGURE 2  Major software testing levels  Software testing       Fundamentals     Unit testing    Unit testing means testing an individual unit or a group of units  This  can be a simple method  a module or a class  basically the smallest  testable part of the application  Unit testing is usually conducted by the  programmer during the development process to det
10.  contain scripts  The user  can control Robot Framework s behavior using additional arguments in  the command  for example redirecting or disabling output files with     r  NONE    NONE     giving meanings like criticality for certain tags with        noncritical noncrit    or giving the suite a unique name for better  readability with      name MySuite     The user can also pass variables for  the script by giving the variable names and values in front of the test  script  for example      variable USERNAME johndoe     If the user  installed RF as an executable Jar file  tests are run using command   java  jar robotframework 2 7 5 jar  options  testScript1 txt      Robot  Framework User Guide  September 2012  Robot Framework  Introduction  2012     Robot Framework prints the test steps and their results to the  command line when it starts going through the tests  If one step fails   by default the whole test fails and Robot Framework continues running  the remaining tests  Unless a critical tag was set  all tests are treated  as critical tests and failing one test will result failing the whole suite  If  a non critical test fails  the test suite can still pass  thus it is  recommended that all tests that are still in development or have a  huge chance to not pass are tagged as non critical   Robot Framework  User Guide  September 2012     Once all tests are run  Robot Framework prints a short compilation of  the test results and creates three output files  log html  report h
11.  is need for other testing frameworks  the users  can create their own plug ins and new frameworks are taken into use  when the plug ins are loaded  The testing automation can be used as it  is for any kind of testing Robot Framework and selenium are capable  of  and since Robot Framework and Selenium are sufficient enough for  testing FreeNest 1 4  it can be used for internal software testing in  SkyNest  provided that the developers get some training for creating  new test scripts     It was also noticed during the project that moving from manual testing  to automatic testing is not easy or quick  The project can contain  hundreds of tests and even when they are simple tests  converting  them into automatic tests is a huge and very time consuming task   Even when the test automation is taken into account at the beginning    58    of the project  additional measures are still needed  The developers  need some training to be able to write the testing scripts for their code  and extra knowledge is also needed for using and maintaining the  testing automation  The test automation tool chain contains more tools  than just one and if one of them stops working  the maintainer will  need to know where to look in order to find and fix the problem quickly     6 2 Future improvements    While FNTC works well enough for it to be used for internal testing in  SkyNest  it can not be considered as a valid testing automation   solution yet  Since the author of this thesis did not have much
12.  systems or  different tools to bring more variety and coverage into testing  In this  case the system under testing is an instance of FreeNest 1 4  which is  supposed to be installed right after launching the instance the first  time  At the time of writing this thesis the installation has to be done  manually with command    sudo apt get install freenest    in every  instance of Deep Forest  however  it is planned to be automatic in the  future     5 3 Components    5 3 1 Core    The core of FNTC consists of two files  fakeXMLRPCTestRunner php and  fntc py  The PHP file is only used as a middle hand  converting data  from TestLink for FNTC and the other way around  The file used to be  only an example of XML RPC usage developed by the TestLink team  It  acted as a fake server inside TestLink  when it received some test data  from TestLink  it returned hard coded results depending on the test  data it received  When the development of FNTC began  the hard  coded results were replaced with a Popen function that calls fntc py   The same method is still used for running FNTC  but it will be changed  in the future     44    The python script is the main part of the core  It handles all the data  received from arguments and TestLink API and chooses the testing  engine and test scripts depending on the data it receives  The testing  itself is handled by the testing engines and when the engine has done  testing  FNTC takes the results and sends them back to Testlink     FNTC comes 
13.  test results from the XML files Robot  Framework generated and combines them into notes that are returned  to TestLink  The notes include the number of times the tests were run   how many of the total  critical and non critical tests passed  did the  test suite pass and the reason if it did not pass and the results  separately from each test case and test run  The method also  generates links that lead to the original reports  but it only works if the  tester has access to the same network where the testing environment  is located     There is also one experimental method called upload results  It was  used for packing Robot Framework s report and log files and uploading  them as an attachment in the corresponding test case in TestLink  but  it came with two problems  The first problem was a design flaw  while it  does sound tempting to have the test results quickly at hand in  TestLink and it would work even if the tester did not have access to the  testing network  the attachments from hundreds of test cases and  multiple test runs would fill up the database rather quickly and that  could lead to performance issues  The second problem is a bug that  was left unfixed due to the realization of the first problem  For some  currently unknown reason the uploaded attachments get corrupted  while uploading them  making it impossible to unpack the packages  and view the results     54    5 3 6 Grid engine    Grid engine is a more advanced version of Robot engine  Unlike Robot  eng
14.  than beneficial  Setting up the tool chain in the middle of the project  can take a great deal of time and resources  and testing scripts need to  be written for all the tests that need to be automated  This can be a  serious problem if the project has been going on for a while and  hundreds of tests need to be converted into automated tests  That is  why automation must be considered at the beginning of the project   tools can be set up at the same time with the development  environments and scripts are faster to create while developing new    features     3 TOOLS    3 1 TestLink    TestLink is a web based test management system developed by the  TestLink community  It is designed to provide support for test  specification and execution  and monitor test activities  It helps the  testers to keep track of which tests are assigned to which testers   which tests are supposed to be run in the build and the total progress  of the tests  In general it keeps the testing process under control  A  screenshot of TestLink s interface can be seen in figure 3   TestLink  user Manual  March 2012     17    TestLink 1 9 4  Prague   Speedy  DEMO SITE provided by TestLink Development Team   Mozilla Firefox    File Edit View History Bookmarks Tools Help       S TestLink 1 9 4  Prague   Speed     e     testlink org    A lest  Link        O   3 gt  ae    TestLink 1 9 4  Prague   Speedy  DEMO SITE provided by TestLink Development Team   admin  admin    My Settings   Logout    Project   Requireme
15.  thus the connections between those tools need to be tested    as well     38    Previously all testing was conducted by a testing team  where each  team member picked a Suite full of test cases and used the instructions  in the test cases to run the tests and check the results  Even though  there are only a few hundred test cases  it still took a lot of time to go  through each one of them by hand  Considering that in bigger  companies some projects can have tens of thousands of test cases   going through all of them manually would be a huge waste of time and  resources     Solution    The solution would be setting up a testing automation tool chain to  make testing faster  Instead of having a team of testers going through  the features of FreeNest  a group of virtual machines would go through  it several times faster and more accurately  New tests could be created  by the developers at the same time when they are working on new  features and after that the scripts can be run whenever a feature  needs to be tested  With the testing automation up and running there  would be no need for a testing team  which has not been active in  months at the time of writing this thesis     5 ARCHITECTURE OF FNTC    5 1 Development    When the project started in February 2012  only a few requirements  were set  TestLink should be used as the test management tool since it  is already in FreeNest and widely in use  and Robot Framework should  be used as the testing framework  It started as a 
16. 2     Hypertext Preprocessor  A general purpose  server side scripting language used for dynamic  web pages   PHP  Wikipedia  3 10 2012   HyperText Markup Language  mainly used for  displaying web pages and documents   HTML   Wikipedia  3 10 2012     An open source cloud computing platform     Projects  own OpenStack cloud built from scrap    computers     A tool suite for automating web browsers     The central point of the grid  distributes all  the tests for nodes to run     A slave machine in the grid  does all the hard  work and reports the results to the hub     1 INTRODUCTION    1 1 FreeNest    FreeNest is an open source application life cycle management  environment developed in the SkyNest  project at the School of  Technology at JAMK  Since the project is hosted at JAMK  most of the  workers in the project are students either performing their internships  or working on their bachelor s thesis projects  SkyNest is part of the  Cloud Software Finland  program and it is funded by Tekes  the Finnish  Funding Agency for Technology and Innovation   Projects  Jyvaskyla  University of Applied Sciences     FreeNest is meant to be used for managing the project life cycle from  the initial idea to the development of the application  to support after  the release  It integrates several widely used open source tools and  acts like glue between them  making it possible for the tools to  communicate between each other  It is built in a way that one FreeNest  should be used in one 
17. HE SEQUENCE DIAGRAM OF FNTC                       Robot  User TestLink FNTC   Git wrapper    e  Cloud API Robot Engine Framework Grid Hub Grid Node Deep Forest            l    runs tests i       launches    results                 pull tests      gitresult                               l                       pull reguest W 1          I l    l  launch_instances                    launches a naw instance       cloudresult       rum_tests testCasename  testlist  runTimes     i  i  i  i  I  i  i  i  i  i  I  i  i  I  i  N  i  i  i  i  I  N  i    I  n i  1  i  i  I  i  I  i     i  i  i  I  i  i  i  i       roboresult          get_test_results testCaseNa       results       FIGURE 14  The sequence diagram of FNTC  The picture had to be    rotated due to the large size     67    APPENDIX 4  FNTC INSTALLATION  INSTRUCTIONS    Team Server    The easiest way of setting up the Team Server is installing FreeNest  1 4 from the package repository  since it has TestLink and Git already  installed and configured  FreeNest 1 4 is not yet released for public   thus it can only be installed from SkyNest own private repository  When  having access to SkyNest s private network  this can be done by adding  the repository into the following line into  etc apt sources  list  file     deb http   192 168 42 104 packages ubuntu precise precise main    After the file has been updated  it is time to run three commands to  install FreeNest     sudo apt get update  sudo apt get install freenest preseed  s
18. KE MEN KEN MEE 28  Bd alb on ma driven ra d Sos TUS VN ee 31  30 OPENSLACK m  RET 36  A OBJECTIVES ea Laama E Pa STEET eee 38  D ARCHITECTURE OF FNIC z 13e yu ii AAA 39  E DEVON  o qr eth xe E E o ceca bobo hue d 39  5 2 Environment elements    EA AA 41  BS COMPONENTS 3 a ara Yade ned de Oh a ag ACT ae 44  DOCU oe ORO ES Put tad  E ee oe od 44  5 3 2  TOSTIMK API cet ets AAA meo ago be d 46  5 3 3 Git wrapper sua caca ch oo tte ewe eee 48    5 3 4 Plug in System  13 5243 5 54 ER RR RON REO ee ee 223 49    5 3 0 Robot engis 520 000 0502 bee e e REB das 53  5 3 0 RdA   e   under SR aa 8 EVER P absint S 54  5 4 Installatioly oosa 238 eee ae vet ah oe cas RE 55  EE BR RA ds 55  6 RESULTS Sara jaa 5 eee cia a Oe i s 56  0 1 Current states c2 aaa aro dua 56  6 2 Future improvements              lesen 57  REFERENCES TTT PIMEIN EN SSS GGG Gare es ooo eee 59  FIGURES  FIGURE 1  Cloud computing layers        5   0 60006 KA nm 8  FIGURE 2  Major software testing levelS            0     oooooo   12  FIGURE 3  A screenshot of TestLink 1 9 4 deM0                  18  FIGURE 4  An example of a passed test case            oooooooo  21  FIGURE 5  Robot Framework s high level architecture              23  FIGURE 6  A screenshot of RIDE s interface             o   ooooo o  25  FIGURE 7  Failed and passed reports from Robot Framework       27  FIGURE 8  Simplified Selenium architecture diagraM              30  FIGURE 9  Distributed version control diagraM                  33  FIGURE 10  OpenStac
19. WWW JAMK FI    ENHANCED TESTING AUTOMATION PROOF  OF CONCEPT FOR FREENEST    Niko Korhonen    Bachelor s thesis  November 2012    Software Engineering  The School of Technology    Pill N    alls JYVASKYLAN AMMATTIKORKEAKOULU  Lp a4 JAMK UNIVERSITY OF APPLIED SCIENCES    Ef JYV  SKYL  N AMMATTIKORKEAKOULU N N  E o JAMK UNIVERSITY OF APPLIED SCIENCES OPINN  YTETY  N    KUVAILULEHTI          Tekij   t  Julkaisun laji P  iv  m    r     KORHONEN  Niko Opinn  ytety   20 11 2012  Sivum    r   Julkaisun kieli  75 Englanti       Verkkojulkaisulupa  my  nnetty   X              Ty  n nimi  PARANNELLUN TESTAUSAUTOMAATION ESIMERKKI FREENESTILLE    Koulutusohjelma  Ohjelmistotekniikka       Ty  n ohjaaja t   PIETIK  INEN  Kalevi       Toimeksiantaja t   RINTAMAKI  Marko       Tiivistelma    Ty  ss   oli tarkoituksena luoda toimiva testausautomaation esimerkki  k  ytt  m  ll   TestLink  Robot Framework ja Git  ty  kaluja  Testausautomaatin on  tarkoitus ajaa TestLinkist   valitut testit automaattisesti pilviymp  rist  ss    k  ytt  m  ll   Robot Frameworkia ja raportoida tulokset takaisin TestLinkille   Testien uusimmat versiot haetaan Git repositoriosta ajon aikana     Ty  n teoriaosassa on esitelty ohjelmiston testausta  pilvipalveluita  sek    projektissa k  ytettyj   ty  kaluja  K  yt  nn  n osassa on esitelty ty  ss   tehdyn  testausautomaatin elementtej    arkkitehtuuria ja komponentteja  sek   itse  automaation toimintaa  Asennusohjeet ovat ty  ss   mukana liitteen       Testausautom
20. XMLRPCTestRunner php     ExecuteTestCase inout TestCaseName  string     inout TestCaseInternalID int   inout TestCaseVersionID int    inout TestProjectID int    inout TestPlanID int inout TestPlatformID int   inout TestBuildID int inout TestExecMode string   in TestResultString string    out TestResults  xml      lt  lt Script gt  gt     fntc py      look for subclass in modulename string      lt  lt Class gt  gt     git_puller py     pull in testDir string out GitResult  string     XML RPC    lt  lt API gt  gt   XML RPC TestlinkAPI py  Git repository ai    git wrapper sh        Class        engine grid py     run tests in TestCaseName string in TestList  list   in RunTimes int out RobotResult string    get test results in TestCaseName string   in RunTimes int in Tolerance int   out ResultString string         Tool      Robot Framework     lt  lt Library gt  gt   RobotFramework SeleniumLibrary     lt  lt Tool gt  gt   Selenium Grid Hub     lt  lt Class gt  gt   engine robot py     run tests in TestCaseName string in TestList list   in RunTimes int out RobotResult string    get test results in TestCaseName string   in RunTimes int in Tolerance int   out ResultString string      lt  lt Tool gt  gt   Robot Framework     lt  lt Library gt  gt   RobotFramework SeleniumLibrary     lt  lt Tool gt  gt   Selenium WebDriver       Selenium Nodes    Product to be tested    FIGURE 13  The class diagram of FNTC  The picture had to be rotated    due to the large size     66    APPENDIX 3  T
21. _     look through this dictionary for the correct class  for key  entry in d items     if key    cls  name    continue    try   if issubclass entry  cls    logger debug  Found engine  96s   key   engines append entry   except TypeError   Hthis happens when a non type is passed in to  Hissubclass  Non types can t be instances  so they    will be ignored   continue  return  ok     except Exception  e     if something goes wrong while loading modules  loading is    aborted  logger critical  Error while loading modules   s   str e    return  error     After all usable engines are found  their class names are compared to  the engine name that was polled from TestLink s custom fields  The  engine name in the custom field must be a match to the class name of  the engine  thus the engines in the custom field are named the same  way as  exampleEngine   Once a matching engine is found  it is loaded  immediately and the script proceeds to testing  However  if there are  no matching engines  engine defined will remain false and the testing  run will be aborted  The code for loading the engine can be found on  the next page     52    for e in engines  scroll through all found engines and find the correct one  ife  name    cfEngine   engine   e sys argv 2   vOutputdir  testdir  sys argv 8    engine defined     True  break    5 3 5 Robot engine    Robot engine is the default engine used in FNTC  It used to be a solid  part of the main script  but when the plug in system was implemented   R
22. a RIDE   File Edit Tools Navigate Help   ti DU     mLogin Tests Valid Login   Higher Level Login Documentation  Invalid Login  Simple Login Setup   Valid Login   v mResources eows  resource  html Tags   Timeout    1 Open Browser    2 Location Should  Be   3 Title Should Be   4 Input Text   5 Input Text   6 Click Button   7 Location Should  Be   8 Title Should Be   9 Close Browser       Edit Clear  Edit Clear  Edit Clear  Edit Clear  Edit Clear    Add Row Add Column    Source  SeleniumLibrary   library        Arguments    url   browsermfirefox   aliasmNone     Opens a new browser instance to given url    Possible already opened connections are cached    Returns the index of this browser instance which can be used later to   Switch back to it  Index starts from 1 and is reset back to it when       Close All Browsers  keyword is used  See Switch Browser    for  example    Optional alias is a alias for the browser instance and it can be used for  switching between browsers similarly as the index  See    Switch  Browser    for more details about that     Possible values for browser are all the values supported by       FIGURE 6  A screenshot of RIDE s interface  How To   RobotFramework RIDE Wiki  October 2011     25    Usage    Once Robot Framework is installed and tests are created  they can be  executed from the command line using command    pybot  options   testScript1 txt   or jybot with Jython or ipybot with IronPython  It also  accepts several scripts at once or folders that
23. aation perustoiminnallisuus saatiin rakennettua ajallaan siten   ett   sit   pystyi k  ytt  m    n FreeNestin testaamiseen  Osa suunnitelluista  lis  ominaisuuksista j  i kuitenkin keskener  isiksi tai puuttumaan kokonaan ajan  puutteen vuoksi  mutta niiden puuttumisesta ei kuitenkaan koitunut  huomattavaa haittaa testausautomaation toiminnalle        Avainsanat  asiasanat   FreeNest  SkyNest  Robot Framework  Git  TestLink  Selenium   testausautomaatio    Muut tiedot                Zl DESCRIPTION  a    JYV  SKYL  N AMMATTIKORKEAKOULU             J JAMK UNIVERSITY OF APPLIED SCIENCES  Author s  Type of publication Date  KORHONEN  Niko Bachelor s Thesis 20 11 2012  Pages Language  75 English       Permission for  web publication   X           Title  ENHANCED TESTING AUTOMATION PROOF OF CONCEPT FOR FREENEST       Degree Programme  Software Engineering       Tutor s   PIETIK  INEN  Kalevi       Assigned by  RINTAMAKI  Marko       Abstract    The purpose of this thesis was to create a working testing automation proof of  concept by using TestLink  Robot Framework and Git  The automation is  supposed to run the tests given from TestLink in a cloud environment by using  Robot Framework and report the results back to TestLink  Git is used for getting  the most recent versions of tests during the testing run     Software testing  cloud services and the tools used in the project were  introduced in the theory part of this thesis  The elements  architecture   components and the functio
24. anches are meant to be  used for developing new features without interfering with the master  branch and when the feature is finished  it can be merged to the    33    master branch and removed  Each branch is independent of other  branches  For example a developer can work on new features in a  development branch  checkout to master and create a new branch for  a hotfix  After the hotfix is done  it can be merged with the master  branch and the development of new features can continue from where  the developer left off  This way the developers can work on their own  parts of the project safely without causing conflicts with the rest of the  team   Git Branching   What a Branch Is   About Git     Usage    When the user starts working on a new feature  the first step would be  creating a new branch for the feature by using a command    git branch  featurex     At this point the user is still in the master branch  so the  branch needs to be changed with command    git checkout featureX    The user can switch the branch at any point  but if there are untracked  changes  Git will not allow the switch before the changes have been  committed  The new branch is a complete copy of the master branch  from the moment when the branch was created  so the user can start  working on the feature   Getting Started   Git Basics     Whenever the user has made progress that needs to be saved  the  work has to be added into the staging area first  This can be done with  command    git add index 
25. and passed reports from Robot Framework  Page 11                 Robot Framework Introduction  2012     27    Rebot    Rebot is an output post processing tool included in the Robot  Framework installation  The tester can use it to generate the log and  report files if they were not generated during testing  or most  importantly combine several output xml  files into one  This is useful  when tests have been executed on several machines or instances  for  example when the same tests were run on different environments  and  the test data should be readable from only one file  The output files  can be combined easily by running a command    rebot  options   output1 xml output2 xml   Since the names Robot Framework  generates are not user friendly in the case of huge test suites  it would  be a good idea to use the      name MySuite    option when combining  the output files   Robot Framework User Guide  September 2012     3 3 Selenium    Selenium is a suite of tools for automating web browsers by Sauce  Labs  It is mostly used with various testing frameworks for  automatically testing web applications  but it can be used for example  for automated web administration tasks as well  It also has support for  multiple platforms  like Windows  OS X  Linux and Solaris  and it can be  controlled by many programming languages  C   Java  Perl  Python  etc   and testing frameworks  Bromine  Junit  Nunit  Rspec  Robot  Framework etc     Selenium  August 2012     There are several component
26. cc a70731023c59 8b3 fd 1 filename cloudbroch aug2011   net  pdf    CodeProject  20 March  2012  What is software testing  What are the  different types of testing  Referred on October 16  2012     http   www codeproject com Tips 351122 What is software testing   What are the different ty    CodeThinked  June 30  2009  What is Unit Testing  Referred on October  25  2012  http   www codethinked com what is unit testing    FreeNest org  2012  Portable Product Platform  Referred 4 10 2012   http   freenest org about    Git  n  d  About Git  getting started  Referred on November 14  2012   http   git scm com about   http   git scm com book en Getting Started    Guru 99  n  d  What is System Testing  Referred on October 26  2012   http   www guru99 com system testing  html    IBM  n  d  IBM Cloud Computing  What is cloud computing  Referred on    October 24   25  2012  http   www ibm com cloud   computing us en what is cloud computing html    61    InfoWorld  n  d  What cloud computing really means  Referred on    October 24  2012  http   www infoworld com d cloud computing what   cloud computing really means 031 page 0 0    JAMK  n  d  Projektit  SkyNest  Referred on October 31  2012   http   www jamk fi projektit 1233    LuckyDonkey  January 2  2008  Python Style Plugins Made Easy   http   www luckydonkey com 2008 01 02 python style plugins made   easy     OpenStack  n  d  Software  Compute  Networking  Storage  Referred on    November 12  2012  http   www openstack org software 
27. e   Robot  Framework User Guide  September 2012     Test Data    Robot Framework    Met rr e e ee eere eere eee 2 7              leSt library API    Test Libraries    Test Tools  DE Application interfaces    System Under Test    FIGURE 5  Robot Framework s high level architecture   Robot  Framework User Guide  September 2012     Robot Framework runs on Python and Jython  which is based on Java   and at least one of them is required to be installed  Robot Framework  2 7 and newer also have support for IronPython which is based on   NET  New keywords and functionalities can be enabled by importing  libraries in tests  new libraries can be created using the provided  library API and they can be implemented with Python or Java   Robot  Framework User Guide  September 2012     23    Creating tests    Robot Framework uses test case files that are treated as test suites for  all test cases in the file  The directories that contain test case files are  considered as higher level test suites and they can also contain test  suite directories  forming a deep hierarchical structure  One test case  file can contain several test cases and each one of them is run when  the script is executed  The test case file can be in HTML  TSV or plain  text format  each one having slightly different structures  Their  functionality however is the same  so the format to be used depends  on the tester s preferences and the tools available   Robot Framework  User Guide  September 2012     A test script ca
28. e 8 for the  architecture     29    Windows  Linux  or Mac  as appropriate        ia C  m    J  675     Selenium Core Selenium Core Selenium Core    Application Application Application  Under Under Under  Test Test Test        Remote  Control Server      Machina boundary   opllanab          55er ssotepunale so OS    Java  Ruby   Python  Peri   PHP or  Net    FIGURE 8  Simplified Selenium architecture diagram   Selenium  Documentation  August 2012     Selenium WebDriver is a more advanced version of Selenium Remote  Control  The main difference between them is that selenium RC uses  JavaScript functions for running all the supported browsers and finding  the correct elements from websites  while WebDriver uses each  browsers built in support for automation  running the browser directly  instead of using JavaScript  This makes it more reliable to test dynamic  websites where the content can change without the page being  reloaded  It also fixes some limitations RC has and makes tests easier    30    to read and maintain than with RC  Although RC can be considered  deprecated  it is still actively supported in maintenance mode due to  providing support for more languages and most browsers   Selenium  Documentation  August 2012     Selenium Grid    Selenium Grid is a built in Selenium Server functionality  While RC    WebDriver usually runs on only one machine  Grid can form a network  full of machines connected to each other  It consists of two kinds of  servers  Hubs and nodes 
29. e author of this thesis  The  method for reporting test results is shown on the next page     46    def reportTCResult self  tcid  tpid  status        reportTCResult  Report test result directly into Testlink    un    data     devKey  self devKey   testcaseid  tcid   testplanid  tpid    status  status   guess  True   return self server tl reportTCResult data     The API needs two arguments for setting up the connection to TestLink   The server URL and an API access key  The server URL needs to point  to the specific file in the TestLink installation  xmlrpc php in  lt TestLink  installation path gt  lib api  folder  which handles the connection on  TestLink s end  The developer s key is user specific and needs to be  generated in the user profile in TestLink  so it would be a good idea to  have a separate profile for FNTC  Both the server URL and the access  key are written in testlink client conf  file in FNTC installation and they  are used automatically after FNTC has been set up properly  They are  given for the API when the class is initialized and the API is fully  functional after that     At FNTC s current state the API is only used for polling the custom field  information from TestLink  However  the API reguires information for  polling and some of the information might not be available before  asking for it  therefore FNTC needs to execute five polls before it has  all the data needed for polling the custom field values  and additional  four polls for getting all t
30. e plug in system  At the same time the  integration name was changed to FNTC  FreeNest Test Controller     The current version of FNTC is almost completely class based and most  of the parts can be swapped to similar ones with some modifications   When the testing run is started  it asks for testing data from TestLink s  custom fields and decides the testing engine by the received data  It  comes with two testing engines by default  the simpler Robot engine    40    and more advanced Grid engine  FNTC can also pull the newest test  versions from the Git repository just before running the tests making  sure that no outdated tests are used in the testing run  See figure 13 in  Appendix 2 for FNTC s class diagram     5 2 Environment elements    The tool chain is spread across several virtual machine instances for  better flexibility and performance  There are four types of machines  used in the tool chain  each one having their own tools and  configurations to serve their purpose better  The purposes of the  virtual machines have been defined more accurately since the original  plans and a new type of virtual instance  Grid Slave  had to be added  into the tool chain  but the original presentation picture about the  architecture of the test automation is still mostly accurate  See figure  11 for the original architecture plan     41    Test automation framework in the cloud       Team Server  FreeNEST 1 3 Automation Bench  Master Tester Target  Deep Forest  i In multiple instanc
31. ed testing and kills the  instances when they are finished  Serial tests  meaning the tests that  would have conflicts with parallel tests  are then executed one by one  on a pybot instance  After all tests are finished  the results are    55    collected and combined into one XML file  The results are parsed the  same way as in Robot Engine  but since Parabot disables Robot  Framework s report and log files  links cannot be generated     5 4 Installation    At the current state the installation process can be very long and  tedious for a new user  It requires installing several tools  setting up  connections and manual configuration file editing on three different  machines  and multiple test runs before there is even hope for FNTC to  work as it should  This problem could be fixed by carefully building  Debian packages that would automatically handle the installation on all  machines  but until then  the installation will be the hardest part in  using FNTC  The instructions can be found in Appendix 4  however it  should be noted that they might not be perfect     5 5 Usage    Testing is started by creating a new test case in TestLink  It is  recommended that all fields are filled to clarify what is supposed to be  tested in the test case  however only the test case name and custom  fields are required for FNTC to work correctly  The test case name  should not contain any spaces since they break the parameters and  the test run will fail due to incorrect data  Once all field
32. ermine if the unit  he implemented produces the expected output  They need to be built  in a way that they go through different inputs and can force errors and  exceptions to be raised  they should only cover one unit at a time and  they should be fast and small enough to be run while developing the  software  They are meant to be used for catching errors as accurately  and early in the development as possible  meaning that if a unit test  fails  the developer most likely knows almost immediately what went  wrong  Since knowing the system is reguired and the testing is usually  carried out by the developers  unit testing falls under the white box    13    testing approach   CodeProject  March 2012  CodeThinked  June 2009   Unit Testing  Wikipedia     Integration testing    Integration testing focuses on testing the interaction between a group  of units of the system  While unit testing makes sure that individual  units work as they should  integration testing makes sure they also  work well together  If the software and hardware have any relation   that is also tested in integration testing  The testing is usually handled  using the unit interfaces  simulating different scenarios by using  different inputs  therefore integration testing usually falls under the  black box testing approach   CodeProject  Software testing Tutor   Integration Testing  Wikipedia     There are three approaches how to carry out integration testing  Top   down  Bottom up and Big bang  In top down app
33. es       Instance  FreeNEST 1 3 Project Platform z     tomat Re    FreeNEST 1 4  Development  Test Management for Version  Manual Testing ties feta Execution Beaton or k In multiple instances  Instanoe     Test  Instance  3    Instance   Test  Instance  2    Instance   GIT Version control Repository MESES Se Test   Testlink is already installed inside FreeNEST  Se n Instance  1    Open Stack EC2 cloud    FIGURE 11  The original testing automation architecture plan  Marko  Rintamaki  Q1 2012     Team Server    The first instance in the tool chain is called Team Server  Its purpose is  to act as a base of operations where the testing team can keep track  on  modify and execute the tests  thus it needs to contain a test  management tool and a version control repository  In this case an  instance of FreeNest 1 3 is being used as a Team Server  more  precisely SkyNest s own FreeNest instance called Strongbow  TestLink  and Git are included in the FreeNest installation  leaving only some  configuration to be done in TestLink in order to enable the testing    42    automation  Team server is the only machine that is located outside  the JunkCloud and there should be only one Team Server per one  project     Master Tester    The second type of virtual machines is called Master Tester  Its  purpose is to process and run all the tests it receives from Team  Server  or distribute the tests for slave machines to run if the testing  framework allows it  The machine has Robot Framework  Se
34. h the application  trying different usage and  input combinations and comparing the results to the expected results   Testers follow a test plan and execute the tests according to the  detailed test cases assigned to them  The results are then gathered  from all testers and compiled into a test report   SmartBear  Manual  testing  Wikipedia     2 2 2 Testing approaches    White box testing    There are three approaches for testing software  white box  black box  and gray box testing  White box testing  also known as glass box or  structural testing  means that the tester has full understanding about  what happens inside the program and test cases are designed using  that knowledge and programming skills  The tester chooses his inputs  in a way that he can check all the paths through the code and  determine appropriate results   CodeProject  March 2012  Software  testing  Wikipedia     Black box testing    Black box testing  also known as functional testing treats the program  like a black box  The tester has no knowledge about the internal    11    functions of the program  he only knows what the program is supposed  to do and not how it does it  The tester takes the role of an end user   tries different inputs and checks that the program returns appropriate  outputs   CodeProject  March 2012  Software testing  Wikipedia     Gray box testing    Gray box testing is a combination of white box and black box testing   The tester can have access to the internal code of the program
35. hat development tools and technologies are available  depends on the service provider  so the developers will not have  complete freedom over what they can create  however the system is  more predictable and manageable that way  Good examples of this  type of cloud service are Google s App Engine and Salesforce com s  Force com   InfoWorld  IBM  Cloud Computing  Wikipedia     2 1 3 Infrastructure as a Service    Infrastructure as a Service is the most basic type of cloud services  The  user only receives machines or virtual machines including web servers   data storages and networking which are maintained by the service  provider and it is the user s own responsibility to install the operating  system and all the required software and keep them up to date  The  user does not have to buy his own hardware to run his software and he  can request more computing power if necessary   IBM  Cloud  Computing  Wikipedia     2 2 Software testing    2 2 1 General testing    Software testing is a process to detect differences between the given  input and expected output  It is used for assessing the quality of the    10    software and should be handled throughout the software s  development  It is a verification and validation process  making sure  the product behaves the way it is wanted to behave and that the  product is built according to customer requirements   CodeProject   March 2012     Manual software testing is performed by a human sitting in front of the  computer  going throug
36. he custom field values  An example about  polling the custom field value can be found below     client   TestLinkAPI TestlinkAPIClient SERVER URL  devKey       Other polls are reguired here for getting all the information        cfEngine  client getTestCaseCustomFieldDesignValue prefix         tcidlist 0    tc external id    tcinfo 0   version    sys argv 4    testingEngine           logger debug  Got engine from custom field   s   cfEngine     47    5 3 3 Git wrapper    Git wrapper is a small class used for interacting with Git  The main  purpose of Git in FNTC is holding a repository of all test case versions   testers are able to write and update their tests on their own computers   push the changes to the repository and the tests will always be  updated to the latest versions just before running them  It has also  been planned that certain test versions could be tagged using Git s  tags and the Git wrapper would be able to pull those specific test    versions when needed     For now the Git wrapper consists of two parts  git_puller py and  git_wrapper sh  The sole purpose of the python file is to run the shell  script using the Popen  function of the subprocess and catch the  possible exceptions that can occur during the process  At the current  state the error situations are slightly unclear  which lead to disabling  the error handling  However  a possible exception is unable to break  anything  the only thing it affects is failing to pull the newest test  versions and t
37. he failure can be seen from the logs as blank Git output   The pull  method in git_puller py as it is now can be found on the next    page     48    def pull self  testdir    try   self logger debug  Starting GIT process    gitpull   subprocess Popen   sh     git wrapper sh   cwd testdir stdout subprocess PIPE stderr s  ubprocess PIP E  communicate      Aself logger debug  GIT output list   6s   str gitpull      check and raise an exception if errors occur   disabled for now  if str gitpull 0   find         raise Exception str gitpull 1      else   self logger debug  GIT output   s   gitpull 0    return  ok   except Exception as e     if something weird happens  a message will be    returned and old tests are run  self logger critical  GIT process exception   s   str e    return str e     The shell script is located in the base folder of the Git repository that  contains all the test scripts  Its purpose is to run the actual Git  commands inside the repository and use the correct SSH key for  authenticating  The script uses SSH agent for finding the correct key  and then runs the Git command  In the future the alternate commands  could be run in this same file based on additional arguments it would  receive from git_puller  Here are the contents of git_wrapper sh as they  are now        bin sh    ssh agent bash  c  ssh add  var www  ssh wwwdata  git pull       5 3 4 Plug in system    One of the key features making FNTC more flexible is the plug in  system  It allows users to 
38. html     index html being the changed file  This  does not mean that the file is saved  it only means that git will be  tracking its changes  The file can be saved into the repository by  committing it with command  git commit  m    edited index html      Now  the changes have been saved locally into the branch where the user is  working currently   Getting Started   Git Basics     34    After enough development the user can merge the branch to the  master branch  This is done by switching to the master branch and  using command    git merge featureX   Git will automatically try to  merge the changes but in some cases there have been changes to the  same file in two branches  In these cases git might not be able to  merge them automatically  thus the user has to open the conflicting  file and fix the conflicts manually  Git adds conflict markers to the  areas where the conflicting changes are located to make it easier for  the user to solve the conflicts  After the file has been fixed  the  changes must be committed again and the merging should work  properly   Getting Started   Git Basics     The project can be shared either by cloning it  pulling the changes or  pushing it to a remote server  Cloning is the first time operation when  the project needs to be downloaded and it can be done with command     git clone server path to repository git    provided that the user has  sufficient rights for cloning the repository  After the project has been  cloned  the original reposit
39. ine  Grid engine separates the given tests into blocks and executes  them on separate virtual machines in parallel  Tests that can not be  executed in parallel are not tagged and they will be executed  afterwards on a single machine using serial execution  It then compiles  the test results into one XML file and the results are parsed from that  file     The base of the engine is almost the same as in Robot engine  but  most of the functionality is handled using Parabot  Parabot was found  from SeleniumLibrary s Google Code page  Advanced test distribution  utilizing Selenium GRID   and it was originally written by Thomas Klein  in 2009 and heavily modified to fit in FNTC by the author of this thesis   Parabot py was turned into a class that can be imported directly into  the engine and the functionality was modified for more suitable test  handling and test execution  Due to different ways of handling the  tests and several other modifications  Grid engine is not fully functional  at the time of writing this thesis  however the development will    continue in the near future     Instead of forming the command  the engine makes sure that the test  scripts exist and send them to Parabot for execution  Parabot checks  all the tests it receives  divides them into parallel tests and serial tests  depending on the tags and the parallel tests are then further divided  into test blocks  Parabot then starts a pybot instance for every test  block  polls when each one of them is finish
40. ing only hides the plan from  everywhere else except the overall test report   TestLink user Manual   March 2012     Test cases    Test cases are testing tasks that consist of test steps and their  expected results and they are located in test suites like files inside  folders  Test suites should be used for sorting the test cases into  categories depending on the test subject for easier test management   Each test case can be considered as one test that verifies the  functionality of a small part of the system under test and they can be  executed either manually or automatically  Test cases are project    19    specific and they can be added into more than one test plan   TestLink  user Manual  March 2012     Test cases can be created inside test suites right after the project has  been created  The user can give a name  Summary  preconditions and  keywords for the test case  from which only the name is required   Summary and preconditions however are recommended since they  give additional information for the tester and that can be crucial for the  test to pass  After the test case has been created  the user can start  adding steps for the test by clicking    Create step     button  A step  consists of the step actions and the expected results  and both are  required for a proper test  Adding test steps is not required for  automated tests  but the testing automation needs to be enabled from  the TestLink configuration file  See an example of a passed test in  Figure 4   Te
41. ing resources of the cloud  It can manage large networks of    36    computers and turn them into computing power that can be distributed  on demand  It is designed to scale horizontally on standard hardware  and it can use MaaS  Metal as a Service automatically when a new  computer is plugged into the network and use it as additional  computing resources   Compute  OpenStack     Networking    OpenStack Networking  also known as Quantum  manages the device  networking in the cloud  Administrators and users can use it for  creating and managing internal networks and IP addresses  and  controlling traffic  Quantum allows users to use floating IP addresses  for dynamically rerouting the traffic for other instances during system  maintenance or a system failure  Its purpose is to ensure that the  network will not be the limiting factor in the cloud deployment    Networking  OpenStack     Storage    OpenStack Storage supports two types of storage  Object storage  also  known as Swift  and Block storage which is also known as Cinder   Object storage means a distributed  static storage  like backups and  archives  Swift stores the data across the cloud on multiple drives and  if a server or a hard drive breaks  the data is replicated on other active  nodes  This ensures the integrity of the data even if the cloud consists  of cheap common hardware instead of expensive equipment  Block  storage is the opposite of Object storage  it means more dynamic type  of storage like databases a
42. k operating system diagram                 36  FIGURE 11  The original testing automation architecture plan        42  FIGURE 12  The required structure of the Engine  class            50  FIGURE 13  The class diagram of FNTC           llle 65    FIGURE 14  The sequence diagram of FNTC           0000 eens 66    APPENDICES   APPENDIX 1  Example of a robot framework test script            64   APPENDIX 2  The class diagram of FNTC     ll slku 65   APPENDIX 3  The sequence diagram of FNTC            00 0 eeu 66   APPENDIX 4  FNTC installation instructi0NS            o    ooo    67   TERMINOLOGY   FreeNest A project management environment developed  in SkyNest  project    SkyNest A project hosted at JAMK University of Applied    Sciences     Cloud Software Finland  A program of TIVIT that aims to improve Finnish    competitiveness in software development     Tekes The Finnish Funding Agency for Technology and  Innovation   MIDEaaS Mobile IDE as a Service  a project where    testing automation is used     NSN Nokia Siemens Networks  the supporter of  Robot Framework     Robot Framework A generic testing automation framework  supported by NSN     TestLink    Git    Python    PHP    HTML    OpenStack    JunkCloud    Selenium    Selenium Grid Hub    Selenium Grid Node    A web based test management tool     A code version control system     An object oriented  high level programming  language that emphasizes code readability    What is Python  Executive summary   Python org  3 10 201
43. lenium  Server  Git and FNTC installed  but Robot Framework and Selenium can  be replaced with the testing frameworks of tester s choice with some  modifications in FNTC  Depending on the testing frameworks used and  the complexity of the tests  Team Server and Master Tester are the  only machines required in the tool chain     Grid Slave    The third type of virtual machines in the tool chain are the slave  machines that run the tests  Grid Slaves  They are the dumb slaves in  the tool chain  they run the tests they receive from Master Tester and  return the test results after they are done testing  The tool chain is  designed in a way that there are several Grid Slaves  each one of them  has one Deep Forest to run the tests against and they can be taken  down if they are not needed  The connection between the slaves and  Master Tester is handled using Selenium Grid  the hub being located in  Master Tester and Slaves containing the nodes  When tests are  executed  the hub chooses those slaves that are currently inactive and  uses them for running the tests     43    Deep Forest    The systems under testing are located in the last type of virtual  machines which are called as Deep Forests  Their only purpose is to be  on line while tests are run against the systems installed in them and  when the system becomes too corrupt due to all the testing  it can be  taken down and replaced with a fresh system  All Deep Forest  instances can have different configurations like operating
44. n be visible for  all projects  but they need to be assigned to a project before they can  be used  By assigning the custom fields properly  each project can  have its own set of custom fields in use   TestLink user Manual  Mrch  2012     Custom fields need to be defined by navigating in  Define Custom  Fields   link in the project main page in TestLink  The user can give the  custom field a name  field type  availability and time allowed for  editing  like during test specification or execution  Before the custom  field can be used  it needs to be assigned to the test projects  This can  be done by navigating in  Assign Custom Fields  in the project main  page  They can only be assigned into the project that is currently  selected in TestLink  thus they have to be assigned separately in each  project   TestLink user Manual  March 2012     3 2 Robot Framework    Robot Framework is a generic test automation framework for end to   end acceptance testing and acceptance test driven development  It  can be used for all testing levels from running groups of simple unit    tests to full scale system tests  and several types of applications like    22    simple command line applications as well as web sites  Its modular  architecture allows it to run tests without the core knowing anything  about the target system  all interaction between Robot Framework and  the target system are handled by test libraries and lower level testing  tools  See figure 5 for Robot Framework s architectur
45. n file has separate sections  for every engine with the engine specific data  The correct sections are  then loaded inside the engines and the correct data is assigned to    variables     FNTC also has error handling throughout the script  If something goes  wrong  for example if TestLink API cannot establish a connection to  TestLink or an engine fails to load  the rest of the functions are aborted  and a blocked result is returned to TestLink  The error message is then  displayed in TestLink and in logs  making troubleshooting easier     5 3 2 TestLink API    In order to successfully run the correct tests FNTC needs to ask for  some additional data from TestLink  The information FNTC needs is the  engine  runnable tests  the amount of times the tests are run and test  failure tolerance  and those are given separately using the custom  fields in every automated test case in TestLink  The only way FNTC can  access that data is by using the TestLink API     The API used in FNTC is TestLinkAPI py  a python class written in 2011  by Olivier Renault and based on James Stock s testlink api python   client R7  It contains methods for connecting to TestLink s XML RPC  interface  some basic methods for verifying the functionality of the API  and several methods for polling additional information from TestLink  and creating new test projects  plans  builds and cases  There are also  two additional methods for reporting test results and uploading  attachments into TestLink  added by th
46. n have tables with different purposes  The tester can  change the test behavior by importing libraries  resource files and  variable files  defining metadata for test cases or suites  or setting tags  in the Settings  table  The variables used in the tests are defined in the  Variables  table and user made keywords are created from lower level  keywords in the Keywords  table  The test cases are created using  keywords in the Test cases  table  All keywords are written in English   one keyword being in one row with its arguments  This makes the test  scripts easily readable and manageable  See Appendix 1 for an  example of a test script   Robot Framework User Guide  September  2012     Testers can create their tests using any editor they want  but there is  also a tool called RIDE  which is designed for creating test case files  more easily  Instead of writing all the keywords with a text editor  the  user can create tests using a graphical interface shown in figure 6   RIDE can import libraries automatically when specific keywords are  added  test settings are written in their own text boxes and keywords    24    can be chosen and added into the table from a list  The user can also    run the test directly from RIDE to make sure it is working properly and    export the test when it is finished  However  unlike Robot Framework     RIDE does not support Jython or Iron Python  the regular Python is  required for using RIDE   How To  RobotFramework RIDE Wiki  October    2011    
47. nd expandable file systems  Users can  attach blocks into server instances by using the dashboard  allowing  them to manage their own storage needs  The storage can be unified  with enterprise storage platforms and backed up by using snapshot    37    management  Snapshots can then be used for restoring data or  creating new block storage volumes   Storage  OpenStack     JunkCloud    JunkCloud is SkyNest s own OpenStack cloud  It has been mostly built  out of low powered computers that were either salvaged or donated for  the project  hence the name JunkCloud  It is mainly used for  researching how the cloud behaves  and testing FreeNest and other  applications in a cloud environment  The project has its own Cloud  team assigned to maintaining and researching JunkCloud and further  developing new features to it  One example of the developed features  is CloudNest  tool  which can be used for executing commands in the    cloud from external machines     4 TARGET OF WORK    Problem    Since FreeNest is being developed using agile working methods and  new features and tools are added and developed  all components need  to be tested frequently to make sure everything works as intended   Every tool needs to be tested separately to make sure the tool still has  everything working  and with other tools to make sure that installing  one tool does not break any other tools or their functionalities  Some of  the tools are also connected to each other enabling some additional  features 
48. ng the certificate     The last step is starting the Selenium Server  The server can be  downloaded here  2 25 0 being the latest one at the time of writing  this  http   seleniumhg org download    It does not matter where selenium server standalone 2 25 0 jar is  saved as long as it can not disappear  AdminUser s home folder was    used in this case  Now the server can be started using command     DISPLAY  1 java  jar selenium server standalone 2 25 0 jar  role node  hub  http   192 168 42 104 4444 grid register  firefoxProfile Template      home adminuser  mozilla firefox f02n6b5q Selenium        DISPLAY  1    defines the display that is used for running Firefox    role  node    defines the role of the server      hub  IP port     defines the  location of the hub and     firefoxProfile Template  path     is the profile  that is used for running Firefox  After the connection has been  established  the tool chain is ready for testing     
49. ns of the testing automation are described in the  practical part of this thesis  Installation instructions are included in appendices     The basic functionality of the testing automation was built in time well enough  for it to be used for testing FreeNest  However  a part of the planned features   was left either unfinished or completely missing due to limited time  however   they did not cause any noticeable trouble for the testing automation        Keywords  FreeNest  SkyNest  Robot Framework  Git  Testlink  Selenium  testing  automation    Miscellaneous                CONTENTS  TERMINOLOGY 2222528021 m ee RRePTPSPUEERE ECCLE i4 3  INTRODUCTION om Gat baba ae a oe Y tes 5  lb BreeNGSE   ciliate bct adeo X XX Red e o E EP S 5  1 2 Cloud Software Finland                o ooooooomo ees 6  1 3  ODICCUVG con aaa a ooo 6  2 MAIN CONCEPTS E ee aa ae we 7  2 1 Cloud computing PME DE 7  2 1 1 Software as a Service sess seaweed ee eee es 8  2 1 2 Platform as a Service    lt  2 6 ee ee 9  2 1 3 Infrastructure as a Service            ooooooo ooo  9  2 2 Software testing ae aec oce o    me ctp SCRIP PUR BOSCO 10  2 2 1 Testing in genesral    A aec to 10  2 2 2 Testing approaches    ocrrx katie phe seek 10  2 2 3 Testing levels       oloon ees 11  2 2 4 Automated testing              o oooooooooo   15  STOOLS SKA neat be p RT ee tanh ane eer es eet etes  17  SL TESCA saso saw ERRLLRRexGqGc cata Ex E NR 17  3 2 Robot Framework              llle 22  3 3 Selenium  synodum mm RT EEE EN X 
50. nt Specification   Test Specification   Test Execution   Test Reports Test Project   RBX TestCenter    User Management   Events    RBX   4                       Test Project      Test Project Management  Assign User Roles   G Define Custom Fields  Assign Custom Fields  Keyword Management  Platform Management   G inventory   G Issue Tracker Management    User Management    User Management    Role Management    Requirement Specification   Requirement Specification   Requirement Overview   G Search Requirements   G Search Requirement Specifiations   Assign Requirements   Generate Requirement Specification Document    Test Specification   Test Specification   G Assign Keywords   G Generate Test Specification Document  Documentation     Choose Document  Y    FIGURE 3  A screenshot of TestLink 1 9 4 demo     Test projects    Current Test Plan       TestPlan 2      Test Plan     Test Plan Management  O Builds   Releases   G Assign User Roles  Milestone Overview    Test Execution    O Execute Tests   G Test Cases Assigned to Me  G Test Reports and Metrics  G Metrics Dashboard    Test Plan contents      Add   Remove Platforms   G Add   Remove Test Cases   Update Linked Test Case Versions  G Show Test Cases Newest Versions  Assign Test Case Execution   G Set Urgent Tests    A test project is the base of the whole testing process in TestLink     without it there is nothing to be tested  It can mean a product or    solution to be tested and it contains the requirements documentation     
51. obot engine was moved into its own class  Its purpose is to simply use  Robot Framework for running the given tests one by one on a single  machine  process the test results and send them for FNTC to take care  of     The engine contains two important methods  run tests and   get test results  The run tests  method takes three arguments  the  test case name  a list of tests and the amount of times to run the tests   and uses them to build a command for starting Robot Framework  First  it uses the test case name as the test suite name in reports and sets  the non critical tag in the case of non critical tests  Then it goes  through the test list making sure that the test scripts exist and adds  each found script into the command  The command is finally executed  using the Popen  function of the subprocess  Robot Framework runs the  tests  the results are written into different folders and the engine will  not proceed before all related tests have been executed for required  number of times  Error handling is used whenever there is a possibility  for something to go wrong  and the error message and a blocked result    are returned to TestLink when an error occurs     53    After Robot Framework has finished testing  get test results is called   It takes three arguments  test case name and amount of times to run  the tests  which are used for finding correct output folders  and  tolerance which is used for deciding if enough non critical tests have  passed  The method parses the
52. olled from TestLink  In this case Robot engine will be  used for running the tests  It launches Robot Framework and gives the  correct tests for it  which will use Selenium Grid for running the tests  against Deep Forest  the test instance of FreeNest  Even though Grid  has the capability to run the tests using several nodes  in this case only  one node is used  After Robot Framework has finished testing  FNTC  uses the same engine for getting the test results  The results are  returned as a list and they will be passed on to  fakeXMLRPCTestRunner php and then to TestLink  which updates the  test case with the results    In case errors happen during some part of the execution  FNTC will    54    always wait for a result string from classes and other parts  If  everything is in order  the string contains only a word  ok   If the string  is not    ok     it is assumed that something is not working as it should  and the string is returned to TestLink as an error message along with a  blocked result  The whole process can be seen in Figure 14  which is  located in Appendix 3     6 RESULTS    6 1 Current state    The testing automation built in this project was mostly finished in time   Some of the features did not get further than the planning phase and  some features were left unfinished  however  the basic functionality is  works properly  The core parts of the automation were built to be  relatively modular  thus creating and implementing new features  should be easy  If there
53. ory is remembered as origin  The changes  done to the repository after the cloning or latest pull can be pulled  using command    git fetch origin     This will only get the latest changes  but it will not try to merge them  Using    git pull origin    however pulls  the latest changes to the current branch and the files are merged  thus  it can be more user friendly in some cases  The latest changes can be  sent to the repository by using command    git push origin     but it  requires that the latest changes have been pulled from the repository  and all conflicts have already been solved   Getting Started   Git  Basics     35    3 5 OpenStack    OpenStack is an open source cloud operating system founded by  Rackspace Hosting and NASA  Their mission is to produce a massively  scalable but easy to use cloud computing platform that will meet the  needs of public and private clouds  The system can be installed on  standard hardware  like a group of desktop computers and there are no  system requirements  The cloud architecture consists of three main  parts  compute  networking and storage  and it all can be controlled   via browser by using the dashboard  which is also known as Horizon   See figure 10 for the architecture   Software  OpenStack     OPENSTACK    ERATIN TEM    Compute Networking Storage    OpenStack Shared Services    FIGURE 10  OpenStack operating system diagram  Software   OpenStack   Compute    OpenStack Compute  which is also known as Nova  handles the  comput
54. project and when the project ends and a new  one starts  the environment gets taken down and a new one is  launched for the new project  If there are several projects  there have  to be several FreeNests   FreeNest  2012     FreeNest includes more or less all the tools that are needed in a  software project and it can be configured for users  own needs  The  current version at the time of writing this thesis  1 3  is available as a  virtual machine image  but 1 4 will be available as Debian packages   making the installation more flexible  The user can then decide which  tools to install and the environment is ready for use in a short time    FreeNest  2012     1 2 Cloud Software Finland    Cloud Software Finland is Tivit s four year program initiated in 2010  and aiming to    significantly improve the competitive position of Finnish  software intensive industry in global markets    according to Janne  Jarvinen  the Focus Area Director in the program  The most important  factors are operational efficiency  user experience  web software  open  systems  security engineering and sustainable development  and those  are the areas the project focuses on  Tivit was founded in 2008 for the  purpose of predicting the products and services of the future  It is  owned by 46 companies and public research communities and funded  by Tekes   Cloud Software Finland brochure  August 2011     1 3 Objective    The objective in this thesis is to create a proof of concept of a working  testing au
55. py of the  repository is a full clone of the contents and the history of the  repository  Instead of having all the files on a central version control  server  everyone in the project has a full local copy of the project as in  figure 9  In case the server dies  each one of the copies can be used as  a backup for restoring the data into a new server  Furthermore  Git  does not require network connection to work  The user can work on  features and commit changes while being offline and push the work on  the server when network comes available  Since the repository history  is also saved locally  the user can compare the current version to a  version committed a month ago for example  unlike with centralized  version control systems where the project history is located on the  server   Getting Started   Git Basics     32    Server Computer    Version Database                      FIGURE 9  Distributed version control diagram  Getting Started   About  Version Control     Unlike most version control systems  Git does not save keep track of  files as a list of changes to the original files  With each commit  Git  Saves snapshots of the current state the project and treats them like a  small file system  Git only takes snapshots of the changed files while it  creates a link to the previous snapshot of the unchanged files   Getting  Started   Git Basics     Branches    Branching is one of the special features of Git  The project is always  saved in a default branch called master  Br
56. r 15  2011  Strategic Research Agenda for services     Referred on November 19  2012   http   www tivit fi file attachment get Services SRA 2011 12 14 pdf        attachment id 57    Webopedia  2012  Regression testing  Referred on November 1  2012   http   www webopedia com TERM R regression testing html    63    Wikipedia  n  d  Cloud computing  Integration testing  Manual testing   Software testing  System testing  Testing automation  Unit testing   Referred on October 10   26  2012   http   en wikipedia org wiki Cloud_computing    http   en wikipedia org wiki Software testing    64    APPENDIX 1  EXAMPLE OF A ROBOT  FRAMEWORK TEST SCRIPT    This test case verifies that the AboutFreeNEST  page in FosWiki works  correctly  It logs in FreeNest as AdminUser  clicks the link in the  Dashboard and verifies that the page is correct by checking if it  contains text    About FreeNEST     The test was originally created by  Teemu Ojala and it has been used for verifying the testing automation  functionality  hence the simplicity of the test         Settings      Library SeleniumLibrary 5  Suite Tear Down Close Browser        Test Cases       WikiwordDashboard  Open Browser http   192 168 42 111  ff  Maximize Browser Window  Input Text username AdminUser  Input Password password adminuser  Click Button Log in  Click Link FreeNEST  Page Should Contain About FreeNEST  Click Element logoutBtn  Close Browser    65    APPENDIX 2  THE CLASS DIAGRAM OF FNTC     lt  lt Script gt  gt     fake
57. research about how  they could be integrated together so that when the user presses the    39       Execute and save results     button in TestLink  it starts Robot  Framework automatically and saves the results in TestLink  When no  ready made solutions were found  the development of TestLink   Robot  Framework  integration was started and Python was chosen to be used  as the programming language     After the first version that could run the tests was completed  Git was  added to the requirements to be used as a test version control system   It was chosen because of the same reasons as TestLink  It is widely  used and already integrated in FreeNest  Even though it was added to  the requirements at the early stages of the integration  it was not  implemented before the core of the integration was further developed  and refined     During May 2012 the integration was chosen to be included in Vaadin s  MIDEaaS  project  which means Mobile IDE as a Service and is part of  Tivit s Digital Services  program  Digital services SRA  Tivit  December  2011   The software they are developing  Arvue  allows users to design   create and test their own mobile applications using a web browser  and  Testlink Robot Framework  integration was chosen to handle the  automatic testing  Mikko Ojala joined the team to work on the  integration for MIDEaaS and mainly helped to rethink the structure of  the integration for better modularity and develop new features like  logging  configuration and th
58. ression testing  meaning the  tests that need to be run frequently to make sure the software is  working as it should     Benefits    Making regression tests automated usually reduces the time and  resources required for testing the system  since they have to be run  every time someone makes changes to the source code  Running those  tests manually multiple times is costly and time consuming  while  automated tests can be run over and over again once the  corresponding test scripts have been created  A machine also follows  the given scripts precisely making the tests more reliable  while a  human can and most likely will make mistakes during long testing   runs   SmartBear  2012  Testing automation  Wikipedia     There are also some test types that cannot be run manually  For  example  they can take extremely long times  like when testing system  stability  they can be too complex for a human to run perfectly or they  might require huge amounts of resources like hundreds of users using  the system at the same time to test the system performance  Testing  automation can be left running over night and results can be collected  in the morning  which saves working time  It can also simulate multiple    users running the system at the same time using virtual machines     16     SmartBear  2012  Testing automation  Wikipedia     Downsides    While test automation can make a huge difference in bigger projects  it  cannot be used efficiently in some cases and it can be more harmful 
59. roach the integration  starts from the graphical user interface and follows the architectural  structure to the bottom level  while in bottom up approach the  integration starts from the bottom level  In big bang approach all the  developed modules are integrated together to form a complete  system  This can save time compared to other approaches  but if the  tests are not designed and recorded correctly  the testing process  becomes more complicated and might even prevent testing the system  properly   Software testing Tutor  Integration Testing  Wikipedia     System testing  The purpose of system testing is to verify that the software works as    expected as a whole  fully integrated system  The software should be  fully installed on different platforms with different configurations to    14    make sure that all scenarios are covered  Testing that the system  installs correctly and uninstalls without leaving any traces are also  covered in system testing  Test case designs are based on the original  requirements from the end user s perspective  thus system testing falls  under black box testing approach   Guru99  System Testing  Wikipedia     System testing includes over 50 types of testing from usability and  interface testing to stress  load and hardware software testing  which  means testing the interactions between the hardware and software  In  most cases it is impossible to use all testing types for system testing  due to limited resources and huge number of testing 
60. s are filled  the  test case should be added to the test plan for it to show up in test    execution     FNTC is started by clicking the    Execute and save results     button in  the test case in TestLink  TestLink will use XML RPC  protocol for  contacting FNTC and it sends eight parameters for it  Test case name     56    internal ID  version ID  test project ID  test plan ID  platform ID  test  build ID and execution mode  These are received by  fakeXMLRPCTestRunner php  which passes them for FNTC  After FNTC  is launched  it will use the parameters for polling the remaining data  from TestLink by using TestLink API  All results are returned in lists and  it will take several polls before FNTC has all the data required for  running the tests     Once all data has been gathered  FNTC makes sure all test scripts are  up to date by using the Git wrapper  At this point it would also create  new Grid Slaves by using the CloudNest  tool  since it already has  sufficient data for calculating the need for new nodes  CloudNest would  ask OpenStack for running instances and it would create new ones if  there are not enough nodes online  Each node would register itself  automatically to the grid hub and FNTC would not continue before  CloudNest has verified that all nodes are online  However  CloudNest is  not implemented yet     After updating the tests and setting up nodes  FNTC looks for the  correct engine plug in by comparing the class name to the custom field  value that was p
61. s of Selenium  each one having slightly  different purposes  thus the users can choose which ones to use based  on their needs     28    Selenium IDE    Selenium IDE is an add on for Mozilla Firefox  which allows users to  record  edit  debug and run tests straight in the browser  The user can  record his actions on the browser while he goes through the tasks that  need to be automated  let it be some repetitive maintenance task or a  complex website interface test  and turn it into an automated test  script  He can save all the steps into an HTML  file  Ruby script or some  other format and the task can then be run automatically whenever the  user wants  The users can also edit their scripts if needed  in some  cases some steps might not be recorded correctly and they need to be  fixed manually in order to run the task properly  Tasks can also get  changed for example due to interface updates  therefore occasional  manual editing is always required   Selenium IDE Plugins  August 2012     Selenium RC   WebDriver    Selenium Remote Control  RC  is a website testing tool  It consists of  two parts  Selenium Server and Selenium Core  Selenium Server acts  as a receiver between Selenium Core and the testing program like  Robot Framework  it receives the commands  translates and gives  them to Selenium Core  and reports the results back to the testing  program  Selenium Core attaches itself into the browser and runs the  translated    Selenese    commands in the browser  See Figur
62. sion attachments Run    FF  1M mode  Assigned    Any  M  to E EMEN UM 14 11 2012 01 55 21 Mozilla Firefox 28 1 admin  28       7  a    Result Ir 1 mi  T   Bm  zj  on          Build chosen for execution  gt   o             FIGURE 4  An example of a passed test case     Before test cases can be executed  they need to be added into test  plans by clicking    Add to Test Plans     button in the test case overview   The button will not show up if there are no test plans in the project   Tests can be run from Test Execution  section in TestLink and the tests  will not show up in the list before they are added into the test plan   Test execution also reguires a build to be active in the plan  A build can  be considered as a software release that needs to be tested  thus  every time a new version of the software needs to be tested  a new  build should be created for it and only the tests related to the changes  should be run in the build  New builds can be created and activated  from    Builds   Releases    in the project main page   TestLink user    21    Manual  March 2012     Custom fields    The user can modify the test cases to be more accurate by defining  additional custom fields into the test project  They can be used for  giving additional data while specifying new tests cases  making test  reporting more accurate during the test execution  for example by  saving execution times or additional notes  or for passing test  parameters for testing automation  The custom fields ca
63. stLink user Manual  March 2012     20    TestLink 1 9 4  Prague   Speedy  DEMO SITE provided by TestLink Development Team   Mozilla Firefox    File Edit View History Bookmarks Tools Help       S TestLink 1 9 4  Prague   Speed             demo testlink org tl194demo index php EC Ar  Q A  p   fest   TestLink 1 9 4  Prague   Speedy  DEMO SITE provided by TestLink Development Team   admin  admin    My Settings   Logout    4  Link                 Project   Requirement Specification   Test Specification   Test Execution   Test Reports Test Project   RBX_TestCenter  4               User Management   Events    RBX_          Test Plan   TestPlan 2  Build   Mozilla Firefox Test Results on Build Mozilla Firefox 28 1  9       28 1     Settings        Test plan notes    a  TestPlan2 y y   Build description    AR   Mozilla Firefox 28 1 yf    late tree after  Upd g            Print    Show complete execution history    Import XML Results                                    every operation  Export Test Plan     lExport Test Plan                v Test Suite   new suite       W Test Case ID RBX  1   Version   1      functionA  Test Case   No tester assigned  ID RBX_    r  On     Last execution  any build    Build   Mozilla Firefox 28 1  Title     21   Tested by   admin   Build   Mozilla Firefox 28 1   Status  Test Suite zj    Priority  Any    E Last execution  current build    Build   Mozilla Firefox 28 1  Execution                         we    Any  y   Date Build Tested by Status TestCase Ver
64. test specification  test plans and project specific user rights  Test    projects do not share data  so each project should be used for only one    product and by only one testing team if possible  Creating a new test    project is usually the first thing that needs to be done after logging in    with administrator s rights for the first time  This can be done by    clicking  Test Project Management   link in the front page after logging    18    in  When creating a project  there are two mandatory fields  name and  prefix  which is used for test case IDs  The user can give some  additional info or enable some features for the project  or use old  projects as templates for the new project   TestLink user Manual  March  2012     Test plans    Test plans are the basis of the new testing activity  They hold the  information about what needs to be tested and one project can contain  several test plans  for example one plan for integration testing and  another for system testing  New test plans can be created in    Test Plan  Management    and they need a name  description and the status if the  plan is active or not  The description should include information about  the plan  like the scope of the plan  what needs to be tested  what  should not be tested  risks  tools  references to documents etc  Test  plans can also be removed or deactivated  however  removing is not  recommended since it wipes all the data related to the plan  including  test cases and their results  Deactivat
65. the Engine  class     50    The first thing the plug in system does is looking for all the available  engines  It starts from the folder where FNTC is located and continues  looking through all the sub folders for files that match the name  requirements  Here is the code of the part that walks through the  directories looking for correct files     engine defined   False  cls   Engine  engines         path         will start from the folder where the script is installed  for root  dirs  files in os walk path    for name in files   if name endswith   py   and name startswith  engine      path   os path join root  name   modulename   path rsplit      1  O  replace  7        modulename   modulename rsplit      1  1   result     look for subclass modulename   if result     error    break    Every time a file with correct type of name is found  it is be checked for  classes  The script walks the dictionaries inside the file to get to the  last one and checks if their names have  Engine  in them  When a  class with the name Engine is found  the script checks if the class is a  sub class of Engine  If everything matches  the engine is added into the  list of found engines  The code for checking classes can be found on  the next page     51    def look for subclass modulename    try   logger debug  Checking module   s   modulename   module   import  modulename       walk the dictionaries to get to the last one  d   module  dict    for m in modulename  split      1      d    d m  dict 
66. tml and  output xml  The log and report can be viewed using a browser and they    26    contain detailed information about all test steps and pictures of the  failed steps  and they are meant for the tester to go through manually  after running the tests  Output xml is an XML file containing all data  from the tests  The XML file can be used for importing the test results  into the test management tool  or the data can be easily parsed for    other tools to use  See figure 7 for the report files   Robot Framework  User Guide  September 2012        6 critical tests failed  20080613 14 12 08 445  20080613 14 12 39 666 Status  Ali tests passed     000031221 Documentation  Demo test cases for Robot Framework using Selersum test library  20080613 13 38 36 191  20080613 13 39 08  068  Elapsed Time  000031877                  Statistics by Suite Total  Pass  Fail  Graph      teres                     OO     Limvalid Login   6        o EEEENEEEN   Lsimple Login                       1   I  o j   J                  Documentation       Metadata   Tags   Crit    Status      i men pen he aa     10 tests total  10 passed  0  3 critical tests  3 passed  0 failed meet     ma mass 3 tests total  3 passed  0 faled   regression  smoke men EI      smoke mens Er     ji  6 critical tests  6 passed  O failed EEE    S tests total  6 passed  O fated    a ICI NIC RN i  3d  los  BEES    MEE EIS                         Li  Invalid Username regression  Li invalid Password regression    FIGURE 7  Failed 
67. tomation tool chain  The tool chain should include a test  management tool for all the test cases  a version control repository for  the test scripts and a testing framework for running the tests on virtual  machines  The integration should run all the tests related to the test  case when the test run is started in the test management tool  It  should pull all the latest test scripts from the version control repository  and give them for the testing framework to take care of  After testing is  finished  the test results should be combined and collected from the  testing framework and finally sent pack to the test management tool in    correct format     2 MAIN CONCEPTS    2 1 Cloud computing    A cloud can be considered to be a large pool of resources  like a cluster  of computers connected to each other  acting as one very powerful and  flexible computer  All the data and power is spread on multiple nodes   so if some nodes break  their tasks are moved on to other nodes and  the cloud is still working without any data loss  The computing  resources can be distributed as services in the form of applications   servers  virtual machines or platforms over the Internet where ever  they are needed and they can be scaled up or down depending on  demand  The user does not have to buy or maintain new hardware  since all the hardware is located in large data centers maintained by  the service provider   What is cloud computing   IBM  Cloud  Computing  Wikipedia     There are several t
68. types  thus the  tester needs to decide which parts are important enough for full testing  to be necessary   Guru99  System Testing  Wikipedia     Regression testing    Regression testing  also known as verification testing is a special type  of testing executed on all testing levels  It means repetitive tests that  are run every time the application source code has changed  Its  purpose is to verify that recent code changes have not affected the  existing features of the application  created new bugs or resurfaced old  bugs  Regression testing should cover features that undergo frequent  changes and are most visible for users  and a good amount of test  cases  including but not limited to all integration and complex test  cases and the test that verify the core features of the application  Due  to the repetitive nature of regression testing it can take up huge  amount of resources depending on the frequency of the changes  so  testing automation would be a valid solution to save testing time    Guru 99  What is regression testing  Webopedia  2012     15    2 2 4 Automated testing    Automated testing means that instead of a human going through the  software clicking buttons and collecting results  a machine can go  through the tests and report the results to the test manager after it is  done  It can be used in all testing levels from unit tests to full system  testing on different environments  While it can be used for almost all  kinds of testing  it is mostly used for reg
69. udo apt get install freenest    After running those commands FreeNest should be ready for use     TestLink is the only tool in Team server that needs to be configured   The first this that needs to be done is editing the config  file  The  custom_config inc php can be located in TestLink s installation folder   which is usually  var www ProjectTESTLINK  There are two lines that  need to be added into the config      tlCfg  gt exec cfg  gt enable test automation   ENABLED    tlCfg  gt api  gt enabled   TRUE     68    These values can also be edited in config inc php but according to  TestLink documentation  that is strongly discouraged  There are also  three values that need to be increased in PHP in order to prevent  timeout problems during testing  The php ini can be located in   etc php5 apache2  folder  and the values that need to be edited are  session gc_maxlifetime  max execution time and   default socket timeout  Their values need to be much higher  for  example 360000 has worked well enough in this project     Now TestLink can be configured using its own interface  First thing to  do after logging in and creating new test projects and plans is creating  new custom fields  There are three custom fields that are required for  testing automation and four that are required for FNTC  The first three  custom fields can be imported using the XML file included in TestLink  installation  the file can be found in  ProjectTESTLINK docs file examples and it is named as RE XMLRPC 
70. use their own testing frameworks by creating  their own engine plug ins  This way FNTC can be relatively easily    49    extended to cover more frameworks and technologies than just Robot  Framework and its libraries  and the engine can be swapped by just  changing the custom field value in TestLink  The code for the plug in  system was found from a tutorial    Python Style Plugins Made Easy    at  LuckyDonkey and it was slightly modified to fit in FNTC     There are three things that are considered when looking for the right  engine  The file that contains the engine has to be named in a specific  way  it has to start with    engine_    and end with     py     After the file has  been found  the class name inside it must contain the word    Engine      in this example it is    exampleEngine     and it must be a child class of  the Engine  class  Other than that  the class can behave however it  pleases and it can be located in any folder inside FNTC  Of course the  class must have some specific methods for it to work correctly with  FNTC  see the required structure of the class in Figure 12      lt  lt Engine gt  gt   exampleEngine  D        init  in TestCaseID int in OutPutDirectory string   in TestDirectory string in Scheduled string now       run tests in TestCaseName string  in TestList  list   in RunTimes int out RoboResult string    get test results in TestCaseName string   in RunTimes int in Tolerance int   out results list        FIGURE 12  The reguired structure of 
71. with a simple logging feature  It launches a Python logging  facility that writes logs about everything that happens in FNTC and its  components for the user to keep track on  The logging system prints  the exact time of the event  the class where the event took place  the  type of the event and a short message that explains what happened   The type can be info  log  debug  warning  exception  error or critical   but only debug and critical are used in FNTC at the time of writing this  thesis  Full logs can be found from testlink robot client log  which is  located in the FNTC installation folder     The behavior of FNTC can also be controlled using a configuration file  called testlink client conf  The data from the configuration file is loaded  using PyYAML  library s load  function and the loaded data is handled  as key   value pairs  The values are then assigned to variables for  easier data handling  An example of loading the data is shown below       getting variables from config  f   open  testlink client conf    conf   yaml load f    f close    SERVER URL   conf  general    serverURL      lib api xmlrpc php   devKey   conf  general    devkey     vOutputdir   conf  general    outputdirectory     testdir   conf  general    testingdirectory     logdir   conf  general    logdir      45    The configuration file also contains some data used in the testing  engines  Since every engine behaves slightly differently  the data they  need is not consistent  thus the configuratio
72. ypes of cloud services  the most notable ones being  SaaS  Software as a Service   PaaS  Platform as a Service  and laaS   Infrastructure as a Service  See figure 1      Cloud Clients    Web browser  mobile app  thin client  terminal  emulator         SaaS    CRM  Email  virtual desktop  communication   games         PaaS    Execution runtime  database  web server   development tools         Application    Platform    laaS    Virtual machines  servers  storage  load  balancers  network         Infra  structure       FIGURE 1  Cloud computing layers  Cloud Computing  Wikipedia     2 1 1 Software as a Service    Software as a Service means a single application accessible via a client  interface  such as a web browser  The application can be anything from  project management tools like Trac to email services like Gmail  The  users do not have to install or maintain anything on any of their  computers since the software is installed in the cloud and maintained  by the service provider  The user only needs to log in to the service  from any computer and start using the application   Cloud Computing   InfoWorld  What is cloud computing   IBM  Cloud Computing   Wikipedia     2 1 2 Platform as a Service    Platform as a Service means a software development environment  complete with an operating system  development tools  database and  a web server  Developers can use these tools to create their own  software  which is then available for the end users directly from the  web server  W
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
Manual - ICP DAS USA`s I  HF-BT1000  Montaggio del CP 341  HP PROCURVE 3500 User's Manual  RX3i Universal Analog Input Module, IC695ALG600-DD, GFK  1 - Panasonic  LevelOne HVE-9004  ME181L /r  A2265  工事設計書    Copyright © All rights reserved. 
   Failed to retrieve file