Robust DevOps: Exploring Stability Factors for UI Tests

Practical Course (Bachelor's and Master's)

Background

In today's digital world, software plays a crucial role in every aspect of business operations and transactions. In order to stay competitive and retain customers, companies need to be able to deliver software quickly, while also ensuring its quality and security. DevOps, a combination of software development and IT operations practices, has proven to be a successful approach for organizations looking to speed up application delivery and improve reliability. By implementing specific methodologies and tools, DevOps streamlines the development process and helps organizations stay ahead of the competition.

One consequence of shorter integration cycles are growing regression test suites that are executed more frequently. A problem that occurs more frequently are flaky tests, i.e. tests that sometimes pass and sometimes fail without any changes. These prevent rapid integration, even though no new bug is introduced into the system. Due to the large test size and many non-deterministic events, automated UI tests are especially prone to flakiness.

 

Project Description

In this practical course, we will investigate factors that influence the stability of UI tests in CI. In small and collaborative groups, students will develop tools to provoke UI tests to flake, i.e. to pass and fail without making changes to the code. Students will develop their own CI toolchain to analyze the stability of a given set of open source projects with different tech stacks. By gathering results from all groups, we will be able to quantify how much each tech stack is prone to flakiness and how the environment changes the stability of pipelines.

 

Highlights

  • Work on a major problem that all big technology companies face
  • Apply new methods from cutting-edge research
  • Learn fundamental skills for DevOps including modern CI/CD toolchains 

 

Learning Objectives

  • Building toolchains for CI/CD
  • Robustness in UI testing
  • Dynamic program analysis (e.g. code instrumentation to collect test coverage)

 

Technical Prerequisites

  • Experience with version control (Git)
  • Familiarity with UNIX and using command line interfaces
  • Basic Docker knowledge
  • Programming experience (e.g. university course, personal project)

 

Preliminary meeting

Preliminary meeting took place on Monday, 6. February 3 pm.

The slides will are available here.

 

Registration

  1. Register for this course on the TUM Matching Platform (see the deadlines here).
  2. Submit your application via our own registration form.