SlideShare a Scribd company logo
1 of 16
ソフトウェアテストの再検討




      池田 仮名
ソフトウェアテストの再検討

   コンピュータ・アーキテクチャ
   正しいプログラムとは?
   科学哲学とソフトウェアテスト
   ソフトウェアテストの方法論
ノイマン型コンピュータ

   現在のコンピュータはノイマン型アーキテクチャ
    – 主記憶装置上に命令とデータを区別することなく格
      納し、データを命令として解釈実行
    – 計算を開始する準備のためにプログラムとデータを
      外部から主記憶装置に入力
    – 計算結果を他で利用するためにメモリから外部にデ
      ータを出力
   メモリ空間の電子配列が手続きとデータを兼ねる
    – 究極的には「状態」の実存のみが全てをあらわす
    – 時間 N  → 時間 N+1 の状態変化は決定論的
    – ノイマン・アーキテクチャはチューリングマシンの
      一形態
正しいプログラムとは?

   論理においては何ひとつ偶然はない。もし、あるも
    のがある事態のうちに現れることが可能であるのな
    らば、その事態の可能性は、そのものの中にあらか
    じめ先決されていなければならない。 (ウィトゲ
    ンシュタイン)
   状態において決定論的に決まるため「プログラムは
    思った通りには動かない。作った通りに動く」点に
    おいて論理的には常に正しい。
   観測者(お客様)の思ったとおりに動くという評価
    によって価値を決定づけられるというコンテキスト
    においてのみ、「観測者にとって有用なプログラム
    」を「正しいプログラム」と定義づけることが可能
正しいプログラムとは?

   「正しい」の定義
    –   前述までのとおり、観測者にとって有用であるか
    –   バグや不具合がある期間までにおいて認識されない
   「バグや不具合」の定義
    –   法的な文書ではバグのことを瑕疵と記述
    –   瑕疵は瑕疵責任期間中であれば無償で改修する義務
        を負う契約が多い(明白な「正しくない」)
    –   原因や責任の所在などが不明なもの不具合と記述
    –   コンパイルエラー、ランタイムエラー、論理バグ
   「期間」の定義
    –   結合テスト、システムテスト、瑕疵責任、耐用年数
正しいプログラムとは?

   「正しいプログラム」の判断のための主流な考え方
    –   主記憶装置上に命令とデータを区別することなく格納し、デ
        ータを命令として解釈実行するのだから、主記憶装置に展開
        される前段階のバイナリ(やソースコード)が観測者にとっ
        て正しければ正しいプログラム(演繹的・ソースコードレ
        ビュー)
    –   メモリから入力された結果は、なんらかの形で出力されるの
        だから入力と出力が観測者にとって正しければ正しいプログ
        ラム(帰納的・ブラックボックステスト)
   ここでの「観測者」はお客様じゃない可能性が高い
    –   エキスパート・ジャッジの共犯性
           お客様にとって、これが正しいであろう
           プロが正しいと言っているから、これで正しいであろう
    –   お客様が判断できるところは積極的に判断いただく必要性
    –   可能な限り客観的かつ明確な記述である必要性
科学哲学とソフトウェアテスト1

   科学哲学
    –   歴史的に科学と哲学は一体であった
    –   科学の方法論的基礎、存在論的基礎は「正しさ」を
        計る尺度の「正しさ」を計るメタ理論
    –   ソフトウェアテストは「正しさ」を計るものであり
        、「正しさ」の基準が明示されなければ闇雲に制限
        時間まで動かすだけの試行となる
    –   「正しいプログラム」を対象にするため、パフォー
        マンスやキャパシティ等については今回は対象外と
        する
科学哲学とソフトウェアテスト2

   科学的実在論
    –   知覚不能な物について理論が行なう主張は真である
        か偽であるかどちらか
    –   それを測る規準はその理論で話題となる実体が理論
        で言及された通りの仕方で実在しているか否か
    –   理論によって記述されるものは例え知覚不可能であ
        っても、その心とは独立に客観的に実在する
    –   メモリ空間上の電子配列を読む事は事実上はできな
        くても、理論で言及されたとおりに実在しているに
        相違ないだけの根拠があれば正しく実在していると
        見なす
科学哲学とソフトウェアテスト3

   道具主義
    –   理論によって現象の説明・予測がどれだけうまくい
        っていても「理論が観察可能な現象の背後にある観
        察不可能な隠れた実在についての真なる 記述にな
        っている証明にはならない
    –   現象を説明するための いくつかの理論が存在する
        場合は、理論はその正しさではなく、現象をどれだ
        けうまく予測・説明できるかの有用性によって決め
        る
    –   入力と出力を積み上げて正しい結果を出し続けてい
        れば、メモリ空間上の電子配列は少なくとも「有用
        」であると判断する(電子配列自体の正しさに踏み
        込まない)
科学哲学とソフトウェアテスト4

   その他(観念論・社会構成主義など)
    –   観念的もしくは精神的なものが外界とは独立した地
        位を持っているという確信により、観念的なものが
        自存し、実在性をもつとする
    –   私がこのソースコードは正しいと思うから正しく実
        存しているはず→独立性テーゼと呼ばれる客観性が
        欠けるため、ソフトウェアテストの議論には不向き
        (逆に科学的実在主義と道具主義は独立性テーゼを
        保っている)
    –   ただし間主観的に他者の目から明白な誤りを低コス
        トで除去できる可能性があるため不要ではない
ソフトウェアテストの全体論

   プログラムにおいての「正しさ」は特定期間内における社会領域
    の「認識」によって定義付けられる点で道具主義に近い。このた
    め普遍的な正しさの実存は問題対象せず、確率論としての正しさ
    を合意する態度設定が優位となる
   また科学的実在論であっても道具主義であっても、文脈や状況に
    より定義が変わりうる曖昧な概念を特定の操作によって得られる
    変数の集まりの形とする(実験)ことで、その概念を測定可能と
    する「操作主義」が必要となる
   故に全ての仕様書は測定可能な変数を網羅的に定義した存在とし
    て記述し、かつお客様のもちいるコード体系において反証可能、
    合意可能な表現形態であるべきである
    – 「語る」ことよりも「示す」ことの優位性
    – デシジョンテーブル・画面写真・モックアップ
単体テストの方法論

   単体テストを含めて製造工程(進行度=テストパス率)
   単体テストは JUnit などによる機械的アプローチ
    – 繰り返しによるデグレートの防止(要件が変わることは前提)
    – 変数(引数・状態)、結果は全てベクトルで表現可能
           変数ベクトルの 1 次元集合 →  2 次元行列
           手続きテンプレート+ Excel で表現可能
           テスト仕様書や実行体は自動生成可能
    –   他者性の確保
           最終的な成果の検証はプログラムを作った人間がしても意味が薄
            い
           インターフェイスの合意を主とする遅延評価型ペアプログラミン
            グ
           テスト仕様書は事後的であって他者の判断を仰げる形にする
   単純な単体テストを組み合わせても総体としての正しさに言及し
    ていないため費用対効果を見極める必要がある。
結合テストの方法論1

   認識論的なとしての正しさの合意
    –   要件定義・外部仕様とテスト仕様書の整合性を常に意識する
    –   お客様の判断を仰ぎやすい形にする
   組み合わせ問題のカバレッジを高めることで確率論的
    に不具合の事前発見の可能性を高めることができる
    –   組み合わせは無限大
           状態と操作の組み合わせが非常に膨大
           試行回数は有限にせざるをえない
    –   以下の方法論により、試行時間や組み合わせの妥当な削減
           単体画面操作テスト
           組み合わせ変数選択
結合テストの方法論2

   試行時間の削減(単体画面操作テスト)
    –   状態 A  → 操作1 → 状態 B  → 操作2 → 状態 C を
        分解
           状態 A  → 操作1 → 状態 B
           状態 B  → 操作2 → 状態 C
    –   分解可能性の証明(着目状態変数の抜け落ちがない)が可能
        であれば組み合わせ変数を一気に削減できる
                                     変数A   変数B 変数C
                                 試行1  0     0   0
   変数が取りうる値の組み合わせを削減            試行2  0     1   1
    –   変数のクラス分類                 試行3  1     0   1
                                 試行4  1     1   0
           境界値、頻出値、特殊動作など
    –   実験計画法(直交表実験)
           試行 × 変数群の行列において任意の2列に着目した場合のみに全
            組み合わせがでるようにする方法論(ラテン方格)
ソフトウェア修正の方法論

   アブダクション(仮説的推論 )
    –   関連する証拠が真である場合に、最もよく説明する仮説を選
        択する推論方法
   理論 T に従う観測変数集合 O についての諸説明の集
    合を導き、その中から最良の説明 E を選択する
    –   説明 E に基づいて反証を行うための実験やソースコードの検
        証を行い、的中していれば理論の修正を行う
    –   そうでないのであれば T から E を選び直すが、この過程で O
        に観測変数が追加されるため T に影響がでる可能性が高い
    –   理論選択と検証の方法論として説明候補を大量に棄却(枝狩
        り)できるものを選択すると効率がよい
   修正後はリグレッションテスト(回帰テスト)
まとめ

   現在のコンピュータは全て「状態」で定義され
    る
   観測者(判断者)の転換が起こる事を認識する
   正しいプログラムの検証ためには科学的手法が
    必要であるが、絶対の真理ではなく、その実存
    は確率的な事実と割り切る
   確率的な事実の検証を有限のリソースで行うた
    めに費用対効果において最大効率を得るための
    理論が重要となる

More Related Content

Similar to ソフトウェアテストの再検討

TAPL勉強会 第1章 (2012-07-17)
TAPL勉強会 第1章 (2012-07-17)TAPL勉強会 第1章 (2012-07-17)
TAPL勉強会 第1章 (2012-07-17)none_toka
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要Toshihiro Kamishima
 
2014年5月21日「パーティクルフィルタの癖から知るロボットへの確率的手法の正しい適用方法」---第58回システム制御情報学会研究発表講演会チュートリアル講演
2014年5月21日「パーティクルフィルタの癖から知るロボットへの確率的手法の正しい適用方法」---第58回システム制御情報学会研究発表講演会チュートリアル講演2014年5月21日「パーティクルフィルタの癖から知るロボットへの確率的手法の正しい適用方法」---第58回システム制御情報学会研究発表講演会チュートリアル講演
2014年5月21日「パーティクルフィルタの癖から知るロボットへの確率的手法の正しい適用方法」---第58回システム制御情報学会研究発表講演会チュートリアル講演Ryuichi Ueda
 
Beyond Accuracy Behavioral Testing of NLP Models with CheckList
Beyond Accuracy Behavioral Testing of NLP Models with CheckListBeyond Accuracy Behavioral Testing of NLP Models with CheckList
Beyond Accuracy Behavioral Testing of NLP Models with CheckListDannis Lai
 
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講Takashi Imagire
 
ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介Takahiro Katagiri
 
2008 電子情報通信学会論文誌-ユースケースポイント計測におけるアクタとユースケースの自動分類の試みと支援ツールの試作
2008 電子情報通信学会論文誌-ユースケースポイント計測におけるアクタとユースケースの自動分類の試みと支援ツールの試作2008 電子情報通信学会論文誌-ユースケースポイント計測におけるアクタとユースケースの自動分類の試みと支援ツールの試作
2008 電子情報通信学会論文誌-ユースケースポイント計測におけるアクタとユースケースの自動分類の試みと支援ツールの試作n-yuki
 
El text.tokuron a(2019).yoshii190704
El text.tokuron a(2019).yoshii190704El text.tokuron a(2019).yoshii190704
El text.tokuron a(2019).yoshii190704RCCSRENKEI
 
統計解析ソフトMinitab 17による2水準要因計画の作成と解析
統計解析ソフトMinitab 17による2水準要因計画の作成と解析統計解析ソフトMinitab 17による2水準要因計画の作成と解析
統計解析ソフトMinitab 17による2水準要因計画の作成と解析KOZO KEIKAKU ENGINEERING Inc., Minitab
 
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案Kamiya Toshihiro
 
Stateless Circuit Model toward a Theorem-proving Hardware Description Language
Stateless Circuit Model toward a Theorem-proving Hardware Description LanguageStateless Circuit Model toward a Theorem-proving Hardware Description Language
Stateless Circuit Model toward a Theorem-proving Hardware Description LanguageShunji Nishimura
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?Shinichi Hirauchi
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)Takuya Tsuchida
 
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz..."Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...nkazuki
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストYohei Sato
 

Similar to ソフトウェアテストの再検討 (20)

TAPL勉強会 第1章 (2012-07-17)
TAPL勉強会 第1章 (2012-07-17)TAPL勉強会 第1章 (2012-07-17)
TAPL勉強会 第1章 (2012-07-17)
 
因果推論の基礎
因果推論の基礎因果推論の基礎
因果推論の基礎
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
 
Protocol
ProtocolProtocol
Protocol
 
2014年5月21日「パーティクルフィルタの癖から知るロボットへの確率的手法の正しい適用方法」---第58回システム制御情報学会研究発表講演会チュートリアル講演
2014年5月21日「パーティクルフィルタの癖から知るロボットへの確率的手法の正しい適用方法」---第58回システム制御情報学会研究発表講演会チュートリアル講演2014年5月21日「パーティクルフィルタの癖から知るロボットへの確率的手法の正しい適用方法」---第58回システム制御情報学会研究発表講演会チュートリアル講演
2014年5月21日「パーティクルフィルタの癖から知るロボットへの確率的手法の正しい適用方法」---第58回システム制御情報学会研究発表講演会チュートリアル講演
 
Beyond Accuracy Behavioral Testing of NLP Models with CheckList
Beyond Accuracy Behavioral Testing of NLP Models with CheckListBeyond Accuracy Behavioral Testing of NLP Models with CheckList
Beyond Accuracy Behavioral Testing of NLP Models with CheckList
 
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講
 
Spock's world
Spock's worldSpock's world
Spock's world
 
Road damge ai
Road damge aiRoad damge ai
Road damge ai
 
ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介
 
2008 電子情報通信学会論文誌-ユースケースポイント計測におけるアクタとユースケースの自動分類の試みと支援ツールの試作
2008 電子情報通信学会論文誌-ユースケースポイント計測におけるアクタとユースケースの自動分類の試みと支援ツールの試作2008 電子情報通信学会論文誌-ユースケースポイント計測におけるアクタとユースケースの自動分類の試みと支援ツールの試作
2008 電子情報通信学会論文誌-ユースケースポイント計測におけるアクタとユースケースの自動分類の試みと支援ツールの試作
 
El text.tokuron a(2019).yoshii190704
El text.tokuron a(2019).yoshii190704El text.tokuron a(2019).yoshii190704
El text.tokuron a(2019).yoshii190704
 
統計解析ソフトMinitab 17による2水準要因計画の作成と解析
統計解析ソフトMinitab 17による2水準要因計画の作成と解析統計解析ソフトMinitab 17による2水準要因計画の作成と解析
統計解析ソフトMinitab 17による2水準要因計画の作成と解析
 
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
 
Stateless Circuit Model toward a Theorem-proving Hardware Description Language
Stateless Circuit Model toward a Theorem-proving Hardware Description LanguageStateless Circuit Model toward a Theorem-proving Hardware Description Language
Stateless Circuit Model toward a Theorem-proving Hardware Description Language
 
Nttr study 20130206_share
Nttr study 20130206_shareNttr study 20130206_share
Nttr study 20130206_share
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz..."Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
 

Recently uploaded

What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」inspirehighstaff03
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」inspirehighstaff03
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドKen Fukui
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 

Recently uploaded (20)

What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 

ソフトウェアテストの再検討

  • 2. ソフトウェアテストの再検討  コンピュータ・アーキテクチャ  正しいプログラムとは?  科学哲学とソフトウェアテスト  ソフトウェアテストの方法論
  • 3. ノイマン型コンピュータ  現在のコンピュータはノイマン型アーキテクチャ – 主記憶装置上に命令とデータを区別することなく格 納し、データを命令として解釈実行 – 計算を開始する準備のためにプログラムとデータを 外部から主記憶装置に入力 – 計算結果を他で利用するためにメモリから外部にデ ータを出力  メモリ空間の電子配列が手続きとデータを兼ねる – 究極的には「状態」の実存のみが全てをあらわす – 時間 N  → 時間 N+1 の状態変化は決定論的 – ノイマン・アーキテクチャはチューリングマシンの 一形態
  • 4. 正しいプログラムとは?  論理においては何ひとつ偶然はない。もし、あるも のがある事態のうちに現れることが可能であるのな らば、その事態の可能性は、そのものの中にあらか じめ先決されていなければならない。 (ウィトゲ ンシュタイン)  状態において決定論的に決まるため「プログラムは 思った通りには動かない。作った通りに動く」点に おいて論理的には常に正しい。  観測者(お客様)の思ったとおりに動くという評価 によって価値を決定づけられるというコンテキスト においてのみ、「観測者にとって有用なプログラム 」を「正しいプログラム」と定義づけることが可能
  • 5. 正しいプログラムとは?  「正しい」の定義 – 前述までのとおり、観測者にとって有用であるか – バグや不具合がある期間までにおいて認識されない  「バグや不具合」の定義 – 法的な文書ではバグのことを瑕疵と記述 – 瑕疵は瑕疵責任期間中であれば無償で改修する義務 を負う契約が多い(明白な「正しくない」) – 原因や責任の所在などが不明なもの不具合と記述 – コンパイルエラー、ランタイムエラー、論理バグ  「期間」の定義 – 結合テスト、システムテスト、瑕疵責任、耐用年数
  • 6. 正しいプログラムとは?  「正しいプログラム」の判断のための主流な考え方 – 主記憶装置上に命令とデータを区別することなく格納し、デ ータを命令として解釈実行するのだから、主記憶装置に展開 される前段階のバイナリ(やソースコード)が観測者にとっ て正しければ正しいプログラム(演繹的・ソースコードレ ビュー) – メモリから入力された結果は、なんらかの形で出力されるの だから入力と出力が観測者にとって正しければ正しいプログ ラム(帰納的・ブラックボックステスト)  ここでの「観測者」はお客様じゃない可能性が高い – エキスパート・ジャッジの共犯性  お客様にとって、これが正しいであろう  プロが正しいと言っているから、これで正しいであろう – お客様が判断できるところは積極的に判断いただく必要性 – 可能な限り客観的かつ明確な記述である必要性
  • 7. 科学哲学とソフトウェアテスト1  科学哲学 – 歴史的に科学と哲学は一体であった – 科学の方法論的基礎、存在論的基礎は「正しさ」を 計る尺度の「正しさ」を計るメタ理論 – ソフトウェアテストは「正しさ」を計るものであり 、「正しさ」の基準が明示されなければ闇雲に制限 時間まで動かすだけの試行となる – 「正しいプログラム」を対象にするため、パフォー マンスやキャパシティ等については今回は対象外と する
  • 8. 科学哲学とソフトウェアテスト2  科学的実在論 – 知覚不能な物について理論が行なう主張は真である か偽であるかどちらか – それを測る規準はその理論で話題となる実体が理論 で言及された通りの仕方で実在しているか否か – 理論によって記述されるものは例え知覚不可能であ っても、その心とは独立に客観的に実在する – メモリ空間上の電子配列を読む事は事実上はできな くても、理論で言及されたとおりに実在しているに 相違ないだけの根拠があれば正しく実在していると 見なす
  • 9. 科学哲学とソフトウェアテスト3  道具主義 – 理論によって現象の説明・予測がどれだけうまくい っていても「理論が観察可能な現象の背後にある観 察不可能な隠れた実在についての真なる 記述にな っている証明にはならない – 現象を説明するための いくつかの理論が存在する 場合は、理論はその正しさではなく、現象をどれだ けうまく予測・説明できるかの有用性によって決め る – 入力と出力を積み上げて正しい結果を出し続けてい れば、メモリ空間上の電子配列は少なくとも「有用 」であると判断する(電子配列自体の正しさに踏み 込まない)
  • 10. 科学哲学とソフトウェアテスト4  その他(観念論・社会構成主義など) – 観念的もしくは精神的なものが外界とは独立した地 位を持っているという確信により、観念的なものが 自存し、実在性をもつとする – 私がこのソースコードは正しいと思うから正しく実 存しているはず→独立性テーゼと呼ばれる客観性が 欠けるため、ソフトウェアテストの議論には不向き (逆に科学的実在主義と道具主義は独立性テーゼを 保っている) – ただし間主観的に他者の目から明白な誤りを低コス トで除去できる可能性があるため不要ではない
  • 11. ソフトウェアテストの全体論  プログラムにおいての「正しさ」は特定期間内における社会領域 の「認識」によって定義付けられる点で道具主義に近い。このた め普遍的な正しさの実存は問題対象せず、確率論としての正しさ を合意する態度設定が優位となる  また科学的実在論であっても道具主義であっても、文脈や状況に より定義が変わりうる曖昧な概念を特定の操作によって得られる 変数の集まりの形とする(実験)ことで、その概念を測定可能と する「操作主義」が必要となる  故に全ての仕様書は測定可能な変数を網羅的に定義した存在とし て記述し、かつお客様のもちいるコード体系において反証可能、 合意可能な表現形態であるべきである – 「語る」ことよりも「示す」ことの優位性 – デシジョンテーブル・画面写真・モックアップ
  • 12. 単体テストの方法論  単体テストを含めて製造工程(進行度=テストパス率)  単体テストは JUnit などによる機械的アプローチ – 繰り返しによるデグレートの防止(要件が変わることは前提) – 変数(引数・状態)、結果は全てベクトルで表現可能  変数ベクトルの 1 次元集合 →  2 次元行列  手続きテンプレート+ Excel で表現可能  テスト仕様書や実行体は自動生成可能 – 他者性の確保  最終的な成果の検証はプログラムを作った人間がしても意味が薄 い  インターフェイスの合意を主とする遅延評価型ペアプログラミン グ  テスト仕様書は事後的であって他者の判断を仰げる形にする  単純な単体テストを組み合わせても総体としての正しさに言及し ていないため費用対効果を見極める必要がある。
  • 13. 結合テストの方法論1  認識論的なとしての正しさの合意 – 要件定義・外部仕様とテスト仕様書の整合性を常に意識する – お客様の判断を仰ぎやすい形にする  組み合わせ問題のカバレッジを高めることで確率論的 に不具合の事前発見の可能性を高めることができる – 組み合わせは無限大  状態と操作の組み合わせが非常に膨大  試行回数は有限にせざるをえない – 以下の方法論により、試行時間や組み合わせの妥当な削減  単体画面操作テスト  組み合わせ変数選択
  • 14. 結合テストの方法論2  試行時間の削減(単体画面操作テスト) – 状態 A  → 操作1 → 状態 B  → 操作2 → 状態 C を 分解  状態 A  → 操作1 → 状態 B  状態 B  → 操作2 → 状態 C – 分解可能性の証明(着目状態変数の抜け落ちがない)が可能 であれば組み合わせ変数を一気に削減できる 変数A 変数B 変数C 試行1 0 0 0  変数が取りうる値の組み合わせを削減 試行2 0 1 1 – 変数のクラス分類 試行3 1 0 1 試行4 1 1 0  境界値、頻出値、特殊動作など – 実験計画法(直交表実験)  試行 × 変数群の行列において任意の2列に着目した場合のみに全 組み合わせがでるようにする方法論(ラテン方格)
  • 15. ソフトウェア修正の方法論  アブダクション(仮説的推論 ) – 関連する証拠が真である場合に、最もよく説明する仮説を選 択する推論方法  理論 T に従う観測変数集合 O についての諸説明の集 合を導き、その中から最良の説明 E を選択する – 説明 E に基づいて反証を行うための実験やソースコードの検 証を行い、的中していれば理論の修正を行う – そうでないのであれば T から E を選び直すが、この過程で O に観測変数が追加されるため T に影響がでる可能性が高い – 理論選択と検証の方法論として説明候補を大量に棄却(枝狩 り)できるものを選択すると効率がよい  修正後はリグレッションテスト(回帰テスト)
  • 16. まとめ  現在のコンピュータは全て「状態」で定義され る  観測者(判断者)の転換が起こる事を認識する  正しいプログラムの検証ためには科学的手法が 必要であるが、絶対の真理ではなく、その実存 は確率的な事実と割り切る  確率的な事実の検証を有限のリソースで行うた めに費用対効果において最大効率を得るための 理論が重要となる