HW9: Chapter 8 and reflections on testing

8.7: Write a scenario that could be used to help design tests for the wilderness weather station system.

Context: According to Chapter 7, Design and Implementation, the wilderness weather station system is a station deployed in a remote area. It records local weather information and periodically transfers this to a weather information system using a satellite link.

Scenario: Alex is a local weatherman in small-town North Dakota. Although his hometown is small, it’s surrounded by even more remote communities that use the wilderness weather system to transmit weather data to aggregators and reporters. Alex is putting together a weekly report in which he includes the forecast for not only his town but also the surrounding areas. His hometown’s data automatically syncs to a weather information system. However, in order to manage all of the up-to-date weather data he needs this report in one place, so he puts in a request to the satellite (SatComms) of the wilderness weather system for data from Area1. The satellite then reports the weather to the weather station and once a summary is retrieved, it’s aggregated into the requested report and returned to the weather information system/database. With the data from the remote areas now synced to the general weather information system, Alex can effectively plan for his presentation by creating graphics and charts and analyzing the data. He repeats this process for Area2 and Area3 through separate requests to the satellite. After each request has been completed, the system records that the data has been sent so that it doesn’t not resend data unncessarily.

8.10: A common approach to system testing is to test the system until the testing budget is exhausted and then deliver the system to the customers. Discuss the ethics of this approach for systems that are delivered to external customers.

I do not think that this is an ethical system. The scenario implies a lack of planning by the testing team to create a comprehensive test-suite within the budget. Particularly because this is a system that will be delivered to an external customer, it’s crucial that testing within the budget is maximized. I think it’s important here to distinguish between the case that the system was tested until the budget ran out according to plan and the case that the system was tested until the budget ran out without covering all of the planned (comprehensive) test cases. If this testing strategy resulted in major holes in testing, it would certainly not be an ethical use of the client’s money. For example, say features were tested separately and sequentially so that testing the last few features was cut out with the budget loss. In such a case, it would be more ethical to test each feature to a lesser degree. If it isn’t possible to test every feature sufficiently within the budget, this should be communicated to the customer as early as possible to make a plan and prioritize which potential issues to investigate.

Reflections on testing:

“Testing and debugging” - this phrase is often thrown around within the computer science/software engineering world. Although testing and debugging are bucketed together, in reality, they are two distinct processes. This week’s readings, Chapter 8 (Software Testing) and a separate chapter centered around testing cleared up a lot of the confusion I had about this distinction by examining it in detail. The chapters focus on several topics related to the nature of testing and debugging.

To summarize the difference: Testing is the process of surfacing bugs. Debugging depends on testing and encompasses the more laborious process of correcting bugs found through it. These two processes taken together consume “at least half of the labor expended to produce a working program” (outside reading pg. 1). The goal of testing is not to show that there are no errors - this is nearly impossible to do, particularly in a large program. Rather it’s to surface as many errors as possible so that they can be rectified and the final product is as error-free as possible. The outside reading explains that this very fact leads many software engineers to dread the testing process; it feels like an admission that they’ve created an imperfect program. It feels defeating that more than half the time spent on the product is spent testing it. After all, if they’d done everything right, they could be assured there would not be any bugs, right? Although it feels this way, it simply is not practical to create a bug-free program, nor is it safe to assume a program is bug-free because all of the right precautions have been taken. As a programmer, it’s your responsibility to assume the worst of, not give the benefit of the doubt to, your work.

The importance of taking on a different role as the programmer and the tester really struck me throughout these readings. It makes so much sense - it’s really difficult to construct tests to find holes in your work when you’ve proudly constructed that work with the goal of preventing holes. I love the way the author of the outside reading puts this: “you must be a constructive schizophrenic.” This is all about being two different people when you program versus when you test. The tester in you needs to be “suspicious, uncompromising, hostile, and compulsively obsessed with destroying, utterly destroying, the programmer’s software.” I can imagine that’s not an easy suit to put on, but I suppose you’d have to do so with the goal of your final project being as sounds as possible.

That brings me to my final point to reflect on which ties to testing with such rage - “complete” testing. Both readings touch on unit testing versus component testing versus system testing. While unit testing should always be 100% complete, larger systems may be approved with as little as 50% or so completeness in the other testing types. The higher up the ladder you go, the more difficult - and eventually, impossible - it becomes to cover all of the bases and prove that no bugs exist. The objective is instead to create a “suitably convincing demonstration” of correctness. This takes a bit of the pressure off and allows companies to stay within their budget. Particularly in a non-safety-critical program, I would imagine that any existing bugs that aren’t detrimental could be discovered and mended throughout the life of the program.

2021

Meeting Charleston

2 minute read

Today, I attended the Alumni Symposium. During freshman year, one of my classes had encouraged attendance to the (then in-person) symposium, but I was unable...

Chapter 9

2 minute read

The journey does not end after a software project has gone live. This week’s reading was “Continuing the Journey” - Chapter 9 of Client-Centered Software Dev...

Chapter 6

3 minute read

“Databases reside at the heart of most software applications” (SD Chapter 6, pg 168). This week’s readings cover Chapter 6 of our textbook, Client-Centered S...

Chapter 5

2 minute read

This week’s reading (Chapter 5 of Client-Centered Software Development) covers domain classes and unit/system testing. According to the text, “domain classes...

Release early and often

2 minute read

Proper documentation for both internal and external users of a software application is crucial to its sustained success after deployment. This week, we read ...

Stupid or Solid?

2 minute read

This week, we read “From STUPID to Solid Code!” by William Durand. This article is packed with high-level do’s and dont’s of programming. The “dont’s” are co...

What’s Happening?

2 minute read

This week, our class chose and reflected on articles from Software, Computer, or CoACM magazines. While perusing software magazines (finding good ones was an...

This bugs me

4 minute read

6.4. Exercise - Find the Oldest Bug Find the oldest bug that’s still open in your chosen project. Write a blog entry describing the problem, with a theory ab...

Reflections on Open Source in Today’s World

2 minute read

This week, our assignment was to explore http://opensource.com/, reading at least two medium-length articles from the site and blogging about what we learned...

Reflections on FOSS

3 minute read

This class, CSCI 462, is centered around contributing to an open-source software project through bug fixes, documentation fixes, and other improvements. Befo...

Introduction

1 minute read

Hi everyone! My name is Janneke (pronounced ‘Yah-Nuh-Kuh’) Morin.

Back to top ↑

2020

HW21: Chapter 24

1 minute read

24.6 Explain why program inspections are an effective technique for discovering errors in a program. What types of error are unlikely to be discovered throug...

HW20: Team Progress II

1 minute read

I feel like our team made great progress on the most recent deliverable (deliverable 4)! We met via Zoom more often than we did between any other two variabl...

HW19: Chapter 23

less than 1 minute read

23.6 Figure 23.14 shows the task durations for software project activities. Assume that a serious, unanticipated setback occurs, and instead of taking 10 day...

HW18: Chapter 21 and Chapter 22

2 minute read

21.4 Explain why an object-oriented approach to software development may not be suitable for real-time systems.

HW17: Team Progress I

2 minute read

This is my first reflection on our team’s testing project. I think this will be a helpful exercise as we move into the final stages of building our testing f...

HW16: Chapter 20

2 minute read

20.10 You work for a software company that has developed a system that provides information about consumers and that is used within a SoS by a number of othe...

HW15: Chapter 19

1 minute read

19.3 Why is it impossible to infer the emergent properties of a complex system from the properties of the system components? In the words of Ian Sommerville,...

HW14: Chapter 18

less than 1 minute read

18.4 Define an interface specification for the Currency Converter and Check Credit Ratings services shown in Figure 18.7.

HW13: Chapter 17

2 minute read

17.10 Your company wishes to move from using desktop applications to accessing the same functionality remotely as services. Identify three risks that might a...

HW12: Chapter 16

less than 1 minute read

16.9 Design the interfaces of components that might be used in a system for an emergency control room. You should design interfaces for a call-logging compon...

HW11: Chapter 9

2 minute read

9.8 Briefly describe the three main types of software maintenance. Why is it sometimes difficult to distinguish between them? Fault repairs to fix bugs and v...

HW10: Chapter 15

2 minute read

15.10 The reuse of software raises a number of copyright and intellectual property issues. If a customer pays the software contractor to develop a system, wh...

HW9: Chapter 8 and reflections on testing

5 minute read

8.7: Write a scenario that could be used to help design tests for the wilderness weather station system. Context: According to Chapter 7, Design and Implemen...

HW8: Mythical Man Month

3 minute read

Mythical Man-Month - Does adding more labor to a project linearly reduce the time to completion? Or does it do the opposite, particularly to an already late ...

HW7: Chapter 5 and 6

1 minute read

5.3: You have been asked to develop a system that will help with planning large-scale events and parties such as weddings, graduation celebrations, and birth...

HW6: Chapter 2

1 minute read

2.1 Suggest the most appropriate generic software process model that might be used as a basis for managing the development of the following systems. Explain ...

HW5: Chapter 4 and reflections

6 minute read

4.5: Using the technique suggested here, where natural language descriptions are presented in a standard format, write plausible user requirements for the fo...

HW4: Reflections on software failures

3 minute read

Our readings this week began with a focus on several software engineering failures which resulted in devastating incidents such as plane crashes (Space Craft...

HW3: Chapters 11 & 12

3 minute read

11.4: What is the common characteristic of all architectural styles that are geared to supporting software fault tolerance? Architectural styles geared to su...

HW1: Chapter 1

3 minute read

1.3: What are the four important attributes that all professional software should possess? Suggest four other attributes that may sometimes be significant.

HW0: Introduction

less than 1 minute read

Hi everyone! My name is Janneke (pronounced ‘Yah-Nuh-Kuh’) Morin.

Back to top ↑