Continuous Integration



Similar documents
Domain Specific Languages for Selenium tests

QEx Whitepaper. Automation Testing Pillar: Selenium. Naveen Saxena. AuthOr:

Automation using Selenium

Selenium An Effective Weapon In The Open Source Armory

Agile Web Application Testing

Certified Selenium Professional VS-1083

SOFTWARE TESTING TRAINING COURSES CONTENTS

Testing. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies. CHAPTER AUTHORS Michael Atmadja Zhang Shuai Richard

Software Automated Testing

Automated Web Testing with Selenium

Exploring Web Testing Tools For Use In A Classroom

Automating Testing and Configuration Data Migration in OTM/GTM Projects using Open Source Tools By Rakesh Raveendran Oracle Consulting

Selenium Automation set up with TestNG and Eclipse- A Beginners Guide

The Social Accelerator Setup Guide

International Journal of Advanced Engineering Research and Science (IJAERS) Vol-2, Issue-11, Nov- 2015] ISSN:

Test Automation Integration with Test Management QAComplete

BDD FOR AUTOMATING WEB APPLICATION TESTING. Stephen de Vries

Know the Difference. Unified Functional Testing (UFT) and Lean Functional Testing (LeanFT) from HP

GLOBAL JOURNAL OF ENGINEERING SCIENCE AND RESEARCHES

With the use of keyword driven framework, we can automate the following test scenarios for Gmail as under :-

Two-Way Data Binding with WinJS By Marcin Kawalerowicz and Craig Berntson, authors of Continuous Integration in.net

Test Automation Tool comparison HP UFT/QTP vs. Selenium - Prashant Malhotra

Selenium 1.0 Testing Tools

Web Automated Test for SharePoint

Automated testing of CS UI using Selenium and Python

Magento Test Automation Framework User's Guide

Introduction to Programming Tools. Anjana & Shankar September,2010

Selenium WebDriver. Gianluca Carbone. Selenium WebDriver 1

Installing Oracle 12c Enterprise on Windows 7 64-Bit

Benefits of Test Automation for Agile Testing

Windmill. Automated Testing for Web Applications

CEFNS Web Hosting a Guide for CS212

Specify the location of an HTML control stored in the application repository. See Using the XPath search method, page 2.

The Importance of Continuous Integration for Quality Assurance Teams

Matrix Logic WirelessDMS Service 2.0

HP LoadRunner. Software Version: Ajax TruClient Tips & Tricks

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

Building Applications with Protégé: An Overview. Protégé Conference July 23, 2006

CONTINUOUS INTEGRATION. Introduction

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Viewpoint. Choosing the right automation tool and framework is critical to project success. - Harsh Bajaj, Technical Test Lead ECSIVS, Infosys

Test Automation -Selenium

Continuous Integration

Automation and Virtualization, the pillars of Continuous Testing

Software Development In the Cloud Cloud management and ALM

Continuous Integration (CI)

Why HTML5 Tests the Limits of Automated Testing Solutions

IceWarp Server. Log Analyzer. Version 10

HowTo. Planning table online

The maturity level of APEX. Patrick Hellemans Competence Manager Technology

Testing Tools Content (Manual with Selenium) Levels of Testing

Automated tests on websites using Selenium-IDE.

Product: DQ Order Manager Release Notes

GUI and Web Programming

"Build and Test in the Cloud "

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Regression & Load Testing BI EE 11g

Upping the game. Improving your software development process

TEST AUTOMATION FRAMEWORK

Log Analyzer Reference

Software Quality Testing Course Material

Continuous Integration. CSC 440: Software Engineering Slide #1

Java Software Quality Tools and techniques

Agile.NET Development Test-driven Development using NUnit

Web Applications Testing

LoadRunner and Performance Center v11.52 Technical Awareness Webinar Training

Cloudwords Drupal Module. Quick Start Guide

GUI Test Automation How-To Tips

STUDY AND ANALYSIS OF AUTOMATION TESTING TECHNIQUES

Generating Automated Test Scripts for AltioLive using QF Test

Aspire's Approach to Test Automation

AUTOMATING THE WEB APPLICATIONS USING THE SELENIUM RC

Achieving Continuous Integration with Drupal

Streaming Media System Requirements and Troubleshooting Assistance

Exploratory Testing in an Agile Context

A Technology Based Solution to Move Client Server Applications to Java /.NET in Native 3-Tier Web Code Structures

MarkLogic Server. Reference Application Architecture Guide. MarkLogic 8 February, Copyright 2015 MarkLogic Corporation. All rights reserved.

X10 Webinterface User Quick Guide(ver0.9.2 Beta)

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Shavlik Patch for Microsoft System Center

How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip

Testing the API behind a mobile app. Tutorial Marc van t Veer

BIRT Application and BIRT Report Deployment Functional Specification

Latest Trends in Testing. Ajay K Chhokra

Introduction to Automated Testing

depl Documentation Release depl contributors

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Content. Development Tools 2(63)

M86 Web Filter USER GUIDE for M86 Mobile Security Client. Software Version: Document Version:

Acunetix Web Vulnerability Scanner. Getting Started. By Acunetix Ltd.

Regression & Load Testing BI EE 11g

Bridging the Gap Between Acceptance Criteria and Definition of Done

DreamFactory & Modus Create Case Study

Hudson configuration manual

Transcription:

Continuous Integration WITH FITNESSE AND SELENIUM By Brian Kitchener briank@ecollege.com

Intro Who am I? Overview Continuous Integration The Tools Selenium Overview Fitnesse Overview Data Dependence My Solution Demo

What is CI? From Wikipedia: Continuous Integration (CI) implements a continuous processes of applying quality control - small pieces of effort, applied frequently. Continuous integration aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development. In English: automatic code integration and validation! What do we need? A Build Server to control everything and store reporting A development/deployment process that supports being automated. Scripts to do the work One or more test frameworks to test the code (nunit, Fitnesse, Selenium) A minimal set of tests that cover a broad scope of functionality What do we get? Automatic testing and validation for each code change Immediate and automatic isolation of the cause Up-to-date, centralized reporting You know who broke it, and who needs to fix it. You never will test a broken environment again.

The Tools Build Server (Hudson) Runs our Tests Unit Tests Tests the individual functions Fitnesse Tests: Database (DB Fit) API calls Web Services Selenium Tests: UI Issues Functionality problems Javascript Errors

Firefox only plugin, no other browsers. Step based testing, no complex functionality Record and Playback Fast test prototyping Troubleshooting Can be run from Hudson using a plug-in. Selenium IDE

Stored on your website s web server Executable via a url Supports any browser Tests stored in a central repository Has problems supporting https or changing domains Selenium Core

Selenium RC Client/server java application needs to be installed Supports any Browser/OS combination Test can be run locally or remotely [Test] public void testgoogle() { } selenium.open( http://www.google.com/"); selenium.waitforpagetoload( 30000 ); selenium.type("q", "selenium"); selenium.click("btng"); selenium.waitforpagetoload( 30000 ); Assert.IsTrue(selenium.IsTextPresent("Selenium web application testing system")); Controlled and executed through xunit Test written in your favorite programming language/ide (C#, java, python, ruby) Access to full features of that language and any extra libraries

Distributed parallel testing More setup, but faster execution Run on multiple machines simultaneously Generates more load Selenium Grid

How Selenium Works Pros Cons Injects itself as javascript into the page object Any browser that supports javascript supports selenium The ONLY tool that can work with any browser/os Extremely fast execution time Direct access to page objects Doesn t hijack your computer You can do other things while its running Full access to outside libraries If you need something else, you can code it. Pick your language Record in IDE and convert to RC. Easier for non-coders Fast test prototyping Troubleshooting Open source tools can be customized Injects itself as javascript into the page object Non Firefox browsers don t always work perfectly It can t see anything outside of the page Can t click on the menu, navigation buttons, or any extra windows Predefined routines reproduce this functionality XSS Limitations Changing domains/https It fakes a lot It doesn t use the mouse/keyboard Doesn t really click on anything Accesses each item directly and calls a function Can bypass front end functionality such as onclick Can access hidden items even if you don t want it to Some functionality can t be automated But can be gotten around Open source tools require a lot of coding

What is Fitnesse? Fitnesse = FIT + Wiki FIT : Framework for Integrated Testing - The engine that translates tables into actions Wiki: The GUI that allows the user to edit and run tests A website that allows us to create, edit, and run tests. The tests must be written as a table Each row is a test Fitnesse Overview

Fitnesse continued Typically used to test an application or database directly, without accessing the GUI. Calls a Web service, API, DB Procedure Test the Business Logic directly. We don t have to try to trick the ui into an incorrect state Typically more stable than GUI testing as less functionality changes over time Requires the creation of a Fixture which knows how to translate the test into an action. The fixtures are many times written by the application developers Some standard fixtures exist, such as the RESTFixture for testing REST based services Once written, the fixtures can be largely ignored Different fixtures allow different functionality.

Fitnesse continued Typical data driven testing - same test multiple times for all data types Boundary conditions Error code checking Business Logic Acceptance Testing- Wiki style input allows non-coders to develop and run tests. Business and Product personnel can (theoretically) write acceptance tests However it requires a knowledge of the AUT GUI testing is possible with appropriate fixture Can t test for javascript errors without a GUI test However selenium is more robust

Fitnesse

Fitnesse pros and cons Tests are editable and executable from a web page. Uses Xpath. Can generate fake bugs (stuff looks broken because of a Fitnesse problem) Test maintenance can be time consuming Everything is a text document Same tests many different places Global variables allow you to change url, user, etc very easily Many tests can require unique information (id, name) that can change in different environments. Run-time variables allow you to create more dynamic tests. Knowing what data should be returned can be troublesome Can generate exact error-causing conditions Useless if your application sucks

Data Dependence The biggest problem with automation is changing data Time changes, items expire, dates change. Need to test in different environments going to out to production. Many items are referenced by an ID that is unique, or increment. Need to know what are the expected results of your test. If something you assume is incorrect, your tests will fail. User not there Items expired Dates changed GUI item changed or vanished In unit testing, you can mock data to test with. When testing a real system, your data can fluctuate DB Refresh Virtualized environments User activity can change your data set Date oriented things expire Id s increment Using external or live data

Data Options Set our data manually each run. DB Copy/refresh to return to a known state. Start from and return to a known state CRUD only your data Get current data Connect to the db to grab data. Run UI automation to get data. Generate data Use automation to generate a data set at run time

My Solution Data Generation Suite- Can point to any client/environment. Checks to see if my data is there, if it is it deletes it. Then creates all data fresh, and sets state. A Smoke Test to be run by the Hudson server. Checks all major functionality. Checks each of the functional areas Doesn t validate what data it gets. (it fluctuates too much) A Regression Test that tests full functionality. Data Generation Suite needs to be run first Tests full functionality and validates data is correct. Fitnesse tests that check the services Use the data selenium created. Verify boundary conditions Verify response code and format. Verify errors

The end result All builds automatically are smoke tested for viability. Takes ~15 minutes to regression test a build in each environment Can change users, clients, environments, configuration. All tests don t always pass in all environments, have to check test results. Can use Test Driven Development methodology Create tests first Code is good when they pass Relying heavily on automation Fast turnaround. High confidence level for code changes, new services

In progress Work on new framework Migrate to Selenium2 (mobile browser support) Fully implement PageObjects Use a VS config file Support multiple browsers