Course code: CIT-1
  • Years with company: 2.5
  • Years programming: 10
  • Primary programming language: C and C++
  • Other programming languages: Pyhton (novice), Shell scripting
  • Unit test harnesses: gtest
  • Something else: - Have programmed for embedded, driver and middleware components for Android/Linux, Symbian and Windows platform primarily in C and C++. - Have written some unit tests using gtest along with custom mocks/gmock, component tests and system tests. - Like to improve testing skills to find better bugs and vulnerabilities
  • Test practice now: - Unit test using gtest (most of new code, some legacy) - Component tests e.g. client/server, COM client/component - Automated system tests using proprietary automation framework. Mostly regression, updated when a new feature changes some system aspect - Manual testing. Uncover more feature specific end-to-end test - Performance and stress testing using industry standard tests for enterprise e.g. LoginVSI for single server scalability
  • Target system: Windows on X86
  • Dev tools: Microsoft visual studio (MSVC++), Trace tools (based on windows event trace logging system), build scripts using power shell, Windows debugger(WinDbg), Wireshark, git
  • Build time: 1-5 minutes
  • Coding standard: Mostly uses standard C/C++ coding conventions
  • Function too long: - Function seems to do much more than stated purpose - Is too big (lines of code) - Has too much nesting (cyclomatic complexity)
  • Code reviews: Code reviews are done using review tools (Atlassian bitbucket), requiring at least two human approvals one of which is generally required from SME. An additional bot "reviews" for build success and automated smoke/sanity tests's success
  • Code time: 35
  • Test time: 30
  • Debug time: 35
  • Favorite thing about dev: - Great to design systems - Great to implement systems - Satisfying to make code do expected - Learn new technologies and ways - Understand systems how they work and solve issues (sort of puzzle solving) - Delivering value to customers
  • Least favorite thing about dev: - Legacy code and maintenance - When new to a complex system in place it is difficult to balance between requirements and efficiency and understand big picture (however it feels good to overcome these and understand the system) - Effort estimation
  • Tdd knowledge: Very little - Name, and that it is different approach where tests are developed early based on requirement unlike traditional approach. These tests are used as sort of specification to ensure code meets the requirement.
  • Why are you attending: - Want to see if there are better and more efficient ways of doing tests - TDD sounds fascinating and curious how we can develop tests so early