SDET

Job Description

Summary:

The SDET actively develops new test automation code and maintains existing test automation code with a high degree of quality, leveraging strong software design and test automation principles, ingenuity and creativity, attention to detail, and analytical skills to devise unique and innovative ways to test software solutions. The SDET is responsible for writing test code across all tiers of an N-tier architecture, including client-tier, middle-tiers, and back-end (data/database), for automation testing integrated software systems with third parties, developing and maintaining robust test automation suites, building and leveraging configuration and deployment automation tools.

The SDET works with Business Systems Analysts to determine customer and product requirements’ and their applicability to product code and test code; with Manual Testers to better understand detailed test cases and scenarios, and to help debug issues; with Application Support to understand, debug, and resolve issues found by customers in production or UAT environments; and with Product Engineering Management to deliver and track status on team, product, customer, and company initiatives.

Essential Responsibilities:

  • Code – Implement high-quality, fault-tolerant, clean, reusable, and maintainable automation tools and test frameworks.
  • Triage – Efficiently reproduce reported software problems, analyzing logs, data, and system results to provide comprehensive and robust information to developers so they can quickly resolve the problems.
  • Debug– Resolve difficult issues, often times with little information, spanning across large and distributed systems.
  • Develop and Organize Tests – Create structured, clean, and cohesive test cases for all new features and/or functional changes in the software, organized into repeatable test suites.
  • Document – Ensure testing activities always lead towards the growth of the company’s collective knowledge through strong code-level and knowledge base documentation, including capturing test framework design details, configuration and deployment notes.
  • Develop Expertise – Build a deep understanding of our Client’s products, customers, product configurations, and data. Thoroughly understand the state changes the products undergo as end users exercise the system across product boundaries.
  • Support – Be available to help with critical customer issues that are reported to the Application Support personnel.  This includes reproducing and documenting production issues, analyzing logs, or clarifying intended functionality.
  • Empathize – Develop a strong empathy for our Client’s customers and their needs.
  • Report– Track status on testing and development activities accurately and in a timely fashion. Provide intuitive and organized reports to the team through regular SDLC activities and updating of SDLC and testing tools.
  • Learn – Display a passion for constant learning of new product features, technologies, and customer operational practices.  Seek out information from peers about changes and document findings.
  • Collaborate– Work extensively with cross-functional development teams, other company personnel, and customers.

Qualifications:

  • Education and Experience
    • S. in Computer Science, Computer Engineering, or Software Engineering with 5 years’ work experience.
    • S. in Computer Science, Computer Engineering, or Software Engineering preferred 3 years’ work experience.
  • Programming Languages– Knowledge of and experience working in at least two (2) (or deep expertise in at least one) of the following high-level languages: Java, C++, C# (.NET Framework), Scala.  In web-development oriented roles, JavaScript.  SDETs should be comfortable working across multiple programming languages given reasonable opportunity to adapt.
  • Automation Testing– Working knowledge of white-box language-specific Automation Test frameworks (such as JUnit or NUnit), and ability to code test automation successfully to exercise unit, integration, and regression testing scenarios are required.
  • Testing Acumen – Working knowledge of black-box testing principles and practices, breadth of understanding in testing methodologies, and experience performing a variety of test automation activities, including performance testing, security testing, and build verification testing (BVT).
  • Middleware Frameworks– Working knowledge of service oriented architecture (SOA), web services (SOAP), RESTful services, Microservices, API development, Message Brokers and/or Message Stream Processing technologies including higher level language-specific frameworks, such as Spring, WCF, Lightbend, Messaging (JMS, NMS, MQTT), JBoss, or other leading frameworks.
  • Software Architecture – Working knowledge of modern software architecture principles, including application of caching, micro- and mini-services, modern data storage constructs and principles (caching, RDBMS, NoSQL), distributed development and modern software integration practices.
  • Client-Side Development– Working knowledge of client-side development frameworks, including at least one area of expertise in either web-oriented frameworks (HTML, JavaScript), thick client application development (Windows or Mac, for example), or native mobile application client development (iOS/Swift, Android).
  • Design Patterns – Demonstrable understanding of Object Oriented design patterns and real-world application of design patterns leveraging modern software frameworks.  Deep understanding of software design pertaining to separation of responsibilities, MVC, encapsulation, pragmatic usage of inheritance versus compositional logic, and intelligent application of polymorphism are critical.
  • Scripting– Working knowledge of platform-specific scripting platforms (Linux/Mac BASH/KSH or Windows Powershell) and associated coding skills, and working knowledge of at least one scripting language (Python, Perl, AWK, Groovy, Lua, Ruby, or other).
  • Data Storage & Access– Working knowledge of modern data storage and access technologies, including caching, application of NoSQL, Key/Value, and RDBMS datastores.  Deep understanding of SQL, including understanding of views and stored procedures.  Experience in PL/SQL and Oracle a plus.
  • Logging– Working knowledge of at least one key language-specific logging framework (log4j, logback, slf4j, NLog, log4net, Boost, or other) and demonstrable understanding of the purpose and value of logging.
  • Concurrency– Working knowledge of multi-threaded software development, including management of threads, thread pooling, deadlock avoidance, executors, and other fundamental concurrency concepts.
  • Build and Deployment– Working knowledge of at least one language-specific build framework (ability to set up, execute, and script the framework) as well as familiarity with at least one automated deployment framework (Ansible, Chef, Puppet).
  • IDEs, SCM, & Tools– Detailed knowledge of at least one Integrated Development Environment (IDE), including hotkeys and efficiency mechanisms of that IDE, along with a detailed understanding of the workings of an SCM tool (Perforce, Subversion, Git).
  • SDLC– Experience working in an Agile SDLC environment, and working knowledge of at least one Agile SDLC tool to manage workload (i.e. VersionOne, JIRA, Rally).
  • Communication– Excellent written and verbal communication skills.
  • Culture– Must be able to work in a dynamic, varied, and fast paced environment. Flexibility, tolerance to change, adaptation, pragmatism, and commitment are a necessity.

Reference Number: 5256