A software Test Engineer's overtime Experience _ Classic net Pick

Source: Internet
Author: User
Bachelor of Computer, master of Business Administration, sea traffic University. Currently in the Intel China Software Laboratory, engaged in embedded Linux related development work. PMT is one of the founders of the community, a nonprofit group of software industry professionals dedicated to the research and practice of software technology and management.
Writing this account of the weekend overtime experience, not because of boredom. Only the wife wants me to confess, a "smelly" (this word has very little opportunity to enjoy) to do software, always come back so late, exactly what to do outside. If one day you are asked to write such a material, you can refer to it, in addition to this role, perhaps, different people will see different things from it.
(Here Delete the 500 words of loyalty to wife)

Background:

Our software products need to be in a, B, c three hardware platform (in theory, the impact of our software is not significant) on the work, has been successful in a work earlier, but there are some problems in B, C, overtime day is a deadline, need to ensure that in B, C can also work. This product consists of x, Y, z three parts, respectively, by three team, the basic relationship is: X and user dealings, X call Y,y is data into the data out, Y call z,z and hardware to deal with.
Of these, x and Y are all newly written programs, and earlier, more bug,y were found on X and almost no problems were found. Z's code in the previous product, has been relatively stable. Because of the project time pressure, these three parts do not have time to do the separate test, but the programmer simply measured their own code, it is necessary to integrate and test (this is my specific work). In addition to the three team leader left, X programmers are left behind; y leader check the team members of the work, think that there is no problem to put them home, Z leader most "innocent", watched all the men after work, they have to stay.

Are the blame of the hands:

In the beginning to work overtime is because X's job is not completed, so everyone on the side, while the "urge" (X's leader claimed to be 12 to complete, really crow mouth), while busy each (I am on the internet to watch the news). In fact, more than X to 7 is done, but a test found a significant memory access problem. So x is debugging, because X is already "notorious" for memory access issues, so everyone (at least I) believes it was a similar problem before, or that the previous revisions were not thorough.
But soon, X found the problem: Y passed an empty pointer to X, and soon, Y also confirmed X's argument. Y, why did the programmer not find out when they tested themselves? In fact, the Programmer's Unit test program checks for null pointers and prints blank lines if empty. As a result, X and Y begin to "kick" and each other with a null pointer to the error-handling code; But after a while, new questions arise, Y should not have null pointers, so either Y code has a problem, or Y to prove yourself right.

It's hard to find a bug:


So Y's leader also joined the debugging team, because Y's code has a detailed log, so soon it was positioned in the code of one of his group member's. Unfortunately, the development machine for Y Learder down at the critical moment. Fortunately, we have initially implemented software configuration management, Y leader quickly on someone else's machine to rebuild the debugging environment.
Y made some changes (in fact, he changed the code is irrelevant), after my test, I found still not. In my professional sense, I think X also has a problem (later known as Fluke). But X would rather go to Sina to see "some scenic spots in Beijing nude swimming" also refused to check their own code. Y after the hard debugging (in fact most of the time I think is to understand these do not belong to his code), found that because a data has not been obtained caused the appearance of the null pointer, but logically, Z should always send this data to Y. But the "accusations" of Y to Z were quickly proved ineffective, as Z leader "showed" that the data she had obtained from the hardware was good.
So, Z leader continue to eat biscuits, Y leader continue to debug, X dry people continue to "study" the management of scenic spots in China. And I finally bored to the extreme, began to "Friendship sponsorship", check the question code y. Code is rarely commented, written very casually, and even indented the format of the forest chaos, but fortunately, the code is not long, logic is not complex. I focused on checking the memory operation, but I didn't find the problem.
Is I wonder the same piece of code, why other data can be obtained, but this data is not available, the sound of y learder. It sounded like a desperate scream, but I'm sure it was a hail of real problems (similar to screams, after all, after the physical and mental exhaustion). Sure enough, he found that the name of the data that was not taken was wrong, it should be status, but wrote state. (Y when you want data to Z, you pass the name of a data to Z, and then Z gets it from the hardware and returns it to Y.) The name of the data is defined by Z. So, how can this low-level error occur? Originally, the wrong code y of the programmer from another copy, the name of the other data items are the same, it happens that the name of the data is different.

How much code can be redone:

Y leader busy to change the C file and H file, because the name of this data item appears in many places, so Y leader change very carefully, also very hard; I think he must have been scolding his team member, why not define a constant or macro. When Y leader changed the code, I thought, it was like Z was deliberately creating traps: These two sets of data are similar, and the names of other data items are the same, why this data, one called state, the other is called status, is really a real TMD.
Y leader finally confirmed that all the changes were corrected by the state. But using his team member's unit test program to find out that there are still old problems. You can imagine how we felt at the time, like eating a ton of ads on that very exaggerated "cool" sore throat candy.
But! Y leader shout: The state in the unit test program will also be changed to status. Under the gaze of countless pairs of eyes, Y leader trembled with replace All,save,f5. Finally, when everyone saw a string of characters on the computer, everyone smiled comfortably. (Of course, if you don't have a false alarm, maybe not everyone will be able to laugh as soon as they work until midnight.) I think, at this moment, this scene, in the eyes of Y leader, must be rolling some things, in addition to eye excrement.

Now it's my turn to play. The code that finds X at build also needs to change some state to status. (It would have been nice if they had checked it too). X programmers don't have the habit of defining constants or macros, so I've build them many times before they get rid of all the state they want to change.

One of the highlights of QA:

What happened later could be described in a "turn", with the gaze of countless eyes (my hands did not tremble, because people have been numb, or everything is used to it, I started our software, connected to the B platform, check all the data, all OK; Connect to c platform, check all the data, All OK. It's done!
"Home, home, how it feels to go home ...", I think, at the time, perhaps everyone's heart echoed the old song of Wang (If you know this song), including the poor boss who was working late into the night.
When the others had intended to turn, my thoughts were in a struggle to inspire. Looking at colleagues of the face, including the boss vicissitudes of the face and a few naïve but not show the young programmer's face, think of the family a day did not see Dad's children, I want to go home, but I am QA. I silently connected to a platform, and then found no data. (If you freeze the scene or fade out, I think it's like the end of Hollywood Herald sequel).
When I shouted at everyone, I didn't know how to describe my feelings.
Silent, silent, again see silent! Suddenly, the boss told everyone: today's deadline to finish the B and C platform on it, a platform next week to say. If he is true, the boss will be able to leave the word. 3 minutes later (one half of which was tagged for CVS), I sat on the taxi home.


One o'clock in the morning Shanghai or neon flashing, so beautiful.

Postscript:


This article is purely fictional, if there is similarity, it is a coincidence.
(In fact, this 99.99% is true, except for some artistic processing, if it is "art".) I just don't want my lovely respectable colleagues to find me cursing them in the back of the crow mouth and the TMD)
Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.