Slide 1

Slide 1 text

1 / 25 Copyright 2022, Kazuhiro SUZUKI 「殺虫剤のパラドックス」の真実 Aug. 16th, 2022 JaSST nano vol.15 @ Online Kazuhiro SUZUKI @ kz_suzuki Image: "farm scene" by Christian Collins is licensed under CC BY-SA 2.0.

Slide 2

Slide 2 text

2 / 25 Copyright 2022, Kazuhiro SUZUKI 自己紹介 ◼ すずき ◼ 職業: QAエンジニア ◼ Twitter: @kz_suzuki ◼ ブログ: ソフトウェアの品質を学びまくる

Slide 3

Slide 3 text

3 / 25 Copyright 2022, Kazuhiro SUZUKI 今日もちかえっていただきたいもの ◼ 特になし

Slide 4

Slide 4 text

4 / 25 Copyright 2022, Kazuhiro SUZUKI パラドックスはご存じですか?

Slide 5

Slide 5 text

5 / 25 Copyright 2022, Kazuhiro SUZUKI パラドックス (*1) 以前にしさんが、「Wikipediaの引用で始める発表はもれなくつまらない」と言っていた気がするが、見つけられなかった。 見つけられなかったが、今回もその法則は守れるかもしれない。 パラドックス(paradox)とは、 正しそうに見える前提と、妥当に見える推論から、 受け入れがたい結論が得られる事を指す言葉である。 逆説、背理、逆理とも言われる。 (Wikipedia(*1)より)

Slide 6

Slide 6 text

6 / 25 Copyright 2022, Kazuhiro SUZUKI アキレスのパラドックス ◼ 前提 1. アキレスは亀より走るのが速い。 2. アキレスは亀より後ろから走り始める。 ◼ 推論 1. 亀がいた位置にアキレスが至る時点で、亀は少し先に進んでいる。 2. 亀の新しい位置にアキレスが至る時点で、亀はまた少し先に進んでいる。 3. これを繰り返してアキレスが亀に追いつくためには、無限回の移動が必要になる。 4. 無限回の移動をするには、無限の時間を要する。 ◼ 結論 ⚫ アキレスは、永久に亀に追いつけない。 ◼ 現実 ⚫ アキレスは、亀に追いつくことができる。 (*1) この例のように、前提や論理が間違っているために生じるパラドックスを「擬似パラドックス」というらしい。 前提も論理も正しいのに、相反する2つの結論が同時に導かれるのが、「真のパラドックス」である。(参考『Newton大図鑑シリーズ パラドックス大図鑑』)

Slide 7

Slide 7 text

7 / 25 Copyright 2022, Kazuhiro SUZUKI 人口のパラドックス ◼ 前提 1. すべての人間は、父と母、2人の生物学的親をもつ。 ◼ 推論 1. ある1人の人間には、2人の親がいる。 2. その2人の親にもそれぞれ、2人の親がいる。 3. 世代を遡るごとに、人口は倍になっていく。 ◼ 結論 ⚫ 100世代前の時代には、現在の2100倍の人間がいた。 ◼ 現実 ⚫ そんなに多くの人間はいなかった。

Slide 8

Slide 8 text

8 / 25 Copyright 2022, Kazuhiro SUZUKI 論理的に導いたつもりの結論が 現実と整合しないのが、 パラドックス。 でもこのパターンだけじゃない気がする。

Slide 9

Slide 9 text

9 / 25 Copyright 2022, Kazuhiro SUZUKI バースデイパラドックス 40人のクラスに、同じ誕生日の人が少なくとも2人いる確率はどのくらい? ◼ 直観 ⚫ 誕生日は366種類ありうるから、重複する確率は10%程度ではないか? ◼ 事実 ⚫ 約90%

Slide 10

Slide 10 text

10 / 25 Copyright 2022, Kazuhiro SUZUKI 直観で導いた結論が 現実と整合しないのも、 パラドックスと呼ばれている。

Slide 11

Slide 11 text

11 / 25 Copyright 2022, Kazuhiro SUZUKI では今日の本題、 「殺虫剤のパラドックス」は ご存じですか?

Slide 12

Slide 12 text

12 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス ◼ ソフトウェアテスト7原則の5 同じテストを何度も繰り返すと、最終的にはそのテストでは新しい欠陥を 見つけられなくなる。 この「殺虫剤のパラドックス」を回避するため、テストとテストデータを定期 的に見直して、改定したり新規にテストを作成したりする必要がある (殺虫剤を繰り返し使用すると効果が低減するのと同様に、 テストにおいても欠陥を見つける能力は低減する)。 (JSTQB Foundationレベルシラバスより)

Slide 13

Slide 13 text

13 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス ◼ Beizerさんの説明 (*1) DDT(Dichloro Diphenyl Trichloro ethane)は20世紀半ばには「万能の殺虫剤」、1980年代にはその有害性がやり玉にあがって各国で使用禁止になったものの、現在ではまたその 効果と副作用の見直しが進んでいるとのこと。(参考: 有機塩素系殺虫剤DDTの歴史と未来) ソフトウェアテストの文脈では、「DDP」(Defect Detect Percentage、欠陥検出率)を連想するが、まったく関係ない。 ある綿花栽培農家が、ぞうむしの被害にあい、DDT(*1)を買うために農地を抵当に いれたとする。DDTを散布して害虫の98%を駆除し、作柄をなんとか維持できた。 翌年の春先、早めにDDTを散布したが、昨年駆除できなかった2%のぞうむしは DDTに耐性がついて、やはり作物を食い荒らしている。そこで今度はDDTとマラソン 剤を買うために農地を抵当にいれなければならないことになる。 つぎの年には、ぞうむしはどちらの殺虫剤にも耐性がつき、農場をまたも抵当にいれな ければならなくなる。 これが殺虫剤パラドックスであり、ソフトウェアテストでのパラドックスでもある。 (Boris Beizer『ソフトウェアテスト技法』より)

Slide 14

Slide 14 text

14 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス 農作物 ◼ 直観 ⚫ 殺虫剤を使うことで害虫が減る。 支出は減り、収入は増える。 ◼ 事実 ⚫ 殺虫剤を使うことで、耐性をもった害虫が 増え、別の殺虫剤が必要になる。 支出が増え、収入は減る。 ソフトウェア ◼ 直観 ⚫ テストを行うことで、欠陥は減る。 市場に流出する欠陥が減るため、支出は 減り、収入は増える。 ◼ 事実 ⚫ 同じテストを繰り返すだけでは、同じような 欠陥しか見つけることはできないし、その可 能性は下がっていくので、別のテストが必 要になる。 テストの工数が増えるので、支出が増え、 収入は減る。

Slide 15

Slide 15 text

15 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス ◼ アナロジー ◼ あまりさわやかなアナロジーではない気がする・・・ 1. テストで見つかるのは欠陥そのものではなく、「欠陥に起因する故障」である。 2. 左では虫が耐性を獲得するのに対し、右では欠陥自体が耐性をもつわけではない(*1)。 3. テストを行ったことが原因で、より強い欠陥が生じるわけではない(*2)。 (*1) ソフトウェア全体、あるいはそれを作っている組織自身が同じような欠陥を作りこまなくなることが、耐性に相当するといえるかもしれない。 (*2) あくまでも、手持ちのテストケースで意図していなかったような欠陥が残存するということ。 農作物 ソフトウェア 殺虫剤 テストケース 虫 欠陥 殺虫の効果 欠陥の検出能力 虫に耐性がつく 新しい欠陥が 見つかりづらくなる

Slide 16

Slide 16 text

16 / 25 Copyright 2022, Kazuhiro SUZUKI 明日、Wikipediaに来てください。 本当の殺虫剤のパラドックスを 食べさせてあげますよ。 (*) この辺までスライドを作ったところで、秋山浩一さんのnoteに同じテーマの記事があることに気づいた。パクリじゃないんだ、信じてくれ・・・。 (*) Wikipediaに違うことが書いてあるというのは、辰巳敬三さんに教えていただきました。

Slide 17

Slide 17 text

17 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス (オリジナル) ◼ Wikipediaの記述 (Paradox of the pesticides) ◼ 「生態系における捕食者と被捕食者のメカニズム」?? The paradox of the pesticides is a paradox that states that applying pesticide to a pest may end up increasing the abundance of the pest if the pesticide upsets natural predator– prey dynamics in the ecosystem. (Wikipediaより)

Slide 18

Slide 18 text

18 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス (オリジナル) ◼ 微分方程式は突然に (*) Wikipediaの記述です。

Slide 19

Slide 19 text

19 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス (オリジナル) ◼ 変数 ⚫ 𝑯: 被捕食者の数 ⚫ 𝒓: 被捕食者数の成長率 ⚫ 𝑷: 捕食者の数 ⚫ 𝒄: 捕食率 ⚫ 𝒎: 捕食者が寿命死する率 ⚫ 𝒂: 捕食された被捕食者が、捕食者のエネル ギーに置換される割合 ◼ Lotka–Volterra方程式 捕食者と被捕食者の相互作用を表す。 よく見ると難しくない。 ⚫ 𝒅𝑯 𝒅𝒕 = 𝒓𝑯 − 𝒄𝑯𝑷 ⚫ 𝒅𝑷 𝒅𝒕 = 𝒂𝒄𝑯𝑷 − 𝒎𝑷 ◼ 𝒅𝑯 𝒅𝒕 = 𝒓𝑯 − 𝒄𝑯𝑷 ◼ 𝒅𝑷 𝒅𝒕 = 𝒂𝒄𝑯𝑷 − 𝒎𝑷 捕食による被捕食者数の減少 ・捕食者の数に比例する ・被捕食者の数にも比例する 被捕食者の自然増 ・被捕食者の数に比例する 被捕食者数の増加 ・時間あたり、被捕食者数がどれだけ変わるか 捕食者の寿命による減少 ・捕食者の数に比例する 捕食者の自然増 ・捕食者の数に比例する ・被捕食者の数にも比例する ・どれだけ捕食し、それをどのくらいエネルギーの置 換できるかに依存する 捕食者数の増加 ・時間あたり、捕食者数がどれだけ変わるか

Slide 20

Slide 20 text

20 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス (オリジナル) ◼ 平衡状態 平衡状態というのは、捕食者と被捕食者の 個体数の増加がゼロであること。つまり、 ⚫ 𝒅𝑯 𝒅𝒕 = 𝒓𝑯 − 𝒄𝑯𝑷 = 𝟎 ⚫ 𝒅𝑷 𝒅𝒕 = 𝒂𝒄𝑯𝑷 − 𝒎𝑷 = 𝟎 とおくと、平衡に必要な個体数は以下となる。 ⚫ 𝑯 = 𝒎 𝒂𝒄 、𝑷 = 𝒓 𝒄 ◼ 殺虫剤効果 ⚫ 𝒒: 殺虫剤による個体の減少率 を項として組み入れると、 ⚫ 𝒅𝑯 𝒅𝒕 = 𝒓𝑯 − 𝒄𝑯𝑷 − 𝒒𝑯 = 𝟎 ⚫ 𝒅𝑷 𝒅𝒕 = 𝒂𝒄𝑯𝑷 − 𝒎𝑷 − 𝒒𝑷 = 𝟎 となり、平衡に必要な個体数は以下となる。 ⚫ 𝑯 = 𝒎+𝒒 𝒂𝒄 、𝑷 = 𝒓−𝒒 𝒄 殺虫剤効果により、平衡に必要な個体数は、 捕食者𝑯は増え、被捕食者𝑷は減る。

Slide 21

Slide 21 text

21 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス (オリジナル) ◼ 殺虫剤のパラドックスとはもともと ⚫ 殺虫剤効果により、平衡に必要な個体数は、捕食者𝐻は増え、被捕食者𝑃は減る。 ⚫ 逆に同じ𝐻 、𝑃でほかの条件も同等なら、 殺虫剤効果で捕食者は減り、その分被捕食者が増えてしまう。 という話であって、殺虫剤への耐性の話、関係ない・・・。

Slide 22

Slide 22 text

22 / 25 Copyright 2022, Kazuhiro SUZUKI 殺虫剤のパラドックス (オリジナル) ◼ 「オリジナル」で強引にアナロジーを考えるなら、 ⚫ 毎回同じテストを自動で流せる自動リグレッションテスト(*1)を整備したからといって、 ⚫ 創造的・探索的に行う手動テストまで一緒に減らしてしまうと、 ⚫ テストで見つけられる欠陥は減り、すり抜ける欠陥はむしろ増えてしまう。 (*1) なお7原則では、リグレッションテストの価値を否定しているわけではない。 農作物 ソフトウェア 殺虫剤 自動リグレッションテスト 捕食者 良い手動テスト 被捕食者 欠陥 殺虫の効果 欠陥の摘出効果

Slide 23

Slide 23 text

23 / 25 Copyright 2022, Kazuhiro SUZUKI テストエンジニアよ、バグを捕食せよ・・・!

Slide 24

Slide 24 text

24 / 25 Copyright 2022, Kazuhiro SUZUKI みなさんへのメッセージ ◼ 「殺虫剤のパラドックス」のオリジナルを調べることで、 ソフトウェアの品質を語るうえできわめて有効な知見(*1)を得ることができました。 ◼ 心の中で、「本当はそれ、オリジナルじゃない」とつぶやきましょう。 ⚫ 【独擅場】のオリジナルの読みは、「どくだんじょう」じゃない ⚫ 【確信犯】のオリジナルの意味は、「悪いとわかってて行う」じゃない ⚫ 【殺虫剤のパラドックス】のオリジナルの意味は、「虫が殺虫剤への耐性を獲得する話」じゃない ◼ プレゼン資料でここまで、「殺」という漢字を多く使うのは初めてでした。 (*1) オリジナルとBeizerでは「殺虫剤のパラドックス」の意味が違うし、シラバスの説明はそれはそれでBeizerの主張を汲み切れていないということらしい。

Slide 25

Slide 25 text

25 / 25 Copyright 2022, Kazuhiro SUZUKI Happy Testing!!