ThoughtWorks
  • Contact
  • Español
  • Português
  • Deutsch
  • 中文
Go to overview
  • Engineering Culture, Delivery Mindset

    Embrace a modern approach to software development and deliver value faster

    Intelligence-Driven Decision Making

    Leverage your data assets to unlock new sources of value

  • Frictionless Operating Model

    Improve your organization's ability to respond to change

    Platform Strategy

    Create adaptable technology platforms that move with your business strategy

  • Experience Design and Product Capability

    Rapidly design, deliver and evolve exceptional products and experiences

    Partnerships

    Leveraging our network of trusted partners to amplify the outcomes we deliver for our clients

Go to overview
  • Automotive
  • Cleantech, Energy and Utilities
  • Financial Services and Insurance
  • Healthcare
  • Media and Publishing
  • Not-for-profit
  • Public Sector
  • Retail and E-commerce
  • Travel and Transport
Go to overview

Featured

  • Technology

    An in-depth exploration of enterprise technology and engineering excellence

  • Business

    Keep up to date with the latest business and industry insights for digital leaders

  • Culture

    The place for career-building content and tips, and our view on social justice and inclusivity

Digital Publications and Tools

  • Technology Radar

    An opinionated guide to technology frontiers

  • Perspectives

    A publication for digital leaders

  • Digital Fluency Model

    A model for prioritizing the digital capabilities needed to navigate uncertainty

  • Decoder

    The business execs' A-Z guide to technology

All Insights

  • Articles

    Expert insights to help your business grow

  • Blogs

    Personal perspectives from ThoughtWorkers around the globe

  • Books

    Explore our extensive library

  • Podcasts

    Captivating conversations on the latest in business and tech

Go to overview
  • Application process

    What to expect as you interview with us

  • Grads and career changers

    Start your tech career on the right foot

  • Search jobs

    Find open positions in your region

  • Stay connected

    Sign up for our monthly newsletter

Go to overview
  • Conferences and Events
  • Diversity and Inclusion
  • News
  • Open Source
  • Our Leaders
  • Social Change
  • Español
  • Português
  • Deutsch
  • 中文
ThoughtWorksMenu
  • Close   ✕
  • What we do
  • Who we work with
  • Insights
  • Careers
  • About
  • Contact
  • Back
  • Close   ✕
  • Go to overview
  • Engineering Culture, Delivery Mindset

    Embrace a modern approach to software development and deliver value faster

  • Experience Design and Product Capability

    Rapidly design, deliver and evolve exceptional products and experiences

  • Frictionless Operating Model

    Improve your organization's ability to respond to change

  • Intelligence-Driven Decision Making

    Leverage your data assets to unlock new sources of value

  • Partnerships

    Leveraging our network of trusted partners to amplify the outcomes we deliver for our clients

  • Platform Strategy

    Create adaptable technology platforms that move with your business strategy

  • Back
  • Close   ✕
  • Go to overview
  • Automotive
  • Cleantech, Energy and Utilities
  • Financial Services and Insurance
  • Healthcare
  • Media and Publishing
  • Not-for-profit
  • Public Sector
  • Retail and E-commerce
  • Travel and Transport
  • Back
  • Close   ✕
  • Go to overview
  • Featured

  • Technology

    An in-depth exploration of enterprise technology and engineering excellence

  • Business

    Keep up to date with the latest business and industry insights for digital leaders

  • Culture

    The place for career-building content and tips, and our view on social justice and inclusivity

  • Digital Publications and Tools

  • Technology Radar

    An opinionated guide to technology frontiers

  • Perspectives

    A publication for digital leaders

  • Digital Fluency Model

    A model for prioritizing the digital capabilities needed to navigate uncertainty

  • Decoder

    The business execs' A-Z guide to technology

  • All Insights

  • Articles

    Expert insights to help your business grow

  • Blogs

    Personal perspectives from ThoughtWorkers around the globe

  • Books

    Explore our extensive library

  • Podcasts

    Captivating conversations on the latest in business and tech

  • Back
  • Close   ✕
  • Go to overview
  • Application process

    What to expect as you interview with us

  • Grads and career changers

    Start your tech career on the right foot

  • Search jobs

    Find open positions in your region

  • Stay connected

    Sign up for our monthly newsletter

  • Back
  • Close   ✕
  • Go to overview
  • Conferences and Events
  • Diversity and Inclusion
  • News
  • Open Source
  • Our Leaders
  • Social Change
Blogs
Select a topic
View all topicsClose
Technology 
Agile Project Management Cloud Continuous Delivery  Data Science & Engineering Defending the Free Internet Evolutionary Architecture Experience Design IoT Languages, Tools & Frameworks Legacy Modernization Machine Learning & Artificial Intelligence Microservices Platforms Security Software Testing Technology Strategy 
Business 
Financial Services Global Health Innovation Retail  Transformation 
Careers 
Career Hacks Diversity & Inclusion Social Change 
Blogs

Topics

Choose a topic
  • Technology
    Technology
  • Technology Overview
  • Agile Project Management
  • Cloud
  • Continuous Delivery
  • Data Science & Engineering
  • Defending the Free Internet
  • Evolutionary Architecture
  • Experience Design
  • IoT
  • Languages, Tools & Frameworks
  • Legacy Modernization
  • Machine Learning & Artificial Intelligence
  • Microservices
  • Platforms
  • Security
  • Software Testing
  • Technology Strategy
  • Business
    Business
  • Business Overview
  • Financial Services
  • Global Health
  • Innovation
  • Retail
  • Transformation
  • Careers
    Careers
  • Careers Overview
  • Career Hacks
  • Diversity & Inclusion
  • Social Change
Software TestingTechnology

Functional Testing with IE - an Opinionated Guide

Tom Clement Oketch Tom Clement Oketch

Published: Jun 24, 2014

On my last project, the client categorically asked the team to ensure that the Django app we were developing had first-class support for Internet Explorer 8. Now I know a number of developers who would cringe at the mere mention of Internet Explorer (IE). I have even heard it said that the only use of Internet Explorer is to download an alternative browser! What do you do when you need to set up a test suite that supports the running of functional tests with Internet Explorer? Do you:

  1. Switch roles?
  2. Feign illness?
  3. Run away?
  4. All of the above

Well, here are some more valiant options (that we actually considered and tried out), so you now have a longer list of possibilities!

Option 1: Use a Cloud-based Testing Service

Thank you SaaS/PaaS/IaaS! We now have a couple of platforms that offer testing as a service. The most prominent ones I have come across are SauceLabs and BrowserStack.

Using either of these, you can have your IE testing environment up in a snap without the pain of setting up any additional infrastructure. Moreover, they both offer options to test your internally hosted applications as well as to run tests in parallel. Additionally, the documentation on either site provides a lot of helpful information for getting started.

The Good

  • Using a cloud testing service such as SauceLabs means there is no need to setup and/or maintain testing infrastructure. All that is required is (a connection to the cloud and) a code snippet to let your app know that you are using a remote webdriver (in this case, one hosted by SauceLabs or BrowserStack). This snippet would also point your test executor to the appropriate SauceLabs or BrowserStack (or whatever other testing service) node. Ordinarily, this should not be anything more than a couple of lines of code.
  • SauceLabs in particular supports a wealth of platforms including Windows, mobile and desktop (last I checked 304 Device/OS/Browser Platforms were supported), all the way from the primeval IE6 to beta versions of Firefox and Chrome
  • SauceLabs and BrowserStack both have a lot of useful documentation on their site to help you get started. This includes code snippets for most of the popular languages and platforms including Java, Python, Ruby, Node.js, PHP and .Net.
  • Both automated and manual testing are supported. With manual testing, because the tests are actually being run in a VM, all the useful tools you need for debugging are already available. With automated tests, the test results come with full logs including video screencasts (in the case of SauceLabs) and a command history. Furthermore, each new test run is performed on a clean VM.
  • SauceLabs offers a free tier for open source projects. This comes with unlimited testing minutes as well as (three) parallel VMs!

The Bad

  • Using any of these cloud-testing services is way slower than using a local testing environment. On my team, we noticed increases in test execution time of 200% or even more in some cases.
  • From experience, the likelihood of flakiness of tests tends to increase when using these cloud-based testing services. This is not too surprising, given the introduction of an additional dependency on communication over a network. Having an unreliable, slow, or high-latency network thus becomes a huge factor that determines if your tests pass or fail (or whether the tests run to completion at all).
  • Depending on your project, using such a service may turn out to be quite expensive. Billing tends to be per minute, and your bill will directly reflect those automated tests that hang or take way longer than usual.

Option 2: Set up a Windows Virtual Machine

I assume that by the time you are reading this post, you’re probably already using a standard-issue development rig (read ‘Unix machine’). In that case, you will already be aware that getting access to Internet Explorer from your rig is a non-trivial process. For some reason, IE is the only browser I know that runs on a single platform, so you’re definitely going to need access to a Windows box. VirtualBox is a good VM host to consider for this purpose; it works well on both Mac and Linux, and it’s free (though for Mac I personally prefer to use VMware Fusion). 
 
Having a VM with access to your local application is a fairly straightforward way to run functional tests (at least manually). It is also a lifesaver during the actual development process as it provides the fastest feedback. Automating these tests though, often requires a bit of a hack.

The Good

  • Provides much faster feedback than using cloud-based testing services, since it avoids traversal over the network - which would inherently result in an increase in test execution times
  • The tests are less likely to suffer from the flakiness that would have been caused by the dependency on communication over a network. This is particularly true as long as the VM is located on the local dev machine, or collocated in a datacenter with the dev machine and/or CI-tools
  • Depending on your particular setup, this option is much more likely to be cheaper or even entirely free (for instance if using the freely available IE images from modern.ie on a VM hosted on your local machine)
  • Particularly for manual testing, this option provides the most accurate representation of how a user would interact with the system

The Bad

  • Choosing to use a Windows VM requires the setup and maintenance of additional infrastructure, including the possibility of having to manage Windows licenses. This also involves setting up a Selenium server on the specified VM and making sure that the server is accessible to and from the test initiator. Generally speaking, setup and maintenance is no simple feat.
  • If the goal is to run tests across numerous platforms such as various versions of IE, each of these platforms will require a separate VM (unless you decide to use something such as IECollection which gives you various versions of IE that can be run at the same time). In any case, the corresponding setup/maintenance overhead will most likely quickly spiral out of control.

Bottom Line?

The choice to go with either of the above options ultimately depends on a trade-off between convenience and scalability on the one hand; and reliability and shorter feedback cycles on the other. Take your pick.

  • What we do
  • Who we work with
  • Insights
  • Careers
  • About
  • Contact

WeChat

×
QR code to ThoughtWorks China WeChat subscription account

Media and analyst relations | Privacy policy | Modern Slavery statement ThoughtWorks| Accessibility | © 2021 ThoughtWorks, Inc.