At YouView, we are automating as much of our testing as possible. To achieve this, we have developed a suite of automated tests along with a platform that is now running thousands of tests daily across a range of YouView set-top boxes.
We believe that our automation goals are more ambitious than anything currently done in consumer electronics software. We are constantly striving to push the limits of our test capability and to maximise the continuous integration, testing and delivery of our software.
Our tests use the stb-tester framework (which we have open-sourced) and run on dedicated test rigs driven by Linux servers. They use hardware appliances to gather diagnostic data, capture video, and control the set-top boxes. The tests generate a huge amount of data that needs to be managed, with the results stored in databases and file servers. Web applications allow us to schedule tests, to check the state of a box and to review and analyse results.
We are looking for a talented engineer to lead the infrastructure effort and ensure the reliability and high availability of the test automation platform. The role will involve developing and maintaining the hardware and software systems that keep our automated tests running reliably and scaling the platform to meet new challenges.
• Provision and maintain Linux servers, storage, databases, services and applications
• Manage and improve the continuous integration, software release and deployment processes
• Detect, investigate and resolve hardware or CPU/storage/memory/network issues
• Evaluate and implement solutions to extend our test capability and improve the platform
• Develop and maintain scripts and services to facilitate automated testing
• Collect, analyse and report metrics on infrastructure availability and utilisation
• Manage and report on the inventory of all hardware and software resources
Essential Skills & Experience
• Expert Linux skills and proven experience in administration and troubleshooting
• Strong Bash shell scripting skills and proficiency in one of: Python, Perl or Ruby
• Good communicator and methodical problem solver with an awareness of best practice
• Solid understanding of ethernet, TCP/IP networking and common network protocols
• Configuration management (Puppet/Chef/Ansible) and continuous integration (Jenkins)
• Compiling, patching, packaging and deploying software on Linux (Make, RPM/deb)
• Fluent in SQL and experienced in database management (PostgreSQL/MySQL, SQLite)
• Monitoring and log management solutions (Nagios/Shinken, Graphite, LogStash/Fluentd)
• Proficient with version control systems, especially git and SVN
• Experience working with high availability systems
• Experience working in continuous delivery environments
Desirable Skills & Experience
• Good Python programming skills are a strong advantage
• Previous experience managing automated testing infrastructure
• Experience with Red Hat derivatives (Fedora/CentOS, systemd)
• Setting up and administering web servers (Apache, NGINX)
• Virtualisation (Vagrant, VirtualBox) and containers (Docker/OpenVZ/LXC)
• Configuring NAT and bridged networks with iptables and ebtables
• Infrastructure automation (Cobbler, kickstart/preseed, Packer)
• An understanding of software testing, DVB/DTT and IP Platforms