Skip to content

Commit

Permalink
x
Browse files Browse the repository at this point in the history
  • Loading branch information
shinsuke-mat committed Jul 10, 2024
1 parent bfc906c commit 3c74543
Showing 1 changed file with 57 additions and 11 deletions.
68 changes: 57 additions & 11 deletions lecture-test.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ title: SW設計論 #15
・テストはユーザ第1号である
・バグを直す前にテストを落とす
・リファクタリングする前にテストをする
・テストは証明ではない
・テストをしよう

---
Expand All @@ -27,37 +28,82 @@ title: SW設計論 #15
下流工程の一つ, 実装とほぼ1:1

基本はSWを叩いてみて確認する
(コードレビューは叩かずに確かめる方法)
<sub>(コードレビューは叩かずに確かめる方法)</sub>

ソートプログラム `sort(arr)` に対するテスト
```java
@Test void testSort1() {
expected = sort([1,2,3]); // プログラムを叩いてみる
assert(expected).is([1,2,3]); // その結果が正しいか検証
actual = sort([1,2,3]); // プログラムを叩いてみる
assert(actual).is([1,2,3]); // その結果が正しいか検証
}
@Test void testSort2() {
expected = sort([5,1,2]);
assert(expected).is([1,2,5]);
actual = sort([3,1,2]);
assert(actual).is([1,2,3]);
}
@Test void testSortNull() {
expected = sort(null);
...
actual = sort(null);
...
```

---

# 様々なテスト
## 誰が叩くのか?
人が叩く:マニュアルテスト
機械が叩く:自動テスト
機械が叩く:自動テスト (ユニットテスト)

## どういう目線で叩くか?
中身を意識する:ホワイトボックス
中身を意識しない:ブラックボックス

## SWの何をテストするか? (BBの場合)
機能 (単体テスト, 結合テスト, システムテスト)
非機能 (負荷テスト, パフォーマンステスト, ..)
## SWの何をテストするか?
機能:単体テスト, 結合テスト, システムテスト
非機能:パフォーマンステスト, 負荷テスト, ..

---
# テストを書こう
## 実装したら即テストを書く
インタフェースを決める
```java
List sort(List);
```

実装する
```java
List sort(List l) {
for ..
..
```

テストする (実装より先でもOK)
```java
@Test void testSort1() {
assert(sort([1,2,3])).is([1,2,3]);
}
```

`要求` + `I/F`

---

インタフェースを決める
```java
python analyze.py in out
```

実装する
```python
def analyze(in_file, out_file):
f = open(in_file);
..
```

テストする (実装より先でもOK)
```python
def test_analyze(self):
analyze("test/in.txt", "test/out.txt");
assert("test/out.txt") ..
```

---
<br><br><br><br>
Expand Down

0 comments on commit 3c74543

Please sign in to comment.