From the Pipeline v25.0

pipeline
This entry is part [part not set] of 36 in the series From the Pipeline

The following will be a regular feature where we share articles, podcasts, and webinars of interest from the web.

Making GitHub CI Workflow 3x Faster

GitHub has started a “building GitHub” blog series to provide insight on their engineering team practices. In the first post, they share how they decreased the time from commit to production deployment. The GitHub codebase is a monolith with thousands of tests executed across 25 CI jobs for every commit. To reduce the time from commit to deployment they first categorized the types of CI jobs, then fixed the flaky tests. They then modified their deployment with a “deferred compliance” tool that pushes through changes, but when an issue is noted by the CI jobs, gives the team 72 hours to fix the issues before it’s rolled back. The teams are notified of these compliance issues via Slack. Overall a interesting read and I’m looking forward to the next three posts in the series.

A Sustainable Pattern with Shared Library

Thomas Bjerre describes how he uses Shared Libraries in Jenkins. Shared Libraries are used for Pipelines, which can be defined in external source control repositories and loaded into existing Pipelines. This helps to reduce duplicated code, provides a form of documentation, and a standard way to reuse patterns. Thomas constructs a build plan to decide on what will be done in the build to streamline the rest of the code. A public API is used to help standardize what uses of the library will invoke.

How to Use Page Object Model in Selenium

This post by Perfecto is an overview of the Page Object Model. “Page Object Model (POM) in Selenium is a design pattern that creates a repository of objects, such as buttons, input fields, and other elements. The main goal of using POM in Selenium is to reduce code duplication and improve the maintenance of tests in the future.” To help keep the test code in maintainable state, ensure that page objects never make the verifications. Also make sure the verification is that the page loaded correctly. Lastly, only add elements that are actually used to prevent clutter.

Antipatterns and Patterns

This is a fascinating article that not only explains the difference between antipattern (ineffective approaches that are ineffective) and pattern (effective and improves desired outcomes), but provides examples of pairs within an organization. The collection of all the patterns and antipatterns are included in an associated book, “Sooner Safer Happier”.

Java for QA Engineers: How to Learn

John Selawasky lists the path forward for converting manual testers to automation testers in a Java domain. His recommendations include: (1) learn Java Core and solve many small coding tasks; (2) use a good IDE (I recommend IntelliJ IDEA); (3) Learn unit testing; (4) verify your code without System.out.println but with your own unit tests; (5) read about code refactoring; (6) learn SQL at the beginner level; (7) learn a little bit about Gradle, Maven, and Spring; (8) read, check, and improve the code of other people; (9) work with Mockito (or other mock testing frameworks); and, (10) now learn your testing tools.

Series Navigation

Leave a Reply

%d bloggers like this: