How Google Tests Software key points

I have pre-ordered the How Google Tests Software hoping that it would be as good as a read as How We Test Software at Microsoft. I have completed reading in a week and I didn’t see any common content. Both books talk about different things and How We Test Software at Microsoft is still my favorite. While How We Test Software at Microsoft identifies various formal techniques or approaches for testing, the How Google Tests Software is more about the Google perspective of quality assurance, how it is different and why they approached it that way. It has lots of interviews with the Google’s TD (Test Director), TM (Test Manager), TE’s (Test Engineer), SET’s (Software Engineer in Test) and SWE’s (Software Engineer). Anyways below are some of the key take aways

  1. Quality is everyone’s responsibility.
  2. Hiring practices should change so that resources with programming skills are hired.
  3. Automate wherever possible so that most of the resource time can be spent testing usability etc.
  4. Exploratory testing and crowd sourcing.
  5. Software can never be bug free so release often to limited user base for better feedback.
  6. Author tests in the language the application is written.
  7. Do not enforce enterprise wide standards as that would limit innovation. (But I believe this is only true for companies whose hiring practices makes sure that skilled resources are hired).
  8. Opportunity given to resources to work 20% of their time on the projects they are passionate about.
  9. Open rotation policy. Resource is free to move to any project within Google after 18 months.
  10. New hires encouraged to start with testing.
  11. And of course continuous integration.

Programmer Fun

enter image description here

Old India Photos - Jhansi Fort in 1857

My Country, My People (Jhansi Fort in 1857)

Tagged ,

JEE and Class loaders

This is my first attempt on technology blogging and I start with my favorite – the class loader. There is a lot of information out there on J2SE class loaders, their delegation model etc but there is very limited information on the JEE class loader delegation models like PARENT_LAST and PARENT_FRIST that you typically see in the application servers. Are these standardized by spec?

After going through the JEE spec and few articles on internet (It has been a while since I did this research and couldn’t remember the article names), below is the summarized answer.

EAR

The spec DOES NOT define or mandate how the class loaders should work within an EAR. It however defines that

  • There SHOULD be a per thread context class loader for runtime loading of classes
  • There MIGHT be a hierarchical class loading mechanism for resolving classes (app server vendors are free to implement whichever way they choose to)
  • The top-level class loader (WAR/EAR) MAY delegate to the low-level class loaders (like Bootstrap, extension etc). This is in compliance with J2SE class loader delegation model (PARENT_FIRST in WAS)

WAR

  • Servlet specification defines and mandates the support of a PARENT_LAST (i.e. WAR/web-inf/classes and WAR/web-inf/lib take precedence over the libraries that come with the app server) class loading model. But this is just for WAR modules.
  • The Servlet spec diverges from the standard J2SE delegation model of PARENT_FIRST in this case.

App Server specific details

Interestingly, though, it appears most major app servers support some mechanism of turning off delegation to isolate the application from the app server if necessary (because of conflicts or otherwise):

  • WebSphere – “parent-last”
  • GlassFish – <class-loader delegate="false" /> in sun-web.xml
  • JBoss – java2ParentDelegation=false
  • Geronimo – <java2-delgation-model>false</java2-delegation-model>
  • WebLogic – ???

Reference

  1. Spec: Servlet 2.3, Section: 9.7.2 Web Application Classloader
  2. Spec: JEE 5, Section: EE.6.2.4.7 Context Class Loader

Programmer Fun

  • Google for “recursion” or click hereDid you mean: recursion
  • Google for “ascii art” or click here. Check their logo.

Google is witty that way 😉

My Country, My People

My Country, My People

Tagged , ,