Software Engineer in Test
Job title
Software Engineer in Test
Business Stream:
Ocado Technology


Apply now

Job Purpose

So, you are passionate about the quality of software. You have experienced different work environments and you know that separation of dev and QA is not the brightest idea. You know that quality is a large part of productivity and makes the software team move faster. You have been in the core of development, participating in every stage of the process, you have worked on the improvement of the process together with your team.

Quality means you work to help the whole team communicate and stay aligned with the thoughts and needs of the stakeholders and customers. Quality also means testable, simple, maintainable, flexible code and getting fast feedback.

You know how to make sure that the story is testable, how to build the testing pyramid for your product, how to make the decision whether to automate something or not. You’re happy to roll up your sleeves and write automated tests. You are lazy pragmatist ­ manual testing needs justification for you. You have the courage to stop the line if the quality drops. You think scale ­ quality at scale. You make others think alike.

Great, we’re looking for people like you who can help us embed quality in our process and improve it over time. People who are technical experts and get things done by using their smarts and whatever tools make sense to get the job done. People who love to stand on the shoulders of giants to solve new problems and thrive in a rapidly innovating space.

Must have:

  • Deep knowledge and understanding of testing methodology – the person should be able to introduce testing practices and build a testing strategy on a team level
  • We expect you use industry standard vocabulary according to ISTQB Foundation Syllabus proven by well understanding of testing pyramid model
  • Experience with Java 8
  • OOP theoretical basics
  • Experience with test automation
  • Experience with regression testing and providing manual testing coverage
  • Very good communication skills
  • CI & CD experience
  • HTTP protocol communication basics – well understanding this in practical exercises
  • Proven ability to understand legacy code
  • Good communicator, communicate with all of the stakeholders
  • BS in Computer Science or related technical field or equivalent practical experience

Nice to have:

  • Selenium WebDriver & Selenium Grid
  • Performance testing (JMeter, Gatling, design/architecture)
  • Virtualisation experience (Docker, Ansible, Puppet, Kubernetes, KVM)
  • Cloud computing platform experience (Google Cloud, AWS)
  • Contract testing experience
  • Microservice application testing
  • Security testing experience
  • Scripting skills Shell or another common language
  • Knowledge of Unix/Linux environments
  • Relational Database knowledge (OracleDB)

Eager to learn:

  • Java 11
  • REST application testing (RESTAssured/Spring template)
  • JS basics (JavaScript-based testing frameworks like NightmareJS)

Responsibilities:

Help the team to deliver the well-tested product.

  • Assessment in terms of understanding its business logic, analyzing requirements
  • Justification and understanding the projects’ testing needs according to testing pyramid model (what kind of testing on which level within prioritization)
  • Prove data-driven decision attitude – basing quality metrics – to asses the quality of software not basing on feelings but basing on facts

Implementation of Automation Tests

  • Assessment of automation needs – you are not a bottleneck here – developers are also        writing automated tests in Ocado. o End-to-end integration tests
  • Component-level (API) tests
  • Unit-level tests

Treating application like a white-box

CI setup

Providing session of manual testing when needed

Involved in the development and implementation of Testing Strategy:

  • investigation and justifying approaches,
  • best practices
  • proposals to developers in terms of making the application more testable
  • tools

Soft Skills and Competencies:

  • A highly motivated and dedicated person
  • Detail oriented
  • Quick learner
  • Proven ability to establish trustful relations with the customer
  • Time management; provide good estimation; do not afraid to escalate
  • Clearly, express thoughts in a sharp and technical way
  • Ability to work within a team and on their own
  • Technically perceptive specialist

Job purpose

We create the technology behind Ocado, the world’s greatest online-only grocery retailer. We build everything from websites to warehouse solutions, route optimizers to fraud detection tools, all in-house. We have great freedom in regards to the design, technologies and the processes we use. This autonomy gives us the authority to make all the decisions necessary in the various processes, that we are responsible for, making us the true owners of the products we create.

What we do and we would like you to do 

We like Agile at Ocado and we are pretty good at it. We also believe that Agile is a bit more than backlog in Jira and daily standups, so we expect our developers to constantly observe, fine tune and adapt the development process to current needs. The process may change because of many factors. These could be: the nature or phase of the project, the maturity of the team, or the technologies used etc. Every project/team member should be able to spot the changes, suggest improvements and evaluate them after they have been applied.

We write software to solve the business problems of our customers. Usually, the problems are very complex and involve many projects and systems to deliver the solution. It is crucial to be able to share the knowledge and cross-team vision, to propose solutions that span across multiple systems and the whole organisation. It is very important to be able to explain technical aspects (pros and cons, work estimates, technical debt) to a less technical audience like Product Owners, UX Team, business representatives.

We believe that if we do not make mistakes, it means we are not moving fast enough. But to move fast, you have to eliminate all unnecessary risks. To achieve that, we do the following:

  • try our best to deliver systems, APIs and data, that are easy to use, understand and maintain
  • constantly improve the standards of software craftsmanship by following the latest trends in IT, frameworks, tools and techniques, attending conferences, mentoring others, performing code reviews or doing pair programming
  • make sure that our software is testable and properly tested (preferably in an automated way)
  • design and implement software and underlying architecture so that they can test, deploy and scale on their own
  • gather data to verify our assumptions, in the production, provide an immediate feedback to all stakeholders
  • implement monitoring and alerting, so that we know immediately when things go wrong (this is done by using commercial tools like New Relic, custom solutions or simply by proper logging and clever scripts)
  • always have a Plan B when things go wrong (use stability patterns and deployment strategies that allow things to get back to a safe state in a matter of seconds) and act immediately to put them right again
  •  constantly look for improvements and learn from our mistakes

Apply now