The public execution of a software tester

 I usually write about proper testing issues. This time I decided to write about something that actually happened to me.

A few years ago the company I worked for acquired a company of the same business - toolbars.
To check the new product efficiency, we redirected its statistics to our DB, to a table similar to the one we used.
The idea was that each search the user performs is registered, including the source: was the search done through the toolbar search box, through the browser's address bar, new tab, etc.
The flow was that when you performed a search, the toolbar added the source to the URL. For example, you searched for the word "dog" from the new tab, the search was performed and you would see the results just like in Google search, and the URL also had a param like source=NewTab (or source=AddressBar in case the search was via the address bar, etc.).

I was asked by the server-side programming team leader to insert into the browser's address bar a set of URLs with different sources to verify it is updating the DB correctly.

I prepared an Excel sheet with relevant test cases (links) and started the tests: by copying the prepared URLs with different values in the source parameter.

Right away I saw the new table is not an exact copy of the regular table - it missed a few columns. I asked the programmer if this was the design (nothing was written) and if so did his team leader approved. He confirmed it is approved.

I finished the tests, all passed and so it was deployed to the production.

But then, the stats were very strange: all searches indicated they were performed from the toolbar search box, which didn't make sense. Also, some data was missing (users were not affected by all of this).

After analysis, we found the reason:

1. the source was incorrect not because the URL didn't update the DB correctly, but because the 3rd party product had a bug that caused it - whatever the source was, it was indicated that the search was done from the toolbar search box.

2. The data that was missing, was due to the fact that the new table was missing some columns.

Our CEO was very pissed off, and he directed his anger towards one party and one party alone: the tester, that is... me. Moreover, we had a company meeting on the very same day, and the CEO decided to share his frustration and said that there was something wrong with the QA and changes must be made.

To my surprise, neither the programmer nor his team leader stood up as I expected. I expected the team leader to say that he gave me the mission that the mission didn't include 3rd party tests, and that the missing columns were his idea (he wanted to save traffic and storage). I expected that the programmer would say that I did notice the missing columns but this was the mission he got.

From my POV, I did nothing wrong. I performed the mission, what I determined was working actually worked, and I noticed the table change. Also, it is not trivial that testing should also test the 3rd party.

I felt hurt. I invested a lot in this place, and I felt I contributed significantly. I thought I was mistreated and also felt angry at the CEO and the team leader.

But, what was I to do? This is what I did, and I think it was the right move.
Saying something like talking to my manager (my direct manager was not at the office that day) was an easy way out and a legit one, and would take the pressure off. But I was seen as a test expert, someone with an opinion, someone to be taken seriously. Saying that would belittle me. So this was off the table.
The second way was to start answering the CEO in the meeting and blame (what I see as) the one responsible for the failure.
But that would only start an argument in the meeting, and worse: I would look like I am also participating in the blame game.

So all I said was that in many cases the mistake is not only in one party and if we want to make this situation somewhat positive, a real lesson-learned process needs to be done (which never happens).

After a while, two people who were passive attendees in the meeting talked to me about it. One that just started working in the company at the time said that she was appalled by the way the CEO crucified me in front of everyone. Even if I was mistaken, it shouldn't be public. The second one said he understood what I was going through, and highly appreciated the fact that I didn't start an argument.

Thinking about it, I did learn something: always challenge the assumptions! (and trust no one).

What do you think? Was the missed bug my fault? Did I behave correctly?