- From The Pipeline v36.0
- From the Pipeline v9.0
- From the Pipeline v15.0
- From the Pipeline v14.0
- From the Pipeline v13.0
- From the Pipeline v12.0
- From the Pipeline v11.0
- From the Pipeline v10.0
- From the Pipeline v8.0
- From the Pipeline v17.0
- From the Pipeline v7.0
- From the Pipeline v6.0
- From the Pipeline v5.0
- From The Pipeline v4.0
- From the Pipeline v3.0
- From the Pipeline v2.0
- From the Pipeline v16.0
- From the Pipeline v18.0
- From The Pipeline v35.0
- From The Pipeline v28.0
- From The Pipeline v34.0
- From The Pipeline v33.0
- From The Pipeline v32.0
- From The Pipeline v31.0
- From The Pipeline v30.0
- From The Pipeline v29.0
- From the Pipeline v27.0
- From the Pipeline v19.0
- From the Pipeline v26.0
- From the Pipeline v25.0
- From the Pipeline v24.0
- From The Pipeline v23.0
- From the Pipeline v22.0
- From the Pipeline v21.0
- From the Pipeline v20.0
- From the Pipeline v1.0
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.