Brad Hays | Sr Test Automation Engineer

Software:

Sublimetext
Virtualbox
Docker
Git

Test Frameworks

pytest
locust
swagger
python-needle

Test Platforms

CircleCi
Gitlab

Code Inspection

Sonarqube

Career Development


Carro, Dec 2021 – present | Senior Test Engineer


Responsible for developing and implementing cost-effective methods of testing and troubleshooting complex systems to verify functionality.

As lead of test automation, I

  • Support and coordinate with team members and other departments
  • Participate in scrum ceremonies including design review, grooming, standup, retro
  • Develop and execute functional/regression/integration tests based on product requirements for our graphql and rest API services
  • Troubleshoot issues and reports them as bugs/regression with root cause analysis where possible to developers/product via Jira and escalate as outside of normal triage
  • Manage and maintain backlog of issues for testing and issues found while testing
  • Other automation tasks as requested

My day-to-day tasks make use of the following technologies:

CI/CD
  • argo/argo workflows
  • github actions
  • docker/docker-compose
  • bash scripting
  • slack notifications of errors

Testing

  • pytest
  • selenium
  • Graphql
  • Rest APIs

Shopify

  • Graphql
  • Rest API

Tools

  • datadog
  • docker








Skills: Argo · Shopify · Linux · Troubleshooting · Shell Scripting · Python (Programming Language) · docker · Selenium · Test Automation


Recharge Payments, Jul 2019 – Nov 2021 | Senior Software Engineer in Test (SDET)


As an embedded QA member of a cross-functional feature team, I am responsible for verification of acceptance criteria, regression, and manual FE testing where automation is deemed too costly to create. Our stack of web applications include REST APIs, and microservices in python and Vue.

As a QA guild member, I create and maintain tests in pytest and docker based test suites. Leading optimization and usability efforts. I am part of a weekly rotation that triages customer service escalations to identify a root cause.

This includes writing documentation and educating developers on TDD practices, and anti-patterns that cause bugs and flaky tests.

Teams I have worked on: Internal Tools and Payments & Processing


Projects that I have designed and implemented:

  • Performance testing with locust
  • Pytest plugins to supplement suites and provide reliability in a timely manner, including blocking egress from the suite for 3rd party integrations to ensure proper mocking.
  • Developer-centric tools to enable quick local setup and time to development through dynamic docker-compose generation based on developers’ needs.
  • Slack bots using websockets, Gcloud run, and gitlab pipelines for CI/CD to automate self-serve tasks to developers.
  • Visual regression tool for FE contractors to use when migrating themes to new engine, harnessing python-needle.
  • Swagger/openapi based testing scaffold harnessing docstring documentation to test flask routes. Fully integrated with VCR and mocking strategies.
  • Circleci and gitlab CI/CD pipeline and job configurations through yaml files. Including bash scripts for process init.
  • Dockerfile optimization and staging for better performance in pipelines.

Testing Initiatives

  • Reducing cost and developer time by optimization and parallelization of pytest unit and integration suite.
  • Refactoring tests to run in parallel
  • Investigating test time regressions for performance gains in production code
  • Implementing x-dist in a long-lived mono-repo with 10k+ tests
  • Identifying anti-patterns and educating developers

Other company wide efforts I was heavily involved with:

  • Migrated python 2.7 to python 3.7, regression testing in increments to maintain backward compatibility.
  • Creating and maintaining documentation on areas tested in confluence.



Lucidworks, Oct 2016 – Jul 2019 | Sr. Software Engineer (test)


As part of the Quality Engineering team at Lucidworks, I am responsible for all testing-related engineering: test automation frameworks, automated test development, performance benchmarking, dataset generation, etc. My team works closely with Engineering and Product Management to understand product features and ensure meaningful test coverage.

Specific areas:

  • Support and write test frameworks in pytest
    • Write tests in python | Create fixtures
  • Docker
    • Create images
    • Harness docker-compose for dependency mapping
    • Create immutable images for testing features, embedding prerequisites
  • Browser-testing
    • browsertester – Our in-house Selenium/protractor stack for testing angular based UIs
    • Built with Docker-compose
  • Cloud
    • Build AWS EC2 AMIs through Packer
    • Terraform – TFE (via scripts in Jenkins) | CLI (testing)
    • Amazon
      • AWS ec2 through terraform [ Windows 2016 | Amazon Linux | Ubuntu ]
      • S3 archiving of job data
      • Route53 internal DNS zones for scale testing
  • Scripting
    • Python
      • Automating repetitive tasks like upgrade orchestration for multiple servers
      • Reporting from Jira
      • Jenkins notifications to slack on test failures per team
    • OS Scripting [ Bash | Powershell ]
      • Using native scripting to bootstrap servers
  • Mentoring teammates and developers
  • Security testing
    • OWASP ZAP
  • Create proposals for improvements to test suites [ swagger/OpenAPI | micro-service Integration testing | sonarqube ]
  • Static code analysis
    • Sonarqube [Administration | integration with microservices | Sonarscanner]
  • Manual testing Java/Angular based project
    • Where automation was not feasible or complete I would participate in taking tasks to manually test.
    • Testing scenarios include Regression | Exploratory | Sanity | Smoke |acceptance
  • Polyglot code review
    • Including Java | Python | Node | Angular | Bash
  • CI/CD – Jenkins
    • Wrote Pipeline scripts in groovy
    • Dockerized jobs for testing locally
    • Configured Archiving and retention
    • Debugged failures
    • Git multi-branch pipeline jobs
    • Source controlled configs/job definitions



Mentor Graphics, March 2014 – Oct 2016 | Full Stack Software Developer


Fundamental mastery of the AWS cloud offerings – including but not limited to:

  • VPC (Virtual Private Cloud)
  • EC2 (amazon linux/centos),
  • ELB load-balancing
  • SQS messaging
  • Auto scaling architectures (through CloudFormation),
  • EBS under high I/O requirements,
  • CloudWatch custom monitoring metrics/analysis/alarms via
  • SimpleDB and DynamoDB usage (database and nosql storage)
  • Wide use of the AWS API and different toolkits for exercising it (e.g. boto, nodejs aws sdk) including fully automated stack deployments from scratch of new infrastructure, leveraging TeamCity.
  • Creating micro services using Docker Containers,
    • leveraging ECR (EC2 Container Registry) and ECS (EC2 Container Services) to deploy.
  • Employing server-less code execution via LAMBDA in both nodejs and Python.

Documentation as code – Using the Swagger/OpenAPI standard to create contracts for APIs/micro services with entity definitions in json schemas that can be validated for input and output. Importing packages such as swagger-express-middleware (nodejs) and Connexion (python) to ensure that the contract is binding.

Test Driven Development – I am a firm believer in TDD. Once the Swagger is completed unit tests and functional tests should be written with mock data or packages to ensure that any code changes do not break the contract.

Implemented software deployment that requires unit tests to pass before deploy, and A/B – Blue/Green – dark/light methodolgy

On call – scheduled on call through PagerDuty. Alerts are generated by Cloudwatch metrics and Papertrail log aggregation analysis rules.

Virtualization using vmware via vSphere for non-cloud servers.

API Interactions – aggregated data from disparate sources using Rest, SOAP, WSDL, xsd specifications.

Linux system administration of:

  • Centos6
  • OpenLDAP
  • Solr & Lucidworks Fusion
  • Zookeeper
  • Micro-service APIs

Cloud Networking administration including VPC, Subnets, and DNS (route 53 /Bind)

Backup and disaster recovery though custom scripting for EC2 to S3 bucket (with versioning).



Build.com, Sept 2012 – March 2014 | Software Developer


As part of a team of developers that are responsible for the backlog of bugs in our Coldfusion & Java codebase, I am charged with improving the experience of all users of our software. Using tools such as IntelliJ and RazorSQL, along with Sublime I troubleshoot the interactions of our Java Spring based web services API, Mybatis, MSSQL, and Coldfusion templates.

Magento Project:

  • Written clean, modular code and properly designed object oriented code
  • Tracing procedural and object oriented code to track and fix bugs
  • Designing highly scalable DB queries on MySQL
  • Harnessed Magento application framework to create financial reports, querying the DB
  • Assisted, troubleshot and provided assistance to testers and support personnel as needed to determine system problems
  • Meet all quality and specification requirements.
  • Work with stakeholders to gather sub project requirements
  • Work with stakeholders to assess needs when Jira tickets are submitted, when incomplete or need followup.
  • Created virtual machines using virtualBox to test.



Next Step Solutions, 2007 – Present | Owner


Design and development of websites and web-based applications, responsible for marketing and selling services, managing all client relationships, and controlling budgets.

  • Host and maintain 25+ websites for clients.
  • Customization of existing wordpress plugins and framework, Debugging and Testing.
  • Website optimization through query optimization and load management techniques to improve user experience.
  • Custom database design, normalizing table structures by hand and optimizations.
  • Create custom website templates for customer using table-less design principles
  • Optimize page using css and javascript/jquery to load styles dynamically.
  • Train client on website usage and provide documentation.
  • L.A.M.P. server implementation for testing and production.
  • Site integration with social media (Facebook, Twitter, etc ), and “Local” Sites (Google Local/Places, Yahoo Local)
  • Bitbucket git repos for clients to maintain change logs and ticketing for support



Network Innovation, Sept 2005 – August 2007 | Network Engineer


As part of a team of network engineers, I provided network services and troubleshooting for clients of varying sizes, both on-site and remotely. Weekly team meetings ensured that all members were up to speed with all clients.

  • Installation and setup of Windows Servers, including SBS 2003
  • Troubleshooting server-based network issues
  • Installation of switches, routers and networking hardware including Cisco Systems, and Alcatel
  • Remote server management and troubleshooting
  • Linux server troubleshooting
  • VPN setup and configuration including Cisco PIX 501
  • User logon/off scripting in VBScript
  • Active Directory Group Policy Management
  • Programming duties as assigned (PHP, VBScripting, Shell Scripting)
  • Installation and setup of Windows Servers, including SBS 2003
  • Troubleshooting server-based network issues
  • Remote server management and troubleshooting
  • Linux server troubleshooting
  • User logon/off scripting in VBScript
  • Apple, PC and Linux systems networking and integration.

Education

CSU, Chico | 2001-2005 B.S. Computer Information Systems

Social

bit.ly/BradHays
bradlyhays
bitbucket.org/bjhays/
github.com/bradjhays/

Integrity & Ethics

Eagle Scout


Experience by Technology


Expertise rated on a scale of 1-10 ( 10 being expert).

Area Experience Expertise Summary
Python 5 years 8 Python 2.7 & 3
nodeJS 2 years 2 ES6 format. I have not actively coded this language in several years.
PHP 8 years 5 I started with v4. I have not actively coded this language in several years.
MySQL 10 years 7 I have used MySQL databases as a backend for all dynamic websites that I have built. I am proficient in writing queries and optimizing them. I am also proficient with writing and normalizing table structure and using views to preserve data structures.
XML 7 years 8 I primarily use XML for importing/exporting information from windows servers. I have used XML for other exporting/importing like email addresses from Google, etc. As anajax data exchange I prefer json over XML, but am confident using XML as well.
Apache 9 years 10 I have installed many instances of a L.A.M.P./W.A.M.P stack. I have experience configuring virtual hosts, enabling and disabling modules, and setting directory permissions. I have edited the config file by hand to change directory indexes and their priorities. I am very confident with Apache and prefer it over IIS.
Javascript development 7 years 6 Although Javascript is not my preferred language due to its often difficult troubleshooting, I have used it in all pages with dynamically loaded content.
jQuery development 3+ years 5 I love jQuery! I have used it in the majority of the websites that I have done FE work. The scalability and cross browser support make it my preferred library. I enjoy the power of selecting DOM elements in groups rather than individually with plain Javascript.
CSS or CSS3 7 years 8 I am experienced using CSS to make clean coded websites reusing class statements throughout the HTML. I am proficient with the issues that Internet Explorer presents with its lack of CSS support and correcting the display to match the other compliant browsers.

Comments are closed.