Corpus-Based Empirical Research in Software Engineering

Total Page:16

File Type:pdf, Size:1020Kb

Corpus-Based Empirical Research in Software Engineering Ekaterina Pek Corpus-based Empirical Research in Software Engineering Dissertation Koblenz, October 2013 Department of Computer Science Universität Koblenz-Landau Ekaterina Pek Corpus-based Empirical Research in Software Engineering When someone is seeking, it happens quite easily that he only sees the thing that he is seeking; that he is unable to find anything, unable to absorb anything, because he is only thinking of the thing he is seeking, because he has a goal, because he is obsessed with his goal. Seeking means: to have a goal; but finding means: to be free, to be receptive, to have no goal. Herman Hesse, Siddhartha1 1 Translation by Hilda Rosner Acknowledgments First of all, I am very grateful to my supervisor, Prof. Dr. Ralf Lämmel, for his guid- ance, support, and patience during these years. I am very glad that I had a chance to work with Ralf, learn from his experience and wisdom, and grow professionally under his supervision, as well as appreciate his friendly personality. I am grateful to my co-authors: Jean-Marie Favre, Dragan Gaševic,´ Rufus Linke, Jürgen Starek, and Andrei Varanovich, working with whom was a great intellectual pleasure. No man is an island: I would like to thank my ex-boyfriend, Vladimir, for his great help and support during my PhD; my then-colleagues at the University of Koblenz for their company, thoughts, and time: my gratitude goes especially to An- drei Varanovich, Claudia Schon, and Sabine Hülstrunk. I gratefully acknowledge the support of my work by the Rhineland Palatinate’s Research Initiative 2008-2011, the ADAPT research focus, and the University of Koblenz-Landau. August 2013 Ekaterina Pek Abstract In the recent years, Software Engineering research has shown the rise of interest in the empirical studies. Such studies are often based on empirical evidence derived from corpora—collections of software artifacts. While there are established forms of carrying out empirical research (experiments, case studies, surveys, etc.), the com- mon task of preparing the underlying collection of software artifacts is typically ad- dressed in ad hoc manner. In this thesis, by means of a literature survey we show how frequently Software Engineering research employs software corpora and using a developed classification scheme we discuss their characteristics. Addressing the lack of methodology, we suggest a method of corpus (re-)engineering and apply it to an existing collection of Java projects. We report two extensive empirical studies, where we perform a broad and di- verse range of analyses on the language for privacy preferences (P3P) and on object- oriented application programming interfaces (APIs). In both cases, we are driven by the data at hand—by the corpus itself—discovering the actual usage of the languages. Zusammenfassung In den letzten Jahren gibt es im Bereich Software Engineering ein steigendes Interesse an empirischen Studien. Solche Studien stützen sich häufig auf empirische Daten aus Corpora—Sammlungen von Software-Artefakten. Während es etablierte Formen der Durchführung solcher Studien gibt, wie z.B. Experimente, Fallstudien und Umfragen, geschieht die Vorbereitung der zugrunde liegenden Sammlung von Software-Artefakten in der Regel ad hoc. In der vorliegenden Arbeit wird mittels einer Literaturrecherche gezeigt, wie häufig die Forschung im Bereich Software Engineering Software Corpora benutzt. Es wird ein Klassifikationsschema entwickelt, um Eigenschaften von Corpora zu beschreiben und zu diskutieren. Es wird auch erstmals eine Methode des Corpus (Re-)Engineering entwickelt und auf eine bestehende Sammlung von Java-Projekten angewendet. Die Arbeit legt zwei umfassende empirische Studien vor, in denen eine umfang- reiche und breit angelegte Analysenreihe zu den Sprachen Privacy Preferences (P3P) und objektorientierte Programmierschnittstellen (APIs) durchgeführt wird. Beide Studien stützen sich allein auf die vorliegenden Daten der Corpora und decken da- durch die tatsächliche Nutzung der Sprachen auf. Contents 1 Introduction ................................................... 1 1.1 Research Context. .1 1.2 Problem Statement . .3 1.3 Outline of the Thesis . .5 1.4 Contributions of the Thesis . .8 1.5 Supporting Publications . .9 Part I Prerequisites 2 Essential Background .......................................... 13 2.1 Software Linguistics . 14 2.1.1 Stances in Software Language Engineering . 14 2.1.2 Examples of Linguistic Sub-disciplines . 15 2.2 Actual Usage of Language . 16 2.2.1 Prescriptive and Descriptive Linguistics . 16 2.2.2 Measuring Actual Usage . 17 2.3 Languages Under Study . 21 2.3.1 Platform for Privacy Preferences . 21 2.3.2 Application Programming Interfaces . 22 2.4 Corpus Engineering. 24 2.4.1 Corpora in Natural Linguistics . 24 2.4.2 Corpora in Software Linguistics . 25 2.4.3 Corpora versus Software Repositories . 28 2.5 Literature Surveys . 29 2.5.1 Systematic Literature Reviews . 29 2.5.2 Content and Meta-analysis . 30 2.5.3 Grounded Theory . 30 2.5.4 Survey Process . 31 XIV Contents Part II Language Usage 3 A Study of P3P Language ....................................... 35 3.1 Introduction . 36 3.2 Methodology of the Study . 36 3.2.1 Research Questions . 36 3.2.2 Corpus under Study . 38 3.2.3 Leveraged Analyses . 40 3.3 The Essence of P3P . 41 3.3.1 Language versus Platform . 42 3.3.2 Syntax of P3P . 42 3.3.3 A Normal Form . 46 3.3.4 Degree of Exposure . 50 3.4 Analyses of the Study . 52 3.4.1 Analysis of Vocabulary . 52 3.4.2 Analysis of Constraints . 57 3.4.3 Analysis of Metrics . 63 3.4.4 Analysis of Cloning . 73 3.4.5 Analysis of Extensions. 81 3.5 Threats to Validity . 85 3.6 Related Work . 86 3.7 Conclusion . 89 4 A Study of APIs ................................................ 91 4.1 Introduction . 92 4.2 Java APIs . 92 4.2.1 Overview of the Approach . 93 4.2.2 A Study of SourceForge . 94 4.2.3 Examples of API-usage Analysis . 97 4.3 .NET framework . 105 4.3.1 Methodology . 106 4.3.2 Reuse-related Metrics for Frameworks . 108 4.3.3 Classification of Frameworks . 112 4.3.4 Comparison of Potential and Actual Reuse . 116 4.4 Multi-dimensional Exploration . 119 4.4.1 An Exploration Story . 120 4.4.2 Basic Concepts . 121 4.4.3 Exploration Insights . 124 4.4.4 Exploration Views . 130 4.4.5 The EXAPUS Exploration Platform . 134 4.5 Threats to Validity . 135 4.6 Related Work . 136 4.7 Conclusion . 139 Contents XV Part III Corpus Engineering 5 Literature Survey of Empirical Software Engineering . 143 5.1 Introduction . 144 5.2 Pilot Studies . 144 5.2.1 Survey on Empirical Language Analysis . 145 5.2.2 Survey on Corpora Usage . 149 5.3 A Survey on Empirical Software Engineering . 153 5.3.1 Methodology . 153 5.3.2 Results . 154 5.4 Threats to Validity . 168 5.5 Related Work . 169 5.6 Conclusion . 172 6 Corpus (Re-)Engineering ....................................... 175 6.1 Introduction . 176 6.1.1 Benefits of Using an Established Corpus . 176 6.1.2 Obstacles to Corpus Adoption . 177 6.2 A Method for Corpus (Re-)Engineering . 177 6.2.1 Underlying Concepts . ..
Recommended publications
  • Computing Fundamentals and Office Productivity Tools It111
    COMPUTING FUNDAMENTALS AND OFFICE PRODUCTIVITY TOOLS IT111 REFERENCENCES: LOCAL AREA NETWORK BY DAVID STAMPER, 2001, HANDS ON NETWORKING FUNDAMENTALS 2ND EDITION MICHAEL PALMER 2013 NETWORKING FUNDAMENTALS Network Structure WHAT IS NETWORK Network • An openwork fabric; netting • A system of interlacing lines, tracks, or channels • Any interconnected system; for example, a television-broadcasting network • A system in which a number of independent computers are linked together to share data and peripherals, such as hard disks and printers Networking • involves connecting computers for the purpose of sharing information and resources STAND ALONE ENVIRONMENT (WORKSTATION) users needed either to print out documents or copy document files to a disk for others to edit or use them. If others made changes to the document, there was no easy way to merge the changes. This was, and still is, known as "working in a stand-alone environment." STAND ALONE ENVIRONMENT (WORKSTATION) Copying files onto floppy disks and giving them to others to copy onto their computers was sometimes referred to as the "sneakernet." GOALS OF COMPUTER NETWORKS • increase efficiency and reduce costs Goals achieved through: • Sharing information (or data) • Sharing hardware and software • Centralizing administration and support More specifically, computers that are part of a network can share: • Documents (memos, spreadsheets, invoices, and so on). • E-mail messages. • Word-processing software. • Project-tracking software. • Illustrations, photographs, videos, and audio files. • Live audio and video broadcasts. • Printers. • Fax machines. • Modems. • CD-ROM drives and other removable drives, such as Zip and Jaz drives. • Hard drives. GOALS OF COMPUTER NETWORK Sharing Information (or Data) • reduces the need for paper communication • increase efficiency • make nearly any type of data available simultaneously to every user who needs it.
    [Show full text]
  • Chrome Devtools Protocol (CDP)
    e e c r i è t t s s u i n J i a M l e d Headless Chr me Automation with THE CRRRI PACKAGE Romain Lesur Deputy Head of the Statistical Service Retrouvez-nous sur justice.gouv.fr Web browser A web browser is like a shadow puppet theater Suyash Dwivedi CC BY-SA 4.0 via Wikimedia Commons Ministère crrri package — Headless Automation with p. 2 de la Justice Behind the scenes The puppet masters Mr.Niwat Tantayanusorn, Ph.D. CC BY-SA 4.0 via Wikimedia Commons Ministère crrri package — Headless Automation with p. 3 de la Justice What is a headless browser? Turn off the light: no visual interface Be the stage director… in the dark! Kent Wang from London, United Kingdom CC BY-SA 2.0 via Wikimedia Commons Ministère crrri package — Headless Automation with p. 4 de la Justice Some use cases Responsible web scraping (with JavaScript generated content) Webpages screenshots PDF generation Testing websites (or Shiny apps) Ministère crrri package — Headless Automation with p. 5 de la Justice Related packages {RSelenium} client for Selenium WebDriver, requires a Selenium server Headless browser is an old (Java). topic {webshot}, {webdriver} relies on the abandoned PhantomJS library. {hrbrmstr/htmlunit} uses the HtmlUnit Java library. {hrbrmstr/splashr} uses the Splash python library. {hrbrmstr/decapitated} uses headless Chrome command-line instructions or the Node.js gepetto module (built-on top of the puppeteer Node.js module) Ministère crrri package — Headless Automation with p. 6 de la Justice Headless Chr me Basic tasks can be executed using command-line
    [Show full text]
  • Test Driven Development and Refactoring
    Test Driven Development and Refactoring CSC 440/540: Software Engineering Slide #1 Topics 1. Bugs 2. Software Testing 3. Test Driven Development 4. Refactoring 5. Automating Acceptance Tests CSC 440/540: Software Engineering Slide #2 Bugs CSC 440/540: Software Engineering Slide #3 Ariane 5 Flight 501 Bug Ariane 5 spacecraft self-destructed June 4, 1996 Due to overflow in conversion from a floating point to a signed integer. Spacecraft cost $1billion to build. CSC 440/540: Software Engineering Slide #4 Software Testing Software testing is the process of evaluating software to find defects and assess its quality. Inputs System Outputs = Expected Outputs? CSC 440/540: Software Engineering Slide #5 Test Granularity 1. Unit Tests Test specific section of code, typically a single function. 2. Component Tests Test interface of component with other components. 3. System Tests End-to-end test of working system. Also known as Acceptance Tests. CSC 440/540: Software Engineering Slide #6 Regression Testing Regression testing focuses on finding defects after a major code change has occurred. Regressions are defects such as Reappearance of a bug that was previous fixed. Features that no longer work correctly. CSC 440/540: Software Engineering Slide #7 How to find test inputs Random inputs Also known as fuzz testing. Boundary values Test boundary conditions: smallest input, biggest, etc. Errors are likely to occur around boundaries. Equivalence classes Divide input space into classes that should be handled in the same way by system. CSC 440/540: Software Engineering Slide #8 How to determine if test is ok? CSC 440/540: Software Engineering Slide #9 Test Driven Development CSC 440/540: Software Engineering Slide #10 Advantages of writing tests first Units tests are actually written.
    [Show full text]
  • Selenium Python Bindings Release 2
    Selenium Python Bindings Release 2 Baiju Muthukadan Sep 03, 2021 Contents 1 Installation 3 1.1 Introduction...............................................3 1.2 Installing Python bindings for Selenium.................................3 1.3 Instructions for Windows users.....................................3 1.4 Installing from Git sources........................................4 1.5 Drivers..................................................4 1.6 Downloading Selenium server......................................4 2 Getting Started 7 2.1 Simple Usage...............................................7 2.2 Example Explained............................................7 2.3 Using Selenium to write tests......................................8 2.4 Walkthrough of the example.......................................9 2.5 Using Selenium with remote WebDriver................................. 10 3 Navigating 13 3.1 Interacting with the page......................................... 13 3.2 Filling in forms.............................................. 14 3.3 Drag and drop.............................................. 15 3.4 Moving between windows and frames.................................. 15 3.5 Popup dialogs.............................................. 16 3.6 Navigation: history and location..................................... 16 3.7 Cookies.................................................. 16 4 Locating Elements 17 4.1 Locating by Id.............................................. 18 4.2 Locating by Name............................................ 18 4.3
    [Show full text]
  • Instrumentation De Navigateurs Pour L'analyse De Code Javascript
    Under the DOM : Instrumentation de navigateurs pour l’analyse de code JavaScript Erwan Abgrall1,2 et Sylvain Gombault2 [email protected] [email protected] 1 DGA-MI 2 IMT Atlantique - SRCD Résumé. Les attaquants font, de plus en plus, usage de langages dy- namiques pour initier leurs attaques. Dans le cadre d’attaques de type « point d’eau » où un lien vers un site web piégé est envoyé à une victime, ou lorsqu’une application web est compromise pour y héberger un « ex- ploit kit », les attaquants emploient souvent du code JavaScript fortement obfusqué. De tels codes sont rendus adhérents au navigateur par diverses techniques d’anti-analyse afin d’en bloquer l’exécution au sein des ho- neyclients. Cet article s’attachera à expliquer l’origine de ces techniques, et comment transformer un navigateur web « du commerce » en outil d’analyse JavaScript capable de déjouer certaines de ces techniques et ainsi de faciliter notre travail. 1 Introduction Cet article a pour objectif d’introduire le lecteur au monde de la désobfucation JavaScript, et de proposer une nouvelle approche à cette problématique dans le cadre de l’analyse de sites malveillants, plus com- munément appelés « exploit kits ». Il va de soi que la compréhension des mécanismes de base du langage JavaScript est un pré-requis. Le lecteur souhaitant se familiariser avec celui-ci pourra lire l’excellent Eloquent- JavaScript 3. Bien entendu l’analyse de codes malveillants quels qu’ils soient doit se faire dans un environnement correspondant aux risques in- duits 4 5. Enfin, pour vous faire la main, un ensemble de sites malveillants potentiellement utiles aux travaux de recherches est proposé en ligne 6.
    [Show full text]
  • Download Selenium 2.53.0 Jars Zip File Download Selenium 2.53.0 Jars Zip File
    download selenium 2.53.0 jars zip file Download selenium 2.53.0 jars zip file. Completing the CAPTCHA proves you are a human and gives you temporary access to the web property. What can I do to prevent this in the future? If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware. If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices. Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store. Cloudflare Ray ID: 66a759273d76c3fc • Your IP : 188.246.226.140 • Performance & security by Cloudflare. Download selenium 2.53.0 jars zip file. Completing the CAPTCHA proves you are a human and gives you temporary access to the web property. What can I do to prevent this in the future? If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware. If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices. Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store.
    [Show full text]
  • Bluemona Jalal: Curriculum Vitae
    Mona Jalal monajalal.com [email protected] AIEM BU IVC Research Interest Computer Vision, Machine Learning, Deep Learning, Vision and Language. Education Computer Science Ph.D. Fellow in Computer Vision Boston University, Boston, MA, USA. Adviser: Professor Margrit Betke GPI: 3.84 out of 4 September 2017-now Double Major M.Sc. in Computer Sciences and Electrical Engineering University of Wisconsin-Madison, Madison, WI, USA. CS GPA: 3.62, CGPA of both degrees: 3.49 out of 4 CS Master's Graduation: May 15th 2016, EE Master's Graduation: August 24th 2014 M.Sc. in Computer Engineering Majored in Computer Architecture Sharif University of Technology, Tehran, Iran. CGPA: 17.71 out of 20 B.Sc. in Computer Engineering Majored in Computer Hardware Shahid Beheshti University, Tehran, Iran. CGPA: 15.32 out of 20 Second best hardware engineering student in batch of 2009 graduates National Organization for Development of Exceptional Talents Karaj, Tehran, Iran Designated for top 5% of the entire high school students in Iran Experience Research Intern NVIDIA Research, North Carolina, Durham Mentor: Dr. Josef Spjut, collaborator: Ben Boudaoud, Manager: Dr. David Luebke June 20-August 31, 2018 R&D Engineer 1 Center for Augmented Cognition, University of California, Berkeley Under supervision of Dr. Allen Y. Yang and mentorship of Joseph Menke May 1-August 15, 2017 Research Intern Computer Vision Group, Medical Sciences Center, University of Wisconsin-Madison Under supervision of Professor Vikas Singh and mentorship of Professor Won Hwa Kim August 1, 2016-May 1, 2017 Graduate Research Assistant Internet of Things Lab, University of Wisconsin-Madison Under supervision of Dr.
    [Show full text]
  • WOMEN TECHNOLOGISTS COUNT Recommendations and Best Practices to Retain Women in Computing
    WOMEN TECHNOLOGISTS COUNT Recommendations and Best Practices to Retain Women in Computing ANITA BORG INSTITUTE SOLUTIONS SERIES TABLE OF CONTENTS Foreword . 1 Introduction . 2 Leadership and Accountability . 5 Corporate Culture Built for Innovation . 7 Support Networks and Communities . 11 Organizational Infrastructure and Policies . 18 Conclusion . 21 Endnotes . 22 FOREWORD ver the past 15 years, as the Anita Borg Institute has worked to improve the representation and advancement of women in computing, we’ve learned how important it is to retain women in the technical Ocareer pipeline . We know from our work with organizations that turnover among women in technology is a significant problem . Companies recognize that they cannot afford to lose valuable talent, but making a tangible impact on attrition levels can be challenging . Attrition begins when some women struggle in the transition from college to their first technical position in industry . For those who stay initially, the mid level is an especially critical “make or break” point . Many mid-level women leave the technical track to become managers . Others switch companies or step away from technology altogether . Those who advance to senior technical roles face many obstacles as they work toward the top tiers of technical leadership . Keeping women in the technical workforce matters . Teams that have a diversity of perspective, including gender, improve innovation and, ultimately, financial performance . It is in the best interest of technology companies to retain women who are committed to inventing technology and making a contribution in their fields . To institute real change in the workplace, employees throughout the organization need to understand that including people with a broad range of perspective, background and gender is a business imperative .
    [Show full text]
  • Bluemona Jalal: Curriculum Vitae
    Mona Jalal monajalal.com [email protected] BU IVC Research Interests Computer Vision, Machine Learning, Deep Learning, Multimodal Learning, Vision and Language. Education Computer Science Ph.D. Candidate in Computer Vision Boston University (BU), Boston, MA, USA. Adviser: Professor Margrit Betke Ph.D. Candidacy on \3D Human's Shape, Mesh, and Modeling with Applications" Dissertation topic: Pose Estimation and Tracking Capturing video using two thermal FLIR SC8000 cameras and two HSDR devices from rodents. 3D reconstruction and 2D/3D pose estimation and behavior categorization in rodents. Exploring the use of 3D shapes for better estimation of pose. GPI: 3.85/4 September 2017-now Double Major M.Sc. in Computer Sciences and Electrical Engineering University of Wisconsin-Madison (UW), Madison, WI, USA. CS GPA: 3.62, CGPA of both degrees: 3.49 out of 4 CS Master's Graduation: May 15th 2016, EE Master's Graduation: August 24th 2014 M.Sc. in Computer Engineering Majored in Computer Architecture Sharif University of Technology (SUT){Ranked 1st in Iran CGPA: 17.71 out of 20 B.Sc. in Computer Engineering Majored in Computer Hardware Shahid Beheshti University (SBU){Ranked 5th in Iran. CGPA: 15.32 out of 20 Second best hardware engineering student in batch of 2009 graduates National Organization for Development of Exceptional Talents (NODET) Karaj, Tehran, Iran Designated for top 5% of the entire high school students in Iran Experiences Machine Learning Engineering Intern Hateful conduct detection in tweets Twitter Cortex, Cambridge, MA Mentors: Dr. Kristen Sunter and Dr. Eting Yuan, Manager: Dr. Rani Nelken June 3rd-August 30, 2019 Research Intern 3D object pose dataset creation using Unreal Engine 4 NVIDIA Research, Durham, North Carolina Mentor: Dr.
    [Show full text]
  • 2016 Pocket Guide
    2016 Pocket Guide PROGRAM SCHEDULE SPONSORED BY: #GHC16 October 19-21, 2016 ghc.anitaborg.org Check out our Clusters, which physically group similar tracks to help navigate and explore topics. CAREER ORGANIZATION CAREER TRANSFORMATION ORGANIZATION WEDNESDAY, COMMUNITY TRANSFORMATION CRA-W PRODUCTS A TO Z FACULTY PRODUCTS A TO Z EMERGING TECH/ OCTOBER 19 BEST OF TECHNOLOGY BEST OF ARTIFICIAL INTELLIGENCE IoT/ WEARABLE TECH COMPUTER SYSTEMS GENERAL SESSIONS ENGINEERING KEYNOTES DATA SCIENCE PLENARIES GAMING, GRAPHICS & ANIMATION SPECIAL SESSIONS SPECIAL SESSIONS HUMAN COMPUTER INTERACTION OPEN SOURCE WORLD SECURITY/PRIVACY OPEN SOURCE SOFTWARE ENGINEERING LOCATION LEGEND: GRB: GEORGE R. BROWN CONVENTION CENTER HILTON: HILTON AMERICAS SESSIONS DAY 1: WEDNESDAY SESSIONS DAY 1: WEDNESDAY 9:00 a.m. - 11:30 a.m. 2:00 p.m. - 3:15 p.m. KEYNOTE PLENARIES ORGANIZATION TRANSFORMATION Women and the Future of Tech Quiet: How to Harness the Strengths of Introverts Toyota Center Ginni Rometty (IBM), Latanya to Transform How We Work, Lead and Innovate Sweeney (Harvard University; Technology Science; GRB General Assembly Susan Cain (Author, Chief Data Privacy Lab) and more Revolutionary and Co-Founder of Quiet Revolution) 12:00 p.m. - 6:00 p.m. PLENARIES TECHNOLOGY Featured Speaker: Astro Teller (Captain of EXPO Moonshots for X) Career Fair GRB Hall E GRB Halls B-D PLENARIES PRODUCTS A TO Z 12:00 p.m. - 7:00 p.m. Product Announcements GRB Hall A3 EXPO Interviews 2:00 p.m. - 4:00 p.m. GRB Hall A SPECIAL SESSIONS SPECIAL SESSIONS Student Node sponsored by D.E. Shaw & Co. Want to be a Bias Interruptor? GRB Balcony D GRB 360 A Valerie Barr (Union College), Latanya Sweeney (Harvard University), Brad McLain (NCWIT), Tracy Camp (Colorado School of Mines), Lucy Sanders (NCWIT) SESSIONS DAY 1: WEDNESDAY SESSIONS DAY 1: WEDNESDAY 2:00 p.m.
    [Show full text]
  • Webdriver: Controlling Your Web Browser
    WebDriver: Controlling your Web Browser Erlang User Conference 2013 Hans Svensson, Quviq AB [email protected] First, a confession... I have a confession to make... I have built a web system! In PHP! ... and it was painfully mundane to test It is all forgotten and forgiven... It was back in 2003! First DEMO DEMO A bit of history Proving program Erlang correctness Reality – a constant issue PhD Testing is studentPhD necessary A bit of history Proving program Erlang correctness Reality – a constant issue PhD Testing is studentPhD necessary • We like to write our properties in QuickCheck • How can we control ‘a browser’ from Erlang? • Doing it all from scratch seems hard, unnecessary, stupid, ... Selenium “Selenium automates browsers. That's it. What you do with that power is entirely up to you. Primarily it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well.” Selenium • Basically you can create and run scripts • Supported by a wide range of browsers and operating systems • Run tests in: Chrome, IE, Opera, Firefox, and partial support also for other browsers. • Runs on: Windows, OS X, Linux, Solaris, and others. • Script recording using Selenium IDE (Firefox plugin). • Language support for: C#, Java, Python, Ruby, and partial support for Perl and PHP. • Widely used to create Unit-tests and regression testing suites for web services. Selenium 2 - WebDriver • In version 2, Selenium introduced the WebDriver API • Via WebDriver it is possible to drive the browser natively • The browser can be local or remote – possible to use a grid test • It is a compact Object Oriented API • Supports Chrome, Firefox, HtmlUnit, Opera, IE, and IPhone and Android • Languages implementing driver: C#, Java, Python, and Ruby.
    [Show full text]
  • Translate Toolkit Documentation Release 1.13.0
    Translate Toolkit Documentation Release 1.13.0 Translate.org.za May 25, 2016 Contents 1 User’s Guide 3 1.1 Features..................................................3 1.2 Installation................................................4 1.3 Converters................................................5 1.4 Tools................................................... 53 1.5 Scripts.................................................. 88 1.6 Use Cases................................................. 99 1.7 Translation Related File Formats..................................... 116 2 Developer’s Guide 145 2.1 Translate Styleguide........................................... 145 2.2 Documentation.............................................. 151 2.3 Building................................................. 155 2.4 Testing.................................................. 155 2.5 Command Line Functional Testing................................... 157 2.6 Contributing............................................... 159 2.7 Translate Toolkit Developers Guide................................... 161 2.8 Making a Translate Toolkit Release................................... 165 2.9 Deprecation of Features......................................... 170 3 Additional Notes 173 3.1 Release Notes.............................................. 173 3.2 Changelog................................................ 191 3.3 History of the Translate Toolkit..................................... 199 3.4 License.................................................. 201 4 API Reference 203 4.1
    [Show full text]