Principal Investigator in Software Engineering2017 - PRESENTThe University of British Columbia
Technologies: Software Engineering, Testing, University Teaching, R&D
- Founded a research lab called Software Analysis and Testing (SALT) to investigate and implement new techniques for improving software quality.
- Designed and delivered undergraduate courses on software testing and analysis covering unit testing, mutation testing, web and mobile app testing, code coverage, regression testing, static and dynamic analysis, fault localization, and program repair.
- Taught graduate courses on software testing and verification covering state-of-the-art tools and techniques for analyzing large-scale software systems such as control-flow and data-flow analysis, taint analysis, and symbolic execution.
- Supervised Ph.D. and MSc graduate students working on software analysis topics such as automated test generation, web testing, API testing, automated program repair.
Senior QA and Test Automation Consultant2022 - 2022Mobile Security Management Company
Technologies: Appium, Robot Framework, Pytest, XCUITest, UI Testing, Mobile App Testing, Android, iOS, WebDriver, Android Studio, Xcode, Python, Jenkins
- Developed automated tests for various native mobile apps in both Android and iOS.
- Implemented tests in Appium and Robot Framework for cross-platform testing of mobile apps.
- Set up continuous integration (CI) through Jenkins for automated test execution.
CEO2015 - 2020Testcue
Technologies: QA Leadership, Management, Consulting, QA Automation, Mobile App Testing, Web App Testing, Quality Assurance (QA), Automation
- Established connections with industrial software companies for providing QA automation and testing services.
- Participated in consulting projects, offered automated testing services to newly developed mobile and web apps.
- Led the development of an automated online monitoring system for a large enterprise application to detect regression bugs.
- Managed the development of a framework for testing canvas applications.
- Liaised with industrial collaborators and clients for securing R&D funding. Made budgetary plans and objectives and adjustments to project constraints based on financial analysis.
Software Engineering Consultant2017 - 2018
Technologies: Java, Blaze, JUnit, Google MapReduce, Deep Neural Networks, Compilers, Static Analysis, Python, TensorFlow, Test Automation
- Participated in the design and implementation of an ML-based tool for automatically suggesting fixes for Java compilation errors using neural machine translation. The tool learns from errors developers make and the way they fix the errors.
- Created a scalable Java type refactoring tool for ultra-large-scale mono repositories through a MapReduce design that made multiple passes over the code to collect type information and perform in-code refactoring.
- Added bug patterns for the Error Prone framework, an open-source compile-time static bug checker.
Software Engineering Consultant2010 - 2010Fujistu Laboratories of America
- Developed a testing framework for automatically creating a navigational model of a given enterprise web application.
- Devised an automated technique for cross-platform testing to detect inconsistencies and errors in the functional behavior of web applications across different browsers.
- Designed and implemented a guided crawling algorithm to complement an automated tool with user input.
Lead Senior Software Engineer2002 - 2010West
Technologies: Leadership, Agile Project Management, Software Architecture, QA Leadership
- Developed a software system for generating a ventilation and heating strategy based on input from weather forecasts, measurements of temperature and radiation, and manual settings for regulating enterprise greenhouses.
- Designed and was liable for implementing substantial parts of a large software system for the energy sector, including meeting with the client to elicit and document the desired requirements and designing the initial software architecture.
- Tested, designed, and developed a web portal for a client based on REST APIs. The testing activities consisted of unit testing with JUnit, regression testing, and integration testing.
- Acted as the technical lead and coordinator of a team of software developers.