André Santo

Hong · Kong ·

I am an experienced (10+ years) software QA and Test Lead for both automation and manual QA teams of different sizes (from 5 to 30 members) and with professional software development experience in multiple programming languages: Python, Ruby (+Rails), JavaScript/TypeScript and others. Have tested and lead hundreds of successful new features, designed and implemented several QA and non-QA solutions throughout the years. References will be provided upon request.


Experience

QA Engineer

January 2021 - Present
Network Guard (Hong Kong)
  • Tested the product, for both mobile and web, from a functional and non-functional perspectives, mostly via automation.

  • Contributed with numerous automation scripts for unit (Ruby), integration and end-to-end testing (TypeScript)

  • Fixed and improved the functionality of existing test APIs

  • One of the top contributors to the development of the Playwright based automation framework used for web end-to-end testing (330+ commits, 84000+ additions). Some contributions:
    • Account creation utilities
    • Google Tag Manager utilities
    • Credit Card generation utilities
    • Proposed and created an Error class to automatically pick up HTTP errors and any browser console errors or warnings
    • Proposed and moved the framework from Javascript to Typescript and Playwright Test
    • Introduced scripts to test AWS WAF rules and several other previously uncovered areas
    • Introduced test parallel execution

  • Created and developed an entire solution to test the integration of one of the microservices (RSpec and Localstack)

  • Developed integration for the Android application (Espresso and Kotlin). Including some basic framework utilities (e.g. account creation)

  • Proposed and/or implemented several process improvements:
    • Daily GitHub Pull Request Reminders
    • Helped improve the UX by gathering proof of several less than ideal product experiences
    • Actively collaborated on the creation of test plans and test approaches for several releases

  • Multiple contributions to the QA department:
    • Suggested two projects for a QA hackathon and lead one of the projects
    • Contributed with several articles to the QA newsletter, sent monthly to the entire company
    • Lead the QA newsletter release on one occasion

  • Worked closely with developers to advocate for better unit tests and test plans for all of their tickets. Proactively looked into their tickets and suggested improvements to the test approach.

QA for PayPal

August 2011 - January 2021
PayPal through Symbio (Beijing and San Jose, CA)
  • Tested the product, for both mobile and web, from a functional, L10n and i18n perspectives, both manually and automatically.

  • Lead (and occasionally tested) hundreds of new features QA (Manually and/or through Automation), including reporting and communicating with several cross domain teams. Created test cases and test scenarios which frequently became automation scripts.

  • Created CIs to execute critical test scripts on a daily basis (using Jenkins and Bash/Python scripts) against daily builds, sending reports via e-mail and uploading the results to a Dashboard for the consumption of anyone of interest.

  • Personal contributions to the PayPal mobile automation framework as well as the development of several test scripts (mobile and web). For example:
    • Create dummy contacts (Android)
    • Detect the XCode version (iOS)
    • Detect the Android version and change the device locale accordingly (Android)
    • Created a wrapper script to launch any given script for any country/locale with minimal framework changes using multiple parallel simulators (iOS)
    • Created a tool to parse xcresult files and extract screenshots and other execution information (iOS)

  • Created Bash and Python scripts to automate the deployment and setup of the QA test environment

  • Designed and oversaw the implementation of multiple automation framework enhancements (web and mobile), e.g.: API calls to bypass repetitive flows not under testing (login, etc.)

  • Multiple contributions to an internal test results dashboard. For example:
    • A test report parser (in Python)
    • A front-end wizard to report tickets directly in JIRA, which would automatically include all the information and on the fly screenshot editing (Rails, Bootstrap, jQuery and Fabric.js)
    • Store important test information, such as: test accounts, debug ids, URL, etc.
    • Batch and single screenshot upload (Rails and JS)
    • Statistics portal: list of projects under testing or completed, automation scripts created, scripts executed, bug info (list of bugs, priority, components affected), etc. (Rails, JS and ApexCharts)
    • Generate screenshots on the fly with potential issues highlighted on the screenshots (Rails and Fabric.JS)

  • Created an API to manage the test report dashboard. Allowing to programmatically: launch automation runs, create new projects, etc. (Rails)

  • Created an API that would receive the information of each page visited by automation and programmatically look for potential issues (unlocalization, time/date/currency formats, etc.) and flag them (node.js and express)

  • Increased the team efficiency by developing tools or processes that partially or completely removed manual effort or increased efficiency. For example:
    • A tool to monitor JIRA tickets and would automatically detect when a ticket would be ready for QA, moving them when so and providing a QA environment for verification.
    • A Slack bot to carry out tedious and repetitive tasks, such as: track PRs that haven't seen any updates in more than 3 working days, launch automation scripts, etc.
    • Helped prove (through proof of concepts and pilots) that, under certain circumstances, automation is beneficial when covering new features as well. As a result, we went from 0 new features covered through automation to almost all features covered by automation with an ROI of around 80%.

  • Created and helped implement technical solutions:
    • Designed a solution to make two existing native test automation mobile frameworks more Globalization testing friendly (support for multiple countries, automate QA checkpoints, etc.) with minimal framework or script changes.
    • Designed and created a POC for a string capture database that would (all automatically): modify the existing template files that contain the strings and inject unique identifiers for each string, build, deploy and execute scripts to capture the strings on each page, send the test results to a report parser that would store all the results, created a search engine to search strings for each language, page, script, product, etc. with a sample screenshot of the page where the string was captured. All this to facilitate in context translation.

  • A total of 1 year in San Jose, CA to act as the main point of contact between Beijing teams and San Jose teams

Systems Administrator

2003 - 2007
Freelance
  • Assembling, configuring and maintaining computers, computer networks and network gateways/firewalls/LAN servers

  • Setting up and troubleshooting LAMP/LNMP/LLMP stacks

  • Linux and OpenBSD System administration

  • Generic IT support for different companies and private clients

Education

Open University, Portugal

Master’s Degree
Informatics Engineering and Web Technology
September 2019 - September 2022

Open University, Portugal

Postgraduate Degree
Informatics Engineering and Web Technology
September 2019 - July 2021

Open University, Portugal

Bachelor of Science
Computer Science, Minor in Computer Science Complements
August 2017 - 2019 (Unfinished: moved to the Master's Degree)

Polytechnic Institute of Leiria, Portugal

Bachelor's Degree
Translation (Portuguese-Chinese-Portuguese)

GPA: 19 out of 20

September 2007 - July 2011

Skills

Programming Languages, Tools & Technologies
  • Playwright

For those not familiar with the above-mentioned icons: playwright, selenium, appium, python, javascript, typescript, node.js, express, jquery, bootstrap, ruby, ruby on rails, npm, git, (my)sql, c++, linux, openbsd, bash, nginx

Workflow
  • Automation advocate: constantly looking into reducing manual efforts and automate not only testing but work processes as well
  • Extensive experience with UI testing for both mobile and web products, particularly in the web payments industry
  • QA Lead: a wide experience leading multiple QA projects successfully
  • Cross browser and platform testing & debugging
  • Experienced working with cross-functional teams
  • Agile development & scrum. Also experienced working in a waterfall software development model

Natural Languages
  • Portuguese
  • English
  • Spanish
  • Chinese

Personal Projects

Some personal projects that I've developed during my free time and/or as academic assignments. Please note that some of the demos are self-hosted and might not be available at all times.

  • CarrisUI: an interface for Carris' API. Carris is a transportation company based out of Lisbon, Portugal. CarrisUI allows to plan how to get from point A to point B in Lisbon using public transportation, view the realtime position of a bus, list of buses arriving at a certain stop along with the ETA, etc. Developed using Node.js and Express.
    GitHub
    Demo

  • RegMatri: A simple POC of a platform to register portuguese car plates, manually or automatically through character recognition. Includes a simple authentication mechanism (only logged in users are allowed to register plates). Developed using Node.js and Express.
    GitHub
    Demo

  • Selenium Demo: A (very) small and simple example of how to use Selenium to test a website (GoodNotes). Includes some samples of what are considered good practices (e.g. Page Object). Developed using Python and Selenium.
    GitHub

  • RTLights: A sample C++ project to implement some basic OOP concepts as part of an academic assignment. It's a simple traffic (A) and rail load (B) lighting system. Each system includes 3 lights (green, yellow and red). Lights A when initialized are in an OFF state and includes a status panel that indicates which color is currently on (or if it's off) as well as how long is left until the light changes to another color. Lights B are similar to A, but are used to control the flow of a railroad, it has a sound alarm (which is a visual alarm only for this project) whenever the train is less than 5 km away from the crossing. Includes a panel that informs how far the train is from the crossing, the speed it is currently traveling and how long until it reaches the crossing.
    GitHub
    Demo

  • RTLights: A sample C++ project to implement some basic OOP concepts as part of an academic assignment. It's intended to be a simple veterinary management system, where you can create appointments, list patient information, view patient history, etc. using some basic OOP concepts.
    GitHub
    Demo

Awards & Certifications

  • BBST Bug Advocacy: Effective Bug Investigation and Reporting
  • ISTQB - BCS Certified Tester Foundation Level
  • Merit scholarship for academic excellence (2008) - Polytechnic Institute of Leiria, Portugal
  • Microsoft Office Specialist (MOS) - Office 2003
  • HackerRank - Python (Basic) - Click here to view the certificate.
  • HackerRank - JavaScript (Basic) - Click here to view the certificate.
  • HackerRank Badges: Python (Gold), 10 days of JS (Gold), SQL (Silver), Problem Solving (Silver) - Click here to view my profile.