a self-configuring test harness for web applications

21
A Self-Configuring Test Harness for Web Applications Jairo Pava School of Computing and Information Sciences Florida International University Courtney Enoex School of Applied Sciences and Arts Southern Illinois University 8/1/2008 REU Summer Program Florida International University School of Computing and Information Sciences Yanelis Hernandez PhD Student Peter J. Clarke Research Mentor

Upload: ishana

Post on 12-Jan-2016

19 views

Category:

Documents


4 download

DESCRIPTION

A Self-Configuring Test Harness for Web Applications. Florida International University. School of Computing and Information Sciences. Jairo Pava School of Computing and Information Sciences Florida International University. Courtney Enoex School of Applied Sciences and Arts - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: A Self-Configuring Test Harness for Web Applications

A Self-Configuring Test Harness for Web Applications

Jairo PavaSchool of Computing and

Information SciencesFlorida International University

Courtney EnoexSchool of Applied Sciences and

ArtsSouthern Illinois University

8/1/2008REU Summer Program

Florida International University School of Computing and Information Sciences

Yanelis HernandezPhD Student

Peter J. ClarkeResearch Mentor

Page 2: A Self-Configuring Test Harness for Web Applications

• Many web application technologies

• NoNo standard test script language

• ComplexComplex web applications make testing difficult

• MigrationMigration of technologies inefficient

• CostCost of software testing accounts for fifty to seventy-five percent of total development costs

Motivation 2

Page 3: A Self-Configuring Test Harness for Web Applications

Presentation Content

• Motivation

• Objectives

• Background

• Problem Statement

• Approach

• Implementation

• Results

• Conclusions / Pending Work

• Acknowledgements

• Questions

3

Page 4: A Self-Configuring Test Harness for Web Applications

Background 5

• Testing web application is necessary

• Complex web applications make testing difficult

• Regression testing points to code modification that make previously functional code to fail

• Allows the ability to catch errors as they are introduced

• Subtle changes in code can introduce errors

Page 5: A Self-Configuring Test Harness for Web Applications

Test Case ComponentsTest Case Components

ID A name given to each test case

Purpose The aspect of the application that will be tested

SetupCreation testing environment(will not interferewith real settings)

Input Show how the application interacts with the Setup data

Expected output If the output is what was expected, the test passes

Background 6

Page 6: A Self-Configuring Test Harness for Web Applications

Literature Review

Ruby on Rails [2]Ruby on Rails [2]• Released in 2004• Provides scaffolding, WEBrick, and Rake

• Helpful tools are ready for use

PHPUnit [3]PHPUnit [3]• Simple pass/fail reporting• Use with PHPUnit Database Extension

• Compare (seeded) database contents with an expected dataset

An Integrated Self-Testing Framework for Autonomic Computing Systems An Integrated Self-Testing Framework for Autonomic Computing Systems • King, et al• Authors developed integrated testing for autonomic systems

4

Testing ToolsTesting Tools

Page 7: A Self-Configuring Test Harness for Web Applications

Problem Statement

To develop a web application test harness that dynamically configures its test suite to generate and execute platform specific test scripts.

7

Page 8: A Self-Configuring Test Harness for Web Applications

Approach

• FastBooks.com e-commerce web application

• Web Technologies used• Ruby on Rails 1.2• PHP 5

• Testing Tools• Ruby 1.2• PHPUnit 3.2.21

• Code Coverage Analysis Tool• RCOV 0.8.0• Xdebug 2.0.3

8

Page 9: A Self-Configuring Test Harness for Web Applications

Approach 9

Page 10: A Self-Configuring Test Harness for Web Applications

Approach 10

Page 11: A Self-Configuring Test Harness for Web Applications

TestCase(“TC001_ValidateBook_SunnyDay”)

ProcedureEntry(“TC001_PE001”)

CreateAction( Dict.ObjectType, “product”, parameters )

ProcedureEntry(“TC001_PE002”)

InputAction( Dict.VarType, “price”, parameters )

ProcedureEntry(“TC001_PE003”)

AssertAction( Dict.AssertTrue, “valid”, parameters )

Ruby on Rails Model

AddCreateSyntax( Dict.ObjectType, “[VarName] = [ClassName].new([ParamList])”)

AddInputSyntax( Dict.VarType, “[ObjectName].[VarName] = [VarValue]” )

AddAssertSyntax( Dict.AssertTrue, “assert [ObjectName].[VarName]?” )

ClassName Product

ParamList “Book Title”, 0.00

CreateAction Parameters

ObjectName product

AssertAction Parameters

Implementation

InputAction Parameters

ObjectName product

VarValue 9.99

11

Page 12: A Self-Configuring Test Harness for Web Applications

require File.dirname(__FILE__) + '/../test_helper'

class ProductTest < Test::Unit::TestCase

def test_positive_price

product = Product.new(:title => "Book Title", :price => 0.00 )product.price = 9.99assert product.valid?

end end

Implementation 12

Page 13: A Self-Configuring Test Harness for Web Applications

TestCase(“TC001_ValidateBook_SunnyDay”)

ProcedureEntry(“TC001_PE001”)

CreateAction( Dict.ObjectType, “product”, parameters )

ProcedureEntry(“TC001_PE002”)

InputAction( Dict.VarType, “price”, parameters )

ProcedureEntry(“TC001_PE003”)

AssertAction( Dict.AssertTrue, “valid”, parameters )

PHPUnit Model

AddCreateSyntax( Dict.ObjectType,

“$this -> [varName] = new [ClassName]([paramList]);” )

AddInputSyntax( Dict.VarType,

“$this -> [ObjectName] -> [VarName]( [VarValue] );” )

AddAssertSyntax( Dict.AssertTrue,

“$this -> assert( $this -> [ObjectName] -> [varName]( ) );” )

Implementation 13

ClassName Product

ParamList “Book Title”, 0.00

CreateAction Parameters

ObjectName product

AssertAction ParametersInputAction Parameters

ObjectName product

VarValue 9.99

Page 14: A Self-Configuring Test Harness for Web Applications

require once "phpunit.php"require once "product.php"

class productTest extends TestCase{

function test_positive_price(){

$this -> product = new Product(“Book Title", 0.00);$this -> product -> price( 9.99 );$this -> assert( $this -> product -> valid() );

} }

Implementation 14

Page 15: A Self-Configuring Test Harness for Web Applications

Ruby on Rails 1.2

RCOV 0.8.0

PHPUnit 3.2.21

Xdebug 2.0.3

Implementation 15

Page 16: A Self-Configuring Test Harness for Web Applications

• Accurate detection of web technologies by monitor

• Correct selection of model for test script generation

• Proper syntax of platform specific test script

• Successful execution in testing tool

Evaluation 16

Page 17: A Self-Configuring Test Harness for Web Applications

• Test script generation needs improvement• Abstract syntax trees

• Increase support for different types of testing

• More web technology support

• Easier integration of web technology models

Limitations and Future Work 17

Page 18: A Self-Configuring Test Harness for Web Applications

• Utilize concepts of autonomic computing to reduce human interaction

• Automatically test web applications

• Determine code coverage

• Interpret results

• More efficient migration of web application test scripts

• Standard test script language

• Improve quality of test cases developed

Conclusions 18

Page 19: A Self-Configuring Test Harness for Web Applications

Acknowledgements

Florida International University

19

National Science Foundation, Grant

# IIS-0552555,Research

Experience for Undergraduates:

Autonomic Computing at FIU

Dr. Masoud Milani

Yanelis Hernandez, Tariq M. King

Dr. Peter Clarke

Dr. Tao Li, Dr. Raju Rangaswami, Dr. Masoud Sadjadi

Page 20: A Self-Configuring Test Harness for Web Applications

References

•[1] PHPUnithttp://www.phpunit.de/

•[2] PHPhttp://www.php.net

•[3] Ruby on Railshttp://www.rubyonrails.org/

•[4] Xdebughttp://www.xdebug.org/

•[5] RCOVhttp://www.asp.net

•[6] Software Debugging, Testing, and VerificationIBM Systems Journal 2002

• [7] An Integrated Self-Testing Framework for Autonomic Computing SystemsTariq M. King, Alain E. Ramirez, Rodolfo Cruz, Peter J. Clarke

20

Page 21: A Self-Configuring Test Harness for Web Applications

Questions?

Comments?

End 21