Senior Software Engineer in Test - RetailMeNot

Engineering Bengaluru, India


Description

Description

A Senior Software Engineer in Test is able to deliver increased quality for technical initiatives within the scope of a team with minimal guidance and with a focus on improving development efficiency. They can be assigned large testing initiatives within a team and assist in coordinating work for the engineers within that team. They provide testing recommendations for their team or domain and provide some leadership and mentoring. They implement high quality and value test-focused codebases, identify testing solutions to moderately complex code and designs, and effectively implement effective testing approaches. As a result, Senior Software Engineers in Test may deliver less code-level contributions that at SET II, but have broader impact in all that they do.

Expectations

  • Drives improvement in quality for medium sized code bases
  • Focuses on automated testing in the lower levels of the automation pyramid
  • Ability to implement an automation solution from inception to a production ready build.
  • Continuously mentors junior and mid-level engineers with knowledge and skills to improve quality of solutions across RMN.
  • Defines, coordinates and owns project test strategy, driving focus on automated testing lower in the pyramid
  • Leads engineers in own team to improve valuable code coverage at the appropriate layers
  • Implements quality portions of continuous integration and delivery (CI/CD) pipelines to ensure automatic verification and rapid deployment of code changes
  • Actively participates in code reviews for application (with an eye towards testability and quality) and test code (frameworks, test cases, etc.) making changes to code when needed
  • Collaborates with leadership and peers to make sound and mature technical judgements
  • Approaches problem solving holistically and considers solutions through a combination of technology and process
  • Understands cross-tech stacks, scalability and reliability implications 
  • Has deep knowledge about one or two technologies with growing knowledge of one or more other technologies, including those used at RMN
  • Influences others in technical decision-making and technology adoption within their domain
  • Consistent track record of high quality, maintainable tests that provide high impact 

Requirements

  • Bachelor’s Degree in Computer Science or 4+ years of similar education or experience
  • Typically requires 4+ years of industry experience as a Software Engineer II in Test or comparable experience
  • Strong foundation in algorithms, data structures, object-oriented programming and core Computer Science concepts
  • Track record of timely delivery of high quality software
  • 4+ year of programming experience in any of the following: Java, REACT, HTML / CSS, JavaScript either through self-learning, work implementations or accelerated bootcamp
  • 4+ year of hands-on experience in backend database testing such as SQL, DB2, or PostgreSQL
  • 4+ years of hands-on experience with a test management tool such as Visual Studio Online, TestRail, XRay or Zephyr.
  • 4+ years of automation experience in Selenium 
  • Seasoned in the implementation of  automation tooling such as TestNG, JUnit, NUnit, Mocha, Jasmine  PostMan, Docker, Kubernetes, Maven, Gradle and Git with zero guidance
  • Demonstrated ability to implement test strategies for CD / CI implementations involving native and web applications
  • Solid understanding of Unit, Integration and UI test concepts with a shift-left approach first
  • Seasoned in the implementations of test and behavioral driven development
  • Ability to participate in code reviews,provide recommendations or make code changes
  • Strong sense of ownership the ability to work independently and collaboratively across an organization 
  • 2+ years of performance testing experience (locust.io, gatling, jmeter etc)
  • 2+ years of native app testing through cloud infrastructure (SauceLabs, BrowserStack, App Center) a plus

Examples

  • Develops a service that allows test automation to create test data in lower environments via a common API
  • Develops the CI/CD pipeline for a project such that tests are automatically executed and coverage gathered as part of the merge request process prior to code even landing in a test environment
  • Actively participates in POCs for new test frameworks (e.g. RestAssured, Karate API or Espresso) and provides contextual feedback to the testing engineering team 
  • Works cross team boundaries to develop the testing strategy for new features which have downstream impact (e.g. Display should honor UGC suppression start/end date)
  • Refactors React components in TNG to isolate code to make it more testable via automation
  • Add mocking to iOS component tests to enable automated capture of analytics events without requiring integrated tests
  • Identifies broken error behavior in RmnQL queries/responses and adds code to clarify behavior and prevent regression
  • Identifies and implements unit tests to provide greater value and confidence around software
  • Bring UI tests to the left where applicable through API and / or Unit Tests