This Software Engineer will be responsible for the design and implementation of test systems capable of evaluating product performance and correctness in a Windows environment. Other OS environments, such as OS/X and Linux, to follow. This engineer will work as a part of a feature development team with the goal of designing testability into the product during feature implementation. This engineer will design and implement test systems capable of interacting with a product that runs as a Windows service and has no user interface. Extensive integration skills will be necessary to instigate the appropriate operations in the environment OS and evaluate telemetry being sent over the network to back end servers in the cloud as a result of those operations. This engineer will be required to gain intimate knowledge of our product's capabilities and limitations, and design and implement test software to validate those capabilities and measure the product's limitations. This engineer would be responsible for all the above being applied to an automated build environment using continuous integration and the production of reporting that describes the results of the testing.
What you will do:
- Implement automated test suites to ensure production ready software
- Construct CI/CD pipelines that can automate the process of SCM checkout, building and automated tests of our software
- Be responsible for iterating on solutions quickly and effectively in a software release production environment
What you need:
- Experience coding in C++.
- Experience in Scripting in the Microsoft Windows environment using PowerShell, Windows Batch scripting, Python or VB scripting
- Comfortable working on specific goals independently with little or no direction.
- Experience with bootstrapping and maintaining a CI/CD system such as Jenkins or Gitlab
- Strong experience with a Version control system such as Git.
A candidate with these additional skills and experiences is preferred:
- Expertise in setting up and maintaining complicated test environments in a fault tolerant and repeatable manner.
- Expertise in integrating with applications under test that have no visible interface.
- Experience in writing test code that interfaces directly with product code written in C++.
- Working knowledge of managing and provisioning cloud resources in either GCP, AWS or Azure using their command line SDK.
- Expertise in some form of automated fault injection.