Bypassing the. Brian Marick



Relaterede dokumenter
Softwaretest. - også af "ikke testbar" software. DAPUG erfamøde 7. marts 2012 Thomas Vedel, Thomas Vedel Consult thomas@veco.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Arkitektur for begyndere

Kapitel 6 Events i C#

Datatekniker med programmering som speciale

Succesfuld implementering af automatiseret test

Det skrå kast, en simulation

Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling

Anvendelse af BPT til manuel test

Foto-Applikation Dokumentation. Et Kod-i-Ferien projekt

OrCAD Capture TCL IDE med Eclipse

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt

Agenda. Muligheder for anvendelse. Komponenter. Features. Restore muligheder. DR og TSM integration. Repository. Demo. Spørgsmål

Lektion 6. Grundlæggende programmering i VR

Specifikationsdokument for PDF Validator API

PHP Quick Teknisk Ordbog

Undervisningsbeskrivelse

Undervisningsbeskrivelse

Undervisningsbeskrivelse

Sporbarhed og Rapportering i Quality Center. Kim Stenbo Nielsen NNIT Application Management Services

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Udvikling af DOTNET applikationer til MicroStation i C#

Tegninger ved skriftlig prøve i fysik A, htx

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Casper Fabricius ActiveRecord. O/RM i Ruby on Rails

Lonbox PCM2001 betjeningsenhed

Umbraco installationsvejledning

Portfolio Andreas Stjerneklar Kristensen. Multimedia Designer Eksamen 1. Semester

I denne manual kan du finde en hurtig introduktion til hvordan du:

Fase Forklaring Navigation. Mappen skal indeholde alle elementer til dit site.

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

VORES SYN PÅ DE IKKE-FUNKTIONELLE KRAV OG OS2KRAVMOTOR

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

Programmering I Java/C#

DAXIF# - Delegate Automated Xrm Installation Framework. Delegate A/S

Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2. Windows XP/Vista Home


MSI pakke til distribution af AutoPilot komponenter.

Grafik Billedbehandling

Computerspil Dokumentation

Serialization i Java

Dokumentation. Udbyder : sms1919.dk Service : sms-grupper Applikationer Facebook. : Facebook Integration med sms-grupper.

Fang Prikkerne. Introduktion. Scratch

Web CMS kontra Collaboration

Object-Relational Mapping

SIGIL Sådan opretter du en e- bog Step by Step

Pia Schiermer, Underviser ved UNI-C og Vestsjællands Amtscenter 2/19

Unity Guide 1 CONTENTS

HVAD ER WORDPRESS 2 HVORDAN LOGGES IND 3 HVORDAN NAVIGERES DER 4 HVORDAN SKRIVES EN SIMPEL NYHED 5 AVANCEREDE NYHEDER 6 HVORDAN RETTES EN NYHED 7

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Velkommen til den nye og forbedrede Dynamicweb 9

Nyheder i Remote Support Platform 3.0

Introduktion til Microsoft R. Steen Dybboe, Pragmatic BI MsBIP 2017 Aarhus

Datatekniker med programmering som speciale

Programmering 19/ ROSKILDE TEKNISKE GYMNASIUM. Projektbeskrivelse. Programmering. Rasmus Kibsgaard Riehn-Kristensen

Introduktion til Flash

Machine Learning til forudsigelser af central KPI

Undervisningsbeskrivelse

Moderne SAS-programmering på webben med SAS Studio. Georg Morsing SAS Institute

Test af It-komponent

Forskellige Java versioner

Redaktørvejledning for Skriv en artikel

Sønderborg Kommunes Lokalhistoriske Arkivsamarbejde SKLA

Installation og administration af MarvinSketch. Anders Almlund Osted, Køge Gymnasium

Testservice med anvendelse af Microsoft software.

Overvågning TestHusets servere og hjemmeside

Manual for Synkron hjemmesider

PHP Crash course. Databaser

Vejledning til opgraderet version af Danmarks Arealinformation

Datatekniker med programmering som speciale H5

Manual til WordPress CMS

Grafisk produktion & workflow

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

Objects First with Java A Practical Introduction Using BlueJ

IT-Basecamp Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4

Hvorfor skal vi bruge objekt orienteret databaser?

Digital Print Room Implementering og tilretning. 11. Sep TMC Plot-SIG

Singleton pattern i Java

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

DM507 Algoritmer og datastrukturer

GRAFISK WORKFLOW. 1 Grafisk workflow

Fra Computer til Virkelighed. TPE-kursus Elektroniske Systemer P1

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

IsenTekst Indhold til Internettet. Manual til Wordpress.

Introduktion til ActionScript, fortsat

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

FIP - Karrierekompetence i programmeringsfaget

Introduktion til Flash

DM507 Algoritmer og datastrukturer

Undervisningsbeskrivelse

Advanced Word Template Brugermanual

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Prezi. Aldrig mere gammeldaws slideshows!? Version: December 2012

Vejledning til opbygning af hjemmesider

Billedbehandleren, du altid har ved hånden! - en manual fra Skolekonsulenterne.dk

Introduktion Indtastning Funktioner Scripts Optimering. Matlab

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label

Picto Selector. Lav dine egne symbolark. Version: August 2012

Transkript:

Bypassing the GUI Brian Marick

Problemer med GUI GUI er designet for mennesker, ikke automatisering Automatiseret test af GUI kræver specialiseret værktøjer Har tildens til at bryde ned når der sker ændringer med GUI At lave test modstandsdygtige overfor ændringer di kræver komplicerede og til tider besværlige test frameworks.

Program interfaces der muliggør scripting COM (Component Object Model) SOAP AppleScript SAP GUI Scripting API Mange andre

Fordele ved at teste GUI via scripts Automatisering Tilføje nye test er nemt Rette test nemt Ændringer i GUI berører ikke den underliggende API Man kan have forskellige GUI til sammen program uden at skulle lave flere tests Scripting interface mere stabilt end GUI

Fordele ved standart sprog Standart script sprog mere modne end de vendorscript der følger med de fleste GUI test værktøjer Dyrt at benytte GUI test værktøjer da de sjældent giver free runtime licenses Standart script sprog gratis Nemmere at få hjælp da der er mange brugere

Ideal situation for script test af GUI og script interface virker begge som tynde lag ovenpå program kernen GUI programmer Hvis GUI ikke er tynd kan det give problemer med troværdigheden af script test

Hvad kan gå galt? Hvis der ikke er et fuldstændigt di API vil manuale GUI testere ikke vide at der er dele der ikke bliver testet af scripts og dele kan derfor blive testet for lidt Hvis der er forskel i den kode der bliver kald af GUI og script API, vil den automatiserede test ikke finde fejl der forekommer ved brug af GUI Fejl i programmering af scripts Fejl i dokumentationen af API

Ruby eksempel Test af søge funktionen i MS Word Inkludering af biblioteker for at teste Word Brug require 'test/unit t/ 'test/unit/ui/console/testrunner 'win32ole' '

Ruby Ruby er et fortolket objektorienteret sprog Kommer med to grænseflader fxri Instant Ruby Enlightement SciTE Kan benyttes til umiddelbar evaluering af udtryk Kombineret editor og resultat vindue. Til udvikling ogafprøvning af programmer

fxri

SceTI

Test af Words søgefunktion class TestWord < Test::Unit::TestCase #Sæt variablen Word lig enms Word applikation Word = WIN32OLE.new 'Word.Application' #Nyt dokument i Word objektet Word.documents.add # Execute the given file using the associate appdef test_find_boundaries original = 'MATCH at beginning of file MATCH at beginning ofinterior line at end of interior line, we find a MATCH at end of file, we find a MATCH' #fjern blank tegn fra pæn opsætning original = original.without_left_whitespace

Word.selection.typetext(original) #Placer cursoren i starten af dokumentet Word.selection.start=0 Word.selection.end=0 #Fortæl Word at den skal finde teksten MATCH Word.selection.find.text='MATCH' #original.indices finder de steder hvor teksten findes så vi kan sammenligne med Word resultat for start in original.indices(match) indices('match') #Næste resultat fra Words søge funktion result = Word.selection.find.execute #Test at Word har fundet teksten assert_equal(true, result)

#Test at det vi og Word odhar fundet starter sa sammensted s ed assert_equal(start, Word.selection.start) #Test at det Word har fundet har den rigtige længde assert_equal(start+5, Word.selection.end) #Test at Word har fundet den rigtige tekst assert_equal('match', equal('match' Word.selection.text) text) end end #Kør testen Test::Unit::UI::Console::TestRunner.run(TestWord.suite) #close(false) gør at vi ikke bliver bedt om at gemme dokumentet Word.documents.close(false) Word.quit end