Automated Acceptance Testing on Macos – a Survey Study Focused On

Total Page:16

File Type:pdf, Size:1020Kb

Automated Acceptance Testing on Macos – a Survey Study Focused On ASSIGNMENT OF BACHELOR’S THESIS Title: Automated Acceptance Testing on macOS – A survey study focused on Avast Passwords for mac Student: David Mokoš Supervisor: MSc Felix Javier Acero Salazar Study Programme: Informatics Study Branch: Web and Software Engineering Department: Department of Software Engineering Validity: Until the end of summer semester 2018/19 Instructions 1] Survey the different technologies available for writing acceptance tests on macOS. 2] Select an appropriate test stack: GUI driving technology, testing framework, etc. 3] Prepare application for acceptance testing based on the selected test stack. 4] Implement a suite of acceptance tests to cover the most relevant requirements of Avast Passwords for mac. References Will be provided by the supervisor. Ing. Michal Valenta, Ph.D. doc. RNDr. Ing. Marcel Jiřina, Ph.D. Head of Department Dean Prague November 28, 2017 Czech Technical University in Prague Faculty of Information Technology Department of Software Engineering Bachelor’s thesis Automated Acceptance Testing on macOS – A survey study focused on Avast Passwords for Mac David Mokoˇs Supervisor: MSc. Felix Javier Acero Salazar May 14, 2018 Acknowledgements First and foremost, I would like to thank my thesis supervisor, MSc. Felix Javier Acero Salazar, for his patient guidance, advice and encouragement he has provided throughout the whole time I have been working in Avast. I have been lucky to meet such a hardworking, inspirative and helpful person who cares so much about my work and who always keeps his word. His curiosity and positive mindset inspired me and helped me particularly when exploring new ideas. His careful revising contributed hugely to the creation of the thesis. I take this opportunity to express gratitude to all of the Department faculty members for their help and support throughout my studies. I also thank my parents for the endless encouragement, support and attention. Last but not least, I am grateful to my partner who supported me and accepted my limited free time during this venture. Declaration I hereby declare that the presented thesis is my own work and that I have cited all sources of information in accordance with the Guideline for adhering to ethical principles when elaborating an academic final thesis. I acknowledge that my thesis is subject to the rights and obligations stip- ulated by the Act No. 121/2000 Coll., the Copyright Act, as amended, in particular that the Czech Technical University in Prague has the right to con- clude a license agreement on the utilization of this thesis as school work under the provisions of Article 60(1) of the Act. In Prague on May 14, 2018 . Czech Technical University in Prague Faculty of Information Technology © 2018 David Mokoˇs.All rights reserved. This thesis is school work as defined by Copyright Act of the Czech Republic. It has been submitted at Czech Technical University in Prague, Faculty of Information Technology. The thesis is protected by the Copyright Act and its usage without author’s permission is prohibited (with exceptions defined by the Copyright Act). Citation of this thesis Mokoˇs,David. Automated Acceptance Testing on macOS – A survey study focused on Avast Passwords for Mac. Bachelor’s thesis. Czech Technical University in Prague, Faculty of Information Technology, 2018. Abstract Software development requires adequate methods for quality assurance. One of those methods is acceptance testing. This thesis introduces the automated acceptance testing and its need in the software development process along with its common pitfalls. It summarizes the existing tools and technologies that could be used for automating acceptance tests on macOS as well as best practices for writing maintainable automated acceptance test suites. The gathered knowledge from the literature review is put into practice through the implementation of an automated acceptance test suite for Avast Passwords for Mac, a macOS application developed by Avast. Keywords acceptance testing, test automation, GUI (Graphical User In- terface) driving on macOS, automated tests maintainability vii Abstrakt Ve v´yvoji softwaru je pro zajiˇstˇen´ıkvality nezbytn´epouˇzit´ıvhodn´ych metod. Mezi tyto metody patˇr´ıakceptaˇcn´ıtestov´an´ı. Tato pr´acepopisuje v´yhody akceptaˇcn´ıhotestov´an´ıv procesu v´yvoje softwaru a z´aroveˇnupozorˇnujena jeho ˇcast´eprobl´emy. Pr´acetak´eshrnuje dostupn´en´astroje a technologie, kter´ejsou vhodn´epro automatizaci akceptaˇcn´ıch test˚una macOS, a z´aroveˇn popisuje osvˇedˇcen´ezp˚usoby pro v´yvoj snadno udrˇzovateln´ych automatick´ych akceptaˇcn´ıch test˚u. Znalosti z´ıskan´ez liter´arn´ıreˇserˇsejsou pˇrevedeny do praxe skrze implementaci sady automatick´ych akceptaˇcn´ıch test˚upro Avast Pass- words for Mac, aplikaci pro macOS od spoleˇcnostiAvast. Kl´ıˇcov´a slova akceptaˇcn´ıtestov´an´ı,automatizace test˚u,ovl´adan´ıGUI (Graph- ical User Interface) na macOS, udrˇzovatelnost automatick´ych test˚u ix Contents Introduction 1 Goals of the Thesis . 2 1 State of the Art 3 1.1 Software Testing Fundamentals . 3 1.1.1 Business Facing Tests that Support the Development Process . 3 Functional Acceptance tests . 3 1.1.2 Technology Facing Tests that Support the Development Process . 3 Unit Tests . 4 Component Tests . 4 Deployment Tests . 4 1.1.3 Business Facing Tests that Critique the Project . 5 Exploratory tests . 5 Showcases . 5 Usability Tests . 5 1.1.4 Technology Facing Tests that Critique the Project . 6 Nonfunctional Acceptance tests . 6 1.1.5 Regression Testing . 6 1.2 Acceptance Testing . 6 1.2.1 Overview . 6 1.2.2 Automation . 7 1.2.3 Implementation Patterns . 8 Behavior driven development . 8 Application Driver Layer . 10 Page Object Pattern . 11 Layered Architecture . 11 1.3 Acceptance Testing on macOS . 11 xi 1.3.1 The macOS operating system . 11 Accessibility . 11 1.3.2 GUI Driving Tools . 12 Xcode User Interface Testing . 12 AppleScript . 13 Javascript for Automation . 14 Appium For Mac . 14 2 Analysis 17 2.1 The Application Under Test – Avast Passwords for Mac . 17 2.1.1 Introduction . 17 2.1.2 Features . 17 2.1.3 Architecture . 19 2.2 Automated Acceptance Test Suite . 21 2.2.1 Requirements . 21 2.2.2 Architecture . 22 2.3 Tools Selection . 23 2.3.1 Acceptance Criteria . 23 2.3.2 Test Implementation Layer . 24 2.3.3 Application Driver Layer . 24 Xcode UI Testing . 24 AppleScript . 25 JavaScript for Automation . 27 Appium for Mac . 28 Tool Selection . 31 3 Design & Realization 33 3.1 Test Suite Implementation . 33 3.1.1 Acceptance Criteria . 33 3.1.2 Test Implementation Layer . 35 3.1.3 Application Driver Layer . 37 Interacting with the UI Elements . 37 Page Object Pattern . 40 3.2 Test Suite Execution . 43 3.3 Challenges . 45 3.3.1 Locating UI Elements . 45 3.3.2 Interacting with the Environment . 45 3.3.3 Performing Privileged Operations . 46 3.3.4 Integration with the Continuous Integration Pipeline . 47 3.4 Implementation State . 48 Conclusion 51 Further work . 51 xii Bibliography 53 A Acronyms 59 B Contents of enclosed SD card 61 C Diagrams 63 xiii List of Figures 1.1 Brian Marick’s four quadrant diagram describing types of tests used in software projects . 4 1.2 The three layers of maintainable automated acceptance tests . 12 2.1 The credit card list screen of Avast Passwords for Mac . 18 2.2 The different components of Avast Passwords for Mac as well as the main interactions that occur between them . 20 2.3 The three layers of maintainable automated acceptance tests along with the tools that can be used . 23 2.4 Usage of the Accessibility Inspector tool to determine the accessi- bility identifiers of the UI elements . 30 3.1 Folder structure of the Gherkin .feature files and corresponding steps implementation . 36 3.2 The domain model of the Application Driver Layer . 38 3.3 Class diagram of the Element class and one of its subclasses– TextFieldElement ........................... 39 3.4 Class diagram of the login list screen and login detail screen (page objects) of the application . 42 3.5 The login list screen and login detail screen of Avast Passwords for Mac ................................... 42 3.6 The integration of the test suite into the Continuous Integration pipeline . 48 C.1 Class diagram of Element class and all of its subclasses . 63 C.2 All implemented screens (Page Objects) of the Avast Passwords for Mac application . 64 xv List of Tables 2.1 Selection of the tool for the application driver layer of Avast Pass- words for Mac ............................. 31 xvii Introduction A key challenge faced by software industry is quality. To provide the highest quality software, testing is an essential part of any development process [1]. Acceptance testing, an essential part of software testing, is typically conducted at the end of the release cycle to guarantee that all functional requirements of the software are met [2]. Acceptance tests are usually conducted manually by QA engineers each time the software is released. This process is very tedious, prone to human error, time consuming and thus expensive for the developer team. This does not fit with the paradigm of agile development, that relies on quick feedback and short development cycles [3]. To ease and speed up this process, the automation of acceptance tests may be seen as a promising initiative. It can significantly reduce the time QA engineers spend on repetitive tasks and also makes the feedback loop shorter, which helps to find the defects sooner, when they are less expensive to fix [2, 4]. However even acceptance testing automation has its pitfalls. First, unless carefully designed, automated acceptance test suites can be very expensive to develop and maintain. Tests may become too brittle and overly coupled with the implementation details of the application under test, or in the worst scenario, tests may become unreliable and report false positive results [5].
Recommended publications
  • List of NMAP Scripts Use with the Nmap –Script Option
    List of NMAP Scripts Use with the nmap –script option Retrieves information from a listening acarsd daemon. Acarsd decodes ACARS (Aircraft Communication Addressing and Reporting System) data in real time. The information retrieved acarsd-info by this script includes the daemon version, API version, administrator e-mail address and listening frequency. Shows extra information about IPv6 addresses, such as address-info embedded MAC or IPv4 addresses when available. Performs password guessing against Apple Filing Protocol afp-brute (AFP). Attempts to get useful information about files from AFP afp-ls volumes. The output is intended to resemble the output of ls. Detects the Mac OS X AFP directory traversal vulnerability, afp-path-vuln CVE-2010-0533. Shows AFP server information. This information includes the server's hostname, IPv4 and IPv6 addresses, and hardware type afp-serverinfo (for example Macmini or MacBookPro). Shows AFP shares and ACLs. afp-showmount Retrieves the authentication scheme and realm of an AJP service ajp-auth (Apache JServ Protocol) that requires authentication. Performs brute force passwords auditing against the Apache JServ protocol. The Apache JServ Protocol is commonly used by ajp-brute web servers to communicate with back-end Java application server containers. Performs a HEAD or GET request against either the root directory or any optional directory of an Apache JServ Protocol ajp-headers server and returns the server response headers. Discovers which options are supported by the AJP (Apache JServ Protocol) server by sending an OPTIONS request and lists ajp-methods potentially risky methods. ajp-request Requests a URI over the Apache JServ Protocol and displays the result (or stores it in a file).
    [Show full text]
  • D4.6 Real-Time Executor Software Release Y3
    D4.6 Real-time Executor Software Release Y3 Grant agreement no. 780785 Project acronym OFERA (micro-ROS) Project full title Open Framework for Embedded Robot Applications Deliverable number D4.6 Deliverable name Real-time Executor – Software Release Y3 Date December 2020 Dissemination level public Workpackage and task 4.2 Author Jan Staschulat (Bosch) Contributors Ralph Lange (Bosch) Keywords micro-ROS, robotics, ROS, microcontrollers, scheduling, executor Abstract This document provides links to the released software and documentation for deliverable D4.6 Real-time Execu- tor Software Release Y3 of the Task 4.2 Predictable Scheduling and Execution. D4.6: Real-time Executor – Software Release Y3 Contents 1 Overview to Results 2 2 Links to Software Repositories 2 3 Annex 1: Webpage on Real-Time Executor 3 3.1 Table of contents ....................................... 3 3.2 Introduction ......................................... 4 3.3 Analysis of rclcpp standard Executor ........................... 5 3.3.1 Architecture ..................................... 5 3.3.2 Scheduling Semantics ................................ 6 3.4 RCLC-Executor ........................................ 7 3.4.1 Requirement Analysis ................................ 7 3.4.2 Features ........................................ 12 3.4.3 Executor API ..................................... 13 3.4.4 Examples ....................................... 14 3.4.5 Summary ....................................... 17 3.4.6 Future work ..................................... 18 3.4.7 Download
    [Show full text]
  • Red Hat Enterprise Linux 8 Configuring and Managing High Availability Clusters
    Red Hat Enterprise Linux 8 Configuring and managing high availability clusters Configuring and managing the Red Hat High Availability Add-On Last Updated: 2021-09-23 Red Hat Enterprise Linux 8 Configuring and managing high availability clusters Configuring and managing the Red Hat High Availability Add-On Legal Notice Copyright © 2021 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js ® is an official trademark of Joyent.
    [Show full text]
  • Migration Toolkit for Applications 5.1 Web Console Guide
    Migration Toolkit for Applications 5.1 Web Console Guide Use the Migration Toolkit for Applications web console to group your applications into projects for analysis. Last Updated: 2021-08-02 Migration Toolkit for Applications 5.1 Web Console Guide Use the Migration Toolkit for Applications web console to group your applications into projects for analysis. Legal Notice Copyright © 2021 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
    [Show full text]
  • A/UX® Command Reference Section Lca-L)
    A/UX®Command Reference Section lCA-L) .® A/UX® Command Reference Section leA-L) 030-0781 • APPLE COMPUTER, INC. © 1990, Apple Computer, Inc., and Diablo and Ethernet are registered UniSoft Corporation. All rights trademarks of Xerox Corporation. reserved. Hewlett-Packard 2631 is a trademark of Portions of this document have been Hewlett-Packard. previously copyrighted by AT&T MacPaint is a registered trademark of Information Systems and the Regents Claris Corporation. of the University of California, and are reproduced with permission. Under POSTSCRIPT is a registered trademark, the copyright laws, this manual may and TRANSCRIPT is a trademark, of not be copied, in whole or part, Adobe Systems, Incorporated. without the written consent of Apple Teletype is a registered trademark of or UniSoft. The same proprietary and AT&T. copyright notices must be affIXed to any permitted copies as were affIXed to TermiNet is a trademark of General the original. Under the law, copying Electric. includes translating into another UNIX is a registered trademark of language or format. AT&T Information Systems. The Apple logo is a registered Versatec is a trademark of Versatec. trademark of Apple Computer, Inc. Use of the "keyboard" Apple logo Wang C/ AlT is a trademark of Wang (Option-Shift-K) for commercial Laboratories. purposes without the prior written Simultaneously published in the consent of Apple may constitute United States and Canada. trademark infringement and unfair competition in violation of federal and state laws. Apple Computer, Inc. 20525 Mariani Ave. Cupertino, California 95014 (408) 996-1010 Apple, the Apple logo, AppleTalk, AlUX, ImageWriter, LaserWriter, and Macintosh are registered trademarks of Apple Computer, Inc.
    [Show full text]
  • Jenkins User Handbook
    Jenkins User Handbook [email protected] Table of Contents Getting Started with Jenkins . 1 Installing Jenkins . 2 Prerequisites . 3 Installation platforms . 4 Docker . 4 WAR file . 7 macOS. 8 Linux. 8 Windows . 9 Other operating systems . 9 Post-installation setup wizard . 12 Unlocking Jenkins . 12 Customizing Jenkins with plugins . 12 Creating the first administrator user . 13 Using Jenkins . 14 Pipeline . 15 What is Jenkins Pipeline?. 16 Why Pipeline? . 18 Pipeline Terms . 19 Getting Started with Pipeline. 20 Prerequisites . 21 Defining a Pipeline . 22 Defining a Pipeline in the Web UI . 22 Defining a Pipeline in SCM . 25 Built-in Documentation . 26 Snippet Generator . 26 Global Variable Reference. 27 Further Reading . 28 Additional Resources . 28 Using a Jenkinsfile . 29 Creating a Jenkinsfile . 30 Build . 31 Test . 32 Deploy . 33 Advanced Syntax for Pipeline. 35 String Interpolation . 35 Working with the Environment. 35 Parameters . 37 Handling Failures . 37 Using multiple agents . 38 Optional step arguments . 40 Advanced Scripted Pipeline . 41 Branches and Pull Requests . 43 Creating a Multibranch Pipeline . 44 Additional Environment Variables . 47 Supporting Pull Requests. 47 Using Organization Folders . 48 Using Docker with Pipeline . 49 Customizing the execution environment. 50 Caching data for containers . 50 Using multiple containers . ..
    [Show full text]
  • Ut99 Working Fine for Mac
    1 / 2 Ut99 Working Fine For Mac Basically I need to know how to install UT GOTY on MacOS X. PLEASE help. thx ... Can't keep off it,so UT keep up the good work,ps i also have UT 2004 but am .... Feb 07, 2021 · OldUnreal's Unreal Tournament 99 patches. ... Apr 15, 2020 · How to set up Unreal to work with Oculus Quest on Ubuntu (20. ... Does anyone know of any good reference docs for packaging a build for Oculus ... 3 on a Mac. 20.. Feb 6, 2017 — so i found a working power mac in the alley i have some mac games, quake, shadow ... You should be fine with Tiger unless the games require 10.5 but I would ... Other games like Rune/Unreal/UT99 have "lagging" issues.. im looking for mac mods for UT'99 any one know of any good sites..... ... but never got it to work on my old machine, and haven't tried on my new one. ... However, UT99 doesn't run so fine on my tibook, which made me kinda give up on it.. :(.. May 19, 2014 — I've done some originals too but they're in Batch 1 & 2. These work fine in ut99... and I got no idea if they'll work in Unreal1 so someone be sure ... Dec 18, 2007 — Home · Operating Systems · macOS; Unreal Tournament 3 comes to the Mac ... ?We have a long history of bringing the Unreal series to Mac gamers, and with its expanded ... Good news for you mac fans, however the mac is not going to save this game, according ..
    [Show full text]
  • What Good Is a Linux Client?
    Preparing Today for Linux® Tomorrow What Good is a Linux Client? A Linux White Paper Preface Anyone who has followed the progress of Linux the past few years has noted the surprising gains that Linux has made in server operating system market share and “mindshare” against the entrenched opposition, notably Microsoft® Windows NT®, Novell Netware and various varieties of UNIX®. A complete Linux network, of course, would require Linux clients (networked PCs or terminals) as well. Therefore, an important question is, “Is Linux a viable desktop operating system for general business use?” or must we continue to be confined to the Windows world for our non-server needs? And what about laptop support, or a Small Office/Home Office (SOHO) user or home user, who does not need a network server? Is there a place for Linux in a stand-alone environment? These are some of the questions this paper addresses. I must confess that until recently I was merely a bystander watching with curiosity from the sidelines—without any real involvement— the progress Linux has made. So writing this paper not only gave me the excuse to join in on the action, but it also provides you with the perspective of a Linux “newbie” who is attempting to find the applications and utilities needed to create a working system. The conventional wisdom so far is that Linux is not “ready for prime time” as anything but a network operating system. We shall test this notion to see if I can find commercial, shareware and/or freeware programs for Linux to replace the existing applications I currently use with Windows.
    [Show full text]
  • Apple Confidential 2.0 the Definitive History of the World's Most Colorful
    vi Reviewers love Apple Confidential “The Apple story itself is here in all its drama.” New York Times Book Review “An excellent textbook for Apple historians.” San Francisco Chronicle “Written with humor, respect, and care, it absolutely is a must-read for every Apple fan.” InfoWorld “Pretty much irresistible is the only way to describe this quirky, highly detailed and illustrated look at the computer maker’s history.” The Business Reader Review “The book is full of basic facts anyone will appreciate. But it’s also full of interesting extras that Apple fanatics should love.” Arizona Republic “I must warn you. This 268-page book is hard to put down for a MacHead like me, and probably you too.” MacNEWS “You’ll love this book. It’s a wealth of information.” AppleInsider “Rife with gems that will appeal to Apple fanatics and followers of the computer industry.” Amazon.com “Mr. Linzmayer has managed to deliver, within the confines of a single book, just about every juicy little tidbit that was ever leaked from the company.” MacTimes “The most entertaining book about Apple yet to be published.” Booklist i …and readers love it too! “Congratulations! You should be very proud. I picked up Apple Confidential and had a hard time putting it down. Obviously, you invested a ton of time in this. I hope it zooms off the shelves.” David Lubar, Nazareth, PA “I just read Apple Confidentialfrom cover to cover…you have written a great book!” Jason Whong, Rochester, NY “There are few books out there that reveal so much about Apple and in such a fun and entertaining manner.
    [Show full text]
  • Series 30I-MA, 300I-MA, 300Is-MA C Language Executor Operator's
    GE Fanuc Automation Computer Numerical Control Products Series 30i-Model A Series 300i-Model A Series 300is-Model A C Language Executor Operator’s Manual GFZ-63944EN-3/01 January 2004 GFL-001 Warnings, Cautions, and Notes as Used in this Publication Warning Warning notices are used in this publication to emphasize that hazardous voltages, currents, temperatures, or other conditions that could cause personal injury exist in this equipment or may be associated with its use. In situations where inattention could cause either personal injury or damage to equipment, a Warning notice is used. Caution Caution notices are used where equipment might be damaged if care is not taken. Note Notes merely call attention to information that is especially significant to understanding and operating the equipment. This document is based on information available at the time of its publication. While efforts have been made to be accurate, the information contained herein does not purport to cover all details or variations in hardware or software, nor to provide for every possible contingency in connection with installation, operation, or maintenance. Features may be described herein which are not present in all hardware and software systems. GE Fanuc Automation assumes no obligation of notice to holders of this document with respect to changes subsequently made. GE Fanuc Automation makes no representation or warranty, expressed, implied, or statutory with respect to, and assumes no responsibility for the accuracy, completeness, sufficiency, or usefulness of the information contained herein. No warranties of merchantability or fitness for purpose shall apply. ©Copyright 2004 GE Fanuc Automation North America, Inc.
    [Show full text]
  • Schumpeterian Competition and Diseconomies of Scope; Illustrations from the Histories of Microsoft and IBM
    Schumpeterian competition and diseconomies of scope; illustrations from the histories of Microsoft and IBM Timothy Bresnahan Shane Greenstein Rebecca Henderson Working Paper 11-077 Copyright © 2011 by Timothy Bresnahan, Shane Greenstein, Rebecca Henderson Working papers are in draft form. This working paper is distributed for purposes of comment and discussion only. It may not be reproduced without permission of the copyright holder. Copies of working papers are available from the author. Schumpeterian competition and diseconomies of scope; illustrations from the histories of Microsoft and IBM. Timothy Bresnahan, Shane Greenstein, Rebecca Henderson* Abstract: We address a longstanding question about the causes of creative destruction. Dominant incumbent firms, long successful in an existing technology, are often much less successful in new technological eras. This is puzzling, since a cursory analysis would suggest that incumbent firms have the potential to take advantage of economies of scope across new and old lines of business and, if economies of scope are unavailable, to simply reproduce entrant behavior by creating a “firm within a firm.” There are two broad streams of explanation for incumbent failure in these circumstances. One posits that incumbents fear cannibalization in the market place, and so under-invest in the new technology. The second suggests that incumbent firms develop organizational capabilities and cognitive frames that make them slow to “see” new opportunities and that make it difficult to respond effectively once the new opportunity is identified. In this paper we draw on two of the most important historical episodes in the history of the computing industry, the introduction of the PC and of the browser, to develop a third hypothesis.
    [Show full text]
  • Solutions to Exercises
    Appendix A Solutions to Exercises Each of Chapters 1 through 14 closes with an “Exercises” section that tests your understanding of the chapter’s material. Solutions to these exercises are presented in this appendix. Chapter 1: Getting Started with Java 1. Java is a language and a platform. The language is partly patterned after the C and C++ languages to shorten the learning curve for C/C++ developers. The platform consists of a virtual machine and associated execution environment. 2. A virtual machine is a software-based processor that presents its own instruction set. 3. The purpose of the Java compiler is to translate source code into instructions (and associated data) that are executed by the virtual machine. 4. The answer is true: a classfile’s instructions are commonly referred to as bytecode. 5. When the virtual machine’s interpreter learns that a sequence of bytecode instructions is being executed repeatedly, it informs the virtual machine’s Just In Time (JIT) compiler to compile these instructions into native code. 6. The Java platform promotes portability by providing an abstraction over the underlying platform. As a result, the same bytecode runs unchanged on Windows-based, Linux-based, Mac OS X–based, and other platforms. 7. The Java platform promotes security by providing a secure environment in which code executes. It accomplishes this task in part by using a bytecode verifier to make sure that the classfile’s bytecode is valid. 643 644 APPENDIX A: Solutions to Exercises 8. The answer is false: Java SE is the platform for developing applications and applets.
    [Show full text]