14 July 2008
Interview with John Thomas, Software Test Engineer at Google.
This meeting included Shuly Cooper, who is preparing a new course in software quality engineering for Foothill College.
Q: What skills do you look for in a new hire?
A: Software test engineers must have all the same skills as software engineers, including:
- knowledge of algorithms
- ability to design well
- ability to handle structured chaos
- coding
- teamwork
- comfortable with loosely defined product requirements
On top of those typical software engineering skills, test engineers must also be able to:
- hack software, break it
- understand the boundaries of software
- handle internationalization and security issues
- communicate bugs to developers in a non-threatening way
Q: What tools do you use to test software?
A: We make use of tools we developed at Google, but we also use:
- GWT test case
- JUNIT
- Selenium
- Eggplant
- JwebTester
- Perforce for internal software and scripts on top of Perforce
- Subversion when a project goes open source
Q: What programming languages are used at Google?
A: Java, C++, and Python
Q: What is the software development process like at Google?
A:
- Requirements are written and reviewed extensively
- Design is written (in English) and reviewed continuously. The design is sent to peers for review before it is halfway finished.
- Pairs programming is practiced
- Code is reviewed regularly, with all feedback from reviewers incorporated. All software engineers spend a lot of their time reviewing others' code.
- New code is released often, between once a week and once a month.
Q: How do you know when you are finished with a product?
A: Tests have covered sufficiently:
- code
- features
- internationalization
- security
- stress
- load
- performance
Q: What are some best practices that you follow at Google?
A:
- In object oriented design, composition is better then inheritance.
- Customer support shows test engineers how to prioritize features.
- We try to do the testing with the same tools and at the same time as development.
- Engineers are encouraged to contribute "across the board", meaning improving common processes in order to help large numbers of Googlers be more productive.
Q: Can you give us references on software test engineering?
A:
- "Effective Java" book
- "Design Patterns" book
- "Introduction to Software Testing" book by Copeland
- GTAC conference
- The Google Testing Blog at
http://googletesting.blogspot.com/
0 Comments:
Post a Comment
<< Home