| English | 意味 |
|---|---|
| run-time error/rʌn taɪm ˈerə/ | 実行時エラー |
| syntax error/ˈsɪntæks ˈerə/ | 構文エラー |
| logic error/ˈlɒdʒɪk ˈerə/ | ロジックエラー |
| dry run/draɪ rʌn/ | ドライラン |
| walkthrough/ˈwɔːkθruː/ | ウォークスルー |
| white-box testing/waɪt bɒks ˈtestɪŋ/ | 白箱テスト |
| black-box testing/blæk bɒks ˈtestɪŋ/ | 黒箱テスト |
| integration testing/ˌɪntɪˈɡreɪʃn ˈtestɪŋ/ | 統合テスト |
| stub/stʌb/ | スタブ |
| alpha testing/ˈælfə ˈtestɪŋ/ | αテスト |
| beta testing/ˈbiːtə ˈtestɪŋ/ | βテスト |
| acceptance testing/əkˈseptəns ˈtestɪŋ/ | 受入テスト |
| test strategy/test ˈstrætədʒi/ | テスト戦略 |
| test plan/test plæn/ | テストプラン |
| normal data/ˈnɔːml ˈdeɪtə/ | 通常データ |
| abnormal data/əbˈnɔːml ˈdeɪtə/ | 異常データ |
| extreme data/ekˈstriːm ˈdeɪtə/ | 極端データ |
| boundary data/ˈbaʊndəri ˈdeɪtə/ | 境界値データ |
| corrective maintenance/kəˈrektɪv ˈmeɪntənəns/ | 修正保守 |
| adaptive maintenance/əˈdæptɪv ˈmeɪntənəns/ | 適応保守 |
| perfective maintenance/pəˈfektɪv ˈmeɪntənəns/ | 改善保守 |
| regression testing/rɪˈɡreʃn ˈtestɪŋ/ | 回帰テスト |
Thirty-seven seconds
- On 4 June 1996 the first Ariane 5 rocket lifted off from French Guiana. Thirty-seven seconds later it veered off course and destroyed itself. The payload was four satellites worth $370 million.
- The cause was one line of code, reused from Ariane 4, that converted a 64-bit number into a 16-bit integer. Ariane 5 flew faster, the number was bigger, and the conversion overflowed: a run-time error 运行时错误 in a routine that was not even needed after lift-off.
- The code had never been tested with Ariane 5's flight data. Nobody had chosen test data at the extremes of the new rocket's range.
- This lesson is the three kinds of error, the methods of testing, how to choose test data, and how a program is kept alive after release.
Three kinds of error
- A syntax error 语法错误 breaks the grammar of the language: a missing bracket, a misspelled keyword. It is found at translation, so the program will not run until it is fixed.
- A run-time error happens while the program runs: division by zero, a file that does not exist, an array index out of range. The program crashes or raises an exception; the fix is a check before the risky operation.
- A logic error 逻辑错误 lets the program run and produce wrong results:
+for-, an off-by-one loop, conditions in the wrong order. Nothing flags it; only testing and tracing reveal it.

Found at translation, found at run time, found only in the output
各種のエラーがどのように現れるかと対応させなさい。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
構文エラー=コンパイル時に検出;論理エラー=誤った出力;実行時エラー=実行中のクラッシュ。
Worked example: find and correct the errors
Total ← 0
FOR i ← 1 TO Count
Total ← Total + Marks[i]
NEXT i
Average ← Total / Count
IF Average > 50 THEN
OUTPUT "Pass"
- Syntax: the
IFhas noENDIF. The translator rejects it. Run-time: ifCountis 0 the division fails; guard it withIF Count > 0 THEN. Logic: if a pass is 50 or more,> 50fails a student on exactly 50; it should be>= 50. - Name the type, say why it is that type, and give the correction. Three parts, three marks.
プログラムが総数をエントリ数で割り、入力ファイルが空のときにクラッシュします。これは:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
ゼロでの除算はプログラム実行中に発生し、動作を停止させます。IF Count > 0 のようなガード条件で修正できます。
Testing methods: reading the code
- A dry run 手工跟踪 traces the code on paper, writing each variable's value in a trace table after each line.
- A walkthrough 走查 is a team review: the programmer explains the code line by line while colleagues look for faults.
- White-box testing 白盒测试 designs tests from the code's internal structure, so that every statement, branch and loop is exercised. Black-box testing 黑盒测试 designs tests from the specification only: feed inputs, compare the outputs with what was expected, without looking at the code.

Outside looking in, or inside looking at every path
仕様(入力と期待される出力のみ)に基づいてテストケースを設計し、内部コードを無視することを______ボックス・テストと呼びます。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
仕様に基づくブラックボックス・テストに対し、ホワイトボックス・テストはコードの内部構造を用いてステートメントや分岐を網羅します。
Testing methods: assembling and releasing
- Integration testing 集成测试 combines modules that were tested separately and tests the interfaces between them. A stub 桩 stands in for a module that is not yet written, returning fixed values so the rest can be tested top-down.
- Alpha testing α测试 is done in-house by the developers before release. Beta testing β测试 gives a limited group of real users the program in their own environment.
- Acceptance testing 验收测试 is done by the customer, against the requirements, to decide whether the product is fit for purpose.
ソフトウェアプロセスラボ
開発例を、該当する段階またはツールに基づいて分類しなさい。
Worked example: which method for which situation
- The reporting module is finished but the database module it calls does not exist yet: test it with a stub that returns fixed data.
- Two modules pass their own tests but fail when the output of one feeds the other: integration testing of the interface.
- The software is complete; the company wants faults found in real conditions before general release: beta testing by a limited group of users.
- The customer decides whether to pay: acceptance testing against the agreed requirements. Name the method and what it is for.
各状況に必要なテスト方法を対応させてください。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
欠落部分へのスタブ、実際のユーザーへのベータテスト、顧客への受入テスト、結合部への統合テスト。
Test strategy and test plan
- A test strategy 测试策略 is the high-level approach: which kinds of testing will be done, by whom, when, and what must pass before the next stage.
- A test plan 测试计划 is the detailed list of tests. For each: the purpose, the input data, the expected output, and a column for the actual output when the test is run.
- A test without an expected result is not a test. It only shows what the program did, not whether that was right.
テストプランには、各テストごとに入力データと期待される出力がリストされています。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
目的、入力、期待される出力、そして実際の出力を記録する列があります。戦略は高レベルのアプローチであり、プランは詳細なリストです。
Choosing test data
- Normal data 正常数据: typical valid values inside the range, which should be accepted and processed correctly.
- Abnormal data 异常数据: values that should be rejected, out of range or the wrong type.
- Extreme data 极端数据: the largest and smallest values still accepted, at the edges of the range. Boundary data 边界数据: the pairs that straddle each edge, the accepted extreme and the rejected value just outside it, where off-by-one errors hide.

Inside, outside, and right on the line
点数0〜100を受け付けるフィールドについて、境界値テストの値はどれか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
境界データは有効範囲の端(およびわずかに外側)に位置し、オフバイワンエラー隠蔽の場所です。
Worked example: test data for a mark from 0 to 100
| Kind | Data | Expected result |
|---|---|---|
| normal | 50, 75 |
accepted and processed |
| abnormal | -10, 200, "abc" |
rejected: out of range or wrong type |
| extreme | 0, 100 |
accepted: the smallest and largest valid values |
| boundary | -1 and 0, 100 and 101 |
-1 rejected, 0 accepted; 100 accepted, 101 rejected |
- Every row needs the expected result; a table of inputs alone scores half. The extremes are accepted:
-1is boundary, not extreme.
0から100までの点数を受け付けるフィールドにおいて、極端テストデータとなる値はどれか。すべて選択してください。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
極端値は、まだ受け入れられる最小値と最大値です。-1 は拒否されるため、境界値または異常値となります。50 は通常値です。
Maintenance
- Most of a program's lifetime cost is spent after release. Corrective maintenance 纠正性维护 fixes faults found in use.
- Adaptive maintenance 适应性维护 keeps the program working in a changing environment: a new operating system, a new API, a change in the law.
- Perfective maintenance 完善性维护 improves a program that already works: faster performance, a new feature users asked for. A program may need all three throughout its life.

Fix it, keep it working, make it better
是正保守は欠陥を修正し、改善保守は機能を向上させ、適応保守は変化した環境でもソフトウェアを動作させるものです。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
3つの保守タイプ:是正保守(バグ修正)、改善保守(機能強化)、適応保守(新しいOS/ハードウェア/ルールへの対応)。
税法の変更により給与計算プログラムが修正されました。これはどの種の保守ですか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
プログラム自体に欠陥はなく、機能も改善されていません。環境が変化したため、これは適応保守です。
Amending an existing program
- Read the existing code until you understand the algorithm and the data flow. Find where the change belongs: which subroutine, which lines.
- Make the change as small as possible; do not rewrite working code. Update every related part: each caller of a changed parameter list, each routine that uses a changed data structure.
- Test the new behaviour and the old: regression testing 回归测试 checks that nothing that used to work has broken. Then document the change.
プログラムを変更した後、回帰テストでは何を確認しますか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
回帰テストは、変更後も既存の動作が正しく維持されていることを確認するために古いテストを再実行します。
既存のプログラムを改変する手順を正しい順序で並べ替えてください。
難易度 3/5 · 200 コイン + 今日初回完了時に小ボーナス付与
理解、特定、小規模変更、影響拡大、全テスト実行、記録。回帰テストをスキップすると、修正が他の機能を壊す原因になります。
Marks that slip away
- Extreme is accepted; abnormal is rejected.
0and100are extreme;-1and101are boundary values on the rejected side. - A logic error does not crash the program. If it crashed, it was a run-time error.
- Alpha is in-house; beta is real users outside. A stub replaces a missing module; it is not a test method for finished code.
- A test plan row without an expected output earns nothing. Regression testing follows every change.
You've got it
- syntax errors stop translation · run-time errors crash a running program · logic errors run and give wrong output, found only by testing
- methods: dry run, walkthrough, white-box (from the code), black-box (from the specification), integration (interfaces, with stubs for missing modules), alpha (in-house), beta (real users), acceptance (the customer)
- test data: normal accepted, abnormal rejected, extreme the accepted edges, boundary either side of each edge; every test has an expected result
- maintenance: corrective fixes, adaptive keeps up with the environment, perfective improves; amend small, update callers, regression test