Software Engineer in Test Job Family

Software Engineers in Test at GitLab help grow our test automation efforts across the entire GitLab ecosystem.

Software Engineers in Test at GitLab help grow our test automation efforts across the entire GitLab ecosystem. As a Software Engineer in Test, you’ll work in a key position, where your efforts will have a noticeable impact on both the company and product. In addition to the requirements below, successful candidates and team members will share a passion for high-quality software, strong engineering principles, and methodical problem-solving skills.

Responsibilities

  • Expand our existing test automation framework and test coverage.
  • Develop new tests and tools for our GitLab.com frontend, backend APIs and services, and low-level systems like geo-replication, CI/CD, and load balancing.
  • Have the ability to grow your knowledge of GitLab provisioning and setup tools like Terraform and Ansible.
  • Setup and maintain new GitLab test environments.
  • You’ll work on test automation issues related to the Quality department, the stage group you’re embedded in, and the entire GitLab product. The work you’ll do will be transparent and open to the GitLab community
  • Participate in test pipeline triage rotation and ensure pipeline failures are triaged promptly.
  • Develop working knowledge of the entire GitLab application stack including tests at all levels. (Unit, Integration, and End-to-end).
  • Groom and prune GitLab tests at all levels to ensure optimal coverage and effective deduplication.
  • Collaborate with a Product Manager and with the wider product and development team to understand how new features should be tested and to contribute to automated tests for these new features.
  • Collaborate with engineers to define and implement mechanisms to inject testing earlier into the software development process.
  • Identify, share, and nurture the adoption of best practices in code health, testing, testability, and maintainability in collaboration with the wider Quality department. You should champion clean code and the concept of the test pyramid.
  • Analyze complex software systems and collaborate with others to improve the overall design, testability, and quality.
  • Strive for the fastest feedback possible. Test parallelization should be a top priority. You see distributed systems as a core challenge of good test automation infrastructure.
  • Configure automated tests to execute reliably and efficiently in CI/CD environments.
  • Track and communicate test results in a timely, effective, and automated manner.

Requirements

  • You have a few years of professional experience developing in Ruby or working on a Ruby on Rails application
  • You bring significant experience using Git and its command line
  • You’re comfortable with Selenium-based test automation tools like Capybara
  • You’ve got a working knowledge of Docker
  • You’re interested in growing your knowledge and skills in Test Environment Provisioning and Configuring using technologies like Terraform, Ansible, Kubernetes, GCP, or AWS
  • You have experience with Continuous Integration systems (e.g., Jenkins, Travis, GitLab)
  • Our values of collaboration, results, efficiency, diversity, iteration, and transparency resonate with you
  • You’ll thrive in an environment where self-learning and self-service is encouraged and instilled as a part of our culture
  • Ability to use GitLab

Levels

Intermediate

3 or more years of software engineering experience in Test Automation, Test Tooling and Infrastructure, or Development Deployment Operations.

Job Grade

The Software Engineer in Test is a grade 6.

Responsibilities

  • Quad Planning & Test Coverage
    • Perform quad planning and improve test coverage in collaboration with other Software Engineers in Test
    • Help create test strategy and implement test automation for new and existing features.
    • Identifies gaps in functional test automation, document missing coverage, and add new test automation to improve coverage.
  • Test Stability & Triage
    • Participate in test pipeline on-call rotation and ensure that pipeline failures are triaged, addressed and communicated in a timely manner.
    • Help unquarantine flaky tests.
    • Work with the counterpart group to address test failures due to bugs in code.
  • Test Tooling
    • Contribute to test stability in production and non-production environments.
    • Contribute to new test framework tooling and provide feedback to new approaches proposed by the team.
    • Improve deploy processes, deployment scripts, and build pipelines in collaboration with other Software Engineers in Test.
  • Test Environments
    • Grow your knowledge of GitLab provisioning and setup tools. Examples include Omnibus, the Orchestrator, Terraform, Ansible, Kubernetes, Helm Charts, GCP, or AWS.
  • Task Management & OKRs
    • Owns tasks within an OKR.
    • Regularly manage project schedules ensuring objectives are aligned with team/department goals.
    • Exercises judgment and independently identifies the next steps.
  • Knowledge Sharing
    • Clearly document process and knowledge in collaboration with other team members.
  • Domain specific expertise
    • Demonstrate domain specific responsibilities within their assigned product group

Senior

7 or more years of software engineering experience in Test Automation, Test Tooling and Infrastructure, or Development Deployment Operations.

Job Grade

The Senior Software Engineer in Test is a grade 7.

Responsibilities

  • Quad Planning & Test Coverage
    • Lead Quad planning efforts and optimize test coverage.
    • Create test strategy and implement test automation for new features.
    • Provide risk analysis and input on test strategy.
    • Identify and communicate must-have test coverage for critical functionality.
    • Refine tests at all levels to ensure efficient coverage and effective deduplication.
    • Steer the team to optimal test coverage by identifying gaps in functional and non-functional test automation, documenting missing coverage, and adding new test automation to improve coverage.
  • Test Stability & Triage
    • Lead triage and test pipeline stabilization activities.
    • Participate in test pipeline on-call rotation and ensure that pipeline failures are triaged, addressed and communicated in a timely manner.
    • Take ownership of unquarantining flaky tests.
    • Work with Infrastructure and the counterpart group to address test failures related to test environments or bugs in code.
    • Identify and implement improvements to the process to make it more efficient.
  • Test Tooling
    • Lead test stability resolution efforts for tests in production and non-production environments.
    • Lead and implement new test infrastructure tooling.
    • Optimize test pipelines to reduce feedback cycle.
    • Take initiative to recommend new approaches and processes that will improve our quality, productivity, and velocity.
    • Create and refine deploy processes, deployment scripts, and build pipelines.
  • Test Environments
    • Grow your knowledge of GitLab provisioning and setup tools. Examples include Omnibus, the Orchestrator, Terraform, Ansible, Kubernetes, Helm Charts, GCP, or AWS.
    • Maintain or set up new GitLab test environments for your stable counterpart group in collaboration with other Software Engineers in Test.
  • Task Management & OKRs
    • Owns KRs within team OKRs.
    • Establish due dates and approach for completing assignments; demonstrates project management skills as part of a larger team.
    • Exercises judgment and independently identifies the next steps.
    • Works closely with counterparts to anticipate, understand, and plan for upcoming work and roadblocks.
    • Contributes to progress of working group exit criteria.
  • Knowledge Sharing
    • Clearly document, review, and broadly share our process and knowledge. This could be across mediums (recorded videos, written artifacts) and may include activities like:
      • Contributing to external content like GitLab blogs on interesting problems solved.
      • Recording demos and walk-throughs.
      • Mentoring other engineers.
  • Domain specific expertise
    • Demonstrate domain specific responsibilities within their assigned product group.

Staff

10 or more years of software engineering experience in Test Automation, Test Tooling and Infrastructure, or Development Deployment Operations.

Job Grade

The Staff Software Engineer in Test is a grade 8.

Responsibilities

  • Test Strategy (Quad Planning) & Test Coverage
    • Own quad planning efforts and proactively optimize test coverage.
    • Coach other SETs and fellow counterpart team members on effective testing strategies and implementation of test automation for new features.
    • Proactively manage the competing priorities and potential collisions of concurrent projects to reduce risk, increase test coverage, and leverage efficiency gains in overlapping testing activities.
    • Identify and design potential new testing practices/tools/frameworks, demonstrate their value, and implement in collaboration with other Software Engineers in Test.
    • Provide risk analysis and input on test strategy, refine tests at all levels to ensure efficient coverage and effective deduplication, and steer the team to optimal test coverage.
  • Test Stability & Triage
    • Proactively manage triage and test pipeline stabilization activities.
    • Participate in test pipeline on-call rotation and ensure that pipeline failures are triaged, addressed and communicated in a timely manner.
    • Take ownership of unquarantining flaky tests. Help debug failures to unblock the current on-call engineers.
    • Work with Infrastructure and the counterpart stage to address test failures related to test environments or bugs in code.
    • Proactively identify and implement improvements to our process and test architecture to improve stability and reduce flakiness.
  • Test Tooling
    • Lead test automation infrastructure implementation across multiple product areas in collaboration with stage group, functional area counterparts and Quality Department team members.
    • Work across departments to identify, plan, and execute improvements/refinements.
    • Keep up-to-date on industry developments and conduct spikes/Proofs-of-Concept on potential improvements or new tooling.
  • Test Environments
    • Setup and maintain new GitLab test environments for your stable counterpart group.
    • Leverage provisioning technologies (e.g. Omnibus, the Orchestrator, Terraform, Ansible, Kubernetes, Helm Charts, GCP, or AWS) and work with infrastructure and distribution teams as needed.
  • Task Management & OKRs
    • Work on complex department initiatives that have an impact on the company’s bottom line.
    • Defines and delivers OKR that aligns with Company and Department initiatives.
    • Define and independently manages multiple projects within the department.
    • Able to create new methods for obtaining results.
    • Analyze engineering metrics and make suggestions to improve engineering processes and velocity.
    • Contributes to Working Groups as a Quality lead.
  • Knowledge Sharing
    • Clearly document, review, and broadly share our process and knowledge. This could be across mediums (recorded videos, written artifacts) and may include activities like:
      • Participating in customer calls and taking part in Engineering outreach.
      • Hosting AMAs or office hours.
      • Speaking at conferences or meet-ups.
    • And must include activities like:
      • Mentoring Intermediate and Senior SETs.
      • Recording demos and walkthroughs.
      • Regularly authoring and reviewing new content from the department to the company blog and handbook.
  • Domain specific expertise
    • Demonstrate domain specific responsibilities within their assigned product stage.

Career Ladder

The next step for both individual contributors and managers of people is to move to the Quality Engineering Leadership job family.

Performance Indicators

Software Engineers in Test have the following job-family performance indicators.

Hiring Process

Candidates for this position can expect the hiring process to follow the order below. Please keep in mind that candidates can be declined from the position at any stage of the process. As a result an interview can be canceled at any time even if the interviews are very close (e.g. a few hours apart).

To learn more about someone who may be conducting the interview, find their job title on our team page.

  • Candidates will complete a technical assessment when they apply. Sometimes this will be shared by our Talent Acquisiton team after an application is made.
  • Qualified candidates will be invited to schedule a 30 minute screening call with our Talent Acquisiton team.
  • Next, candidates will be invited to schedule a 45 minute first interview with the Hiring Manager for the team you are interviewing for. Once the interview is completed, there may be occasions where the interviewer believes you are a better match for another team we are hiring for. In this instance, we will ask you to meet another Hiring Manager as part of the process.
  • Next, candidates will then be invited to schedule a 1 hour peer interview with a Software Engineer in Test in the Quality department.
  • Next, candidates will be invited to schedule a 90-minute technical interview with a Senior Software Engineer in Test. This will be booked for a date at least 5 business days into the future. This allows enough time to complete the asynchronous technical task, including all review cycles.
  • Finally, candidates will be invited to schedule a 45 minute interview with the Head of Quality.
  • Successful candidates will subsequently be made an offer via email.

Additional details about our process can be found on our hiring page.

 


About GitLab

GitLab is an open core software company that develops the most comprehensive AI-powered DevSecOps Platform, used by more than 100,000 organizations. Our mission is to enable everyone to contribute to and co-create the software that powers our world. When everyone can contribute, consumers become contributors, significantly accelerating the rate of human progress. This mission is integral to our culture, influencing how we hire, build products, and lead our industry. We make this possible at GitLab by running our operations on our product and staying aligned with our values. Learn more about Life at GitLab. Thanks to products like Duo Enterprise, and Duo Workflow, customers get the benefit of AI at every stage of the SDLC. The same principles built into our products are reflected in how our team works: we embrace AI as a core productivity multiplier. All team members are encouraged and expected to incorporate AI into their daily workflows to drive efficiency, innovation, and impact across our global organisation.

See our culture page for more!

Work remotely from anywhere in the world. Curious to see what that looks like? Check out our remote manifesto and guides.