Core responsibilities include: - Understanding microcontroller based embedded systems, including algorithms - Partnering with a development team to quickly understand an architecture, break it into functional parts, come up with a plan to test/validate, and identify and target weaknesses - Crafting creative ways to exercise embedded subsystems, communication protocols (SPI, I2C, etc) and high-level features of embedded devices - Devising and building test fixtures, building tools and authoring automated scripts - Carrying out manual and automated test plans on early prototypes, typically at the “grey box” level - Helping to craft quality from a very early stage, ushering the product from early prototype to production - Documentation of test cases and code used for test execution - Coming up with ideas for custom tools and methods to exercise firmware features - Supervising performance, reporting results to management, driving issues to closure