Chris Tan's CPT Project 2019

From CSclasswiki
Jump to: navigation, search

Program Introduction

In the summer of 2019, I worked for Google as an engineering practicum intern, which is a program targeting first- and second-year college students who are majoring in Computer Science and willing to start a career in tech industries. This is a 12-week, full-time internship from May to August or June to September 2020, during which the interns will work with a podmate and two mentors on a project.

I worked in the Google Cambridge office, for the Google Flights Engineering Productivity team. The concept of "engineering productivity" is first brought out by Google, which is a data-driven engineering discipline focused on optimizing the engineering process so that Google can deliver amazing experiences to the users, faster. More specifically, the main goals are:

  • To provide an easily maintainable and extensible framework that enables all teams to add and remove tests.
  • To enable the automatic and early detection of failures within the software under development.
  • To prevent the source of detected failures from moving any further downstream.
  • To accommodates all the needs without impacting the engineers’ time.



Front-end tests are very expensive to develop and maintain. One common solution to this problem is to use record-playback tools to drastically lower the cost of authoring tests. This solution usually fails, however, due to the maintenance costs of the poor code that is produced by recording UI interactions and generating source code. Test case UI interactions must be recorded one at a time, and each produces its own unique code, much of which is duplicated many times by other tests. Small changes to a UI can result in large numbers of tests needing to be completely rebuilt.

Project Description

To address the problem mentioned above, my project involves two features:

  • A web application for viewing, augmenting, and repairing the tree of test cases.
  • Execution of a test case tree as a Web Test using existing UI automation tooling.

Technologies and Languages Used

  • Frontend: Angular Typescript
  • Backend: Java
  • And more: Protocol Buffers, RPC(remote procedure call), Junit, Internal tools


This is the first internship of mine and represents the very start of my computer science career. I enjoyed working on the project and hanging out with the team. Since I worked for the backend using Java, the classes I took -- 212 Data Structure in Smith and 311 Algorithm in UMass -- helped me a lot in completing the project. However, there are more things that I learned that the school does not teach, like writing clean and concise code, integrating code within the team, learning and using internal API from other teams, using corrency control to achieve the project's expectation, and to communicate with my podmate and mentors using technical wordings more accurately.