TPO21 Lecture 2 Computer Science
Professor：We’ve been talking about the software development cycle, and today I’d like to move on to the next stage of that cycle-testing, and why finding bugs during testing is actually a great thing. Eh...eh... the quality of the software product often relies heavily on how well it’s been tested. Liz?
Student：Um... just a quick thing. Bugs is the word for problems in the program code, right?
Professor：Yeah, in code or in a computer itself. There is a bit of a story behind that term. Um... back in the 1940s, when the computer industry was just starting, a group of computer scientists was working late one night, and there was a problem in one of the computers’ circuits1. When they examined it, they found a five-centimeter long moth caught in there. Once they debugged the computer, it worked just fine. And ever since then, all kinds of computer problems have been known as bugs. Anyway, you want to find bugs while the software is still in the development and testing phases. Finding them when the software product has already been put on the market can be quite embarrassing. Generally speaking, every software development project has a group of testers and a group of developers. Jack?
Student：And they are different people?
Professor：They are generally completely different group of people. My personal opinion is that they have to be different groups of people because developers often have a bias for their own work, and it blinds them to certain problems that might be obvious to somebody else. So it is always good to have a different set of eyes to go in there and make sure that everything is tested properly.Ok, now, here’s the key. Developers and testers have different mentalities. The mentality of the software developer is construtive, creative, they are spending long hours working together to create and build something new. A software tester, on the other hand, their entire goal is to look at this product and find problems with it, to improve it. Now, this difference between the testers and the developers can lead to an environment where there is a bit of friction. And that friction sometimes makes it difficult for the two teams to work together.There are two projects that I worked on a couple of years ago. One, which I’ll call Project Split, well, the testing and development teams did not work well together. And the other, I’ll call Project Unity, during which both teams worked very well together. Now, during Project Split, we had defect meetings where the developers and the testers met together, eh... eh... to discuss various problems and how they should be fixed. And you could sense the conflict just by walking into the room. Literally, the testers and the developers sat on opposite sides on the table. Um... and ... and the developers were very defensive about the feedback.
Student：Well, if bugs are being pointed out they wouldn’t be too happy since its their work.
Professor：Exactly. Now, ‘cause the two teams weren’t working well together, the fixes were coming very very slowly. And you know, a lot of times when you fix bugs you introduce new bugs, or you discover bugs and other areas that only come to light because something has been changed, so fixing all those new additional bugs was also being delayed. Um... the test process went on much longer than expected and we ended up having to put the product on the market with known bugs in it, which was obviously not ideal.
Student：Ok, and what about Project Unity? How was it different?
Professor：Um... this was different because two teams worked closely together during the defect meetings, instead of put up walls. Um... we didn’t even talked about, you know, who should fix this, who is at fault2. We all acknowledge what needed to be fixed. So if we had ten bugs, we said, ‘Hey, you know what? Let’s do this one first ‘cause this would expose another whole bunch of defects that we haven’t even seen yet.’ So we were being proactive3 and effective. And because we were so much more effective with our time, we were actually able to do more than just fix the bugs, we even put in some improvements that we hadn’t planned.
1 What is the main purpose of the lecture?
A. To describe some recent improvements in computer technology
B. To explain why so many software products have flaws when they are put on the market
C. To show that creating good software depends on people with distinct roles working well together
D. To discuss how the software development process has evolved since the time of early computers
2 According to the professor, where does the term "bug" used for computer problems come from?
A. It originated because of similar between computer virus and real virus.
B. It is based on an incident in which an insect interfered with the function of any early computer.
C. It was first used by early computer scientists who noticed small problems in programming code.
D. It was first used by developers who did not like testers identifying problems in their work.
3 What points does the professor make about software developers? Click on 2 answers.
A. The work they do is mainly creative.
B. They enjoy the challenge of identifying problems to fix.
C. Their work is easier than the work of software testers.
D. They are not always able to detect software problems.
4 What factor made work on Project Unity efficient?
A. No unplanned changes were made during defect meetings.
B. The teams focused on fixing only major problems.
C. The software developers were not defensive about problems detected by the testers.
D. Some of the software testers had previous experience as software developers.
5 How did the software product developed during Project Split differ from the product developed during Project Unity?
A. The Project Split product was released to the market in a shorter amount of time.
B. The Project Split product could be used in more types of computer systems.
C. The Project Split product cost less money to develop.
D. The Project Split product was of inferior quality.