4.6K Views
February 24, 25
スライド概要
テストケースってなんなの? JaSST nano vol.46 2025.3.18(火) やまずん Dirty Tester バキバキQA
自己紹介 ⚫ 役割:Dirty Tester/バキバキQA ⚫ 椎名林檎ファン(aikoではなく) ⚫ 職業:4月から外資系QA(予定) ⚫ 資格:JSTQB FL/JSTQB FL ⚫ 住居:大阪 ⚫ 所属 ⚫ バキバキQAチャンネル チャンネル主 ⚫ testing.osaka 主催 ⚫ スクラム祭り 実行委員 2
JaSST nanoに3回も出てる vol.1 vol.22 vol.39 3
これのお話 vol.1 vol.22 vol.39 4
本発表の注意 ⚫ 大学などの専門機関や権威のある先生から習ったわけでは ありません ⚫ 世の中一般論ではなく、やまずんの私見の内容が含まれま す 5
はじめてのLTが「テストケースってなんなの?」 盛りがったやんな 今でも使ってんで 6
はじめてのLTが「テストケースってなんなの?」 盛りがったよな 後悔していることがある 本当に言いたいことを言語化する実力がなかったこと そしてなにより マサカリを恐れて 言語化のチャレンジもしなかったこと 今でも使ってるよ 7
はじめてのLTが「テストケースってなんなの?」 盛りがったよな というわけで JaSST nano第1期の クライマックスに向けて vol.1の伏線回収をしてみたい 今でも使ってるよ 8
4年前に話して おきたかった 本当の本気の テストケースってなんなの? JaSST nano vol.46 2025.3.18(火) やまずん Dirty Tester バキバキQA
みなさんの 「テストケースってなんなの?」 を教えてください 「テストケース」を言い換えたり、説明したり、意味を考えると、 なんて言えるだろうか? #jasstnano 10
テストケースの定義を かんがえてみよう 11
テストケースとはなんなのか?やまずん定義 やまずんの定義 「テストとして価値ある実行結果とその原因が一意に 定まると考えられた仮説」 いきなり押しつ けがましいなあ 12
テストケースはさまざま いろいろあるん だねえ 13
テストケースという概念は「ある」よね? ⚫ テスト設計やテスト計画という概念がない現場は たくさんある ⚫ 一方で「テストケース」という概念はほとんどの ごまという概念 はあるのか… 現場である ⚫ 「うちはテストケースありません」など 「テストケース」を足がかりにすることで、 どの現場でもテストを理解できるのではないか?という考えに至る 14
テストケースが 「ない」現場は どうなるでしょうか? #jasstnano 15
テストケースがない現場を考えてみた ⚫ 2時間テストを実行しました ⚫ バグチケット起票しときます テストベンダー ではあんまりな いけど自社QAだ とあるかもね ⚫ 網羅したかわからないけど ⚫ なんかいけそうです 16
テストケースがある現場だとこうなる ⚫ 2時間テストを実行しました →テストケースを「実行する」 ⚫ バグチケット起票しときます →このテストケースで「バグが見つかりました」 本当にテスト ケースがあれば こうなるのかな あ ⚫ 網羅したかわからないけど →テスト条件をテストケースで「網羅する」 ⚫ なんかいけそうです →テストケースのPass/Failで「判断できる」 17
テストケースがない「原初のテスト」 すごく頑張った のは伝わる 原初のテスト 2時間テストして、 65536を入力した場合に0が返る 件はチケットにしました! でもなんかいけそうです! 18
原初のテストから具体的に識別する :3を入力した時は「Fizz」を返す :5を入力した時は「Buzz」を返す 原初のテスト :15を入力した時は「FizzBuzz」を返す れんこんみたい だねえ :1から100までの数字を入力した場合、 1sec以内に処理を終了する 19
テストケースの発見 :3を入力した時は「Fizz」を返す :5を入力した時は「Buzz」を返す 原初のテスト :15を入力した時は「FizzBuzz」を返す 箱に入りたい :1から100までの数字を入力した場合、 1sec以内に処理を終了する これってテストのケース(事例、箱)っぽくない? 20
テストケースはどんなものか ⚫ ケースの形で識別する(identify) ⚫ テストケースAはテストケースBではない ⚫ テスト実行などによって結果が決まる(Pass/Fail) ⚫ テスト結果がわかるまではテスト結果はわからない(仮説) テストケースっ ていろんな特徴 があるんだねえ ⚫ テストケースはテストをする理由があってテストケース 化される ⚫ テストする 理由があるということは、テストで得られる結果 に価値があるということ 21
テストケースはどのような意味を持つのか ⚫ テストケースは他のテストケースと区別する ⚫ テストケースはテスト実行されうる ⚫ テストケースは「結果」を取得する やまずんの定義 に繋がるんだ ⚫ テストケースの結果を得る理由がある やまずんの定義 「テストとして価値ある実行結果とその原因が一意に定まると考えられた仮説」 22
その現場のテストケースを理解するとどう嬉しいのか? ⚫ 現場でのゴール(テストケース)を理解した上でテ スト設計プロセスが組み立てられる ⚫ その現場で大切にしていることやテスターに求めら 僕もケースに入 れて管理してく ださい れていることが見えてくる ⚫ 場合によってはその現場のテストの弱点が見えるこ ともある 23
テストケースの構成要素を読み解く 24
みなさんの テストケースは 具体的にどんなんですか? #jasstnano 25
テストケースの構成要素 ⚫ テストケースは何某かの要素で構成されていません でした? ⚫ テストケースの構成要素には意味がある 2つくらいが ちょうどいいよ ねえ ⚫ 典型的なテストケースの構造 ⚫ 操作 ⚫ 期待結果 26
典型的なテストケースの構造 ⚫ 操作、期待結果の構造はプログラム(ソフトウェア によって自動化されたプロセス)を最も抽象化した ぼくもアウト プットされたい もの インプット なんかあったら 処理 アウトプット なんか起こるよね! 27
ISTQBが定義するテストケースの構造 ISTQBの定義(ISTQB Glossary) テストケース Version2 「実行事前条件、入力値、アクション(適用可能な場合)、期待結果、および実行事後条件の セットであり、テスト条件に基づいて開発されたもの。」 たくさん増えて いいねえ インプット なんかの状態で なんかの入力値 処理 なんかしたら アウトプット なんか起こるし なんかなってるやろ! テストしたらなんかええことがある 28
「テストフレーム」という考え方 ⚫ VSTePで提唱されて(多分)、テスト設計コンテス トなどでも活用されている概念 ⚫ テストケースの構造(骨格/構成)を示す 僕も脂肪を取り 除いたらかっこ いい骨格になる よ テスト設計コンテストU30チュートリアル2024年版から引用 29
テストケースの構造を捉える意味 ⚫ テストケースがどういったものかを端的に理解でき るはず ⚫ テストケース設計のゴールが少し理解できる 海の生き物の構 造のことも考え てね ⚫ テスト設計をプロセスを考えることができる ⚫ 次の章のテストケース形式性にもつながる 30
テストケースの形式性 31
テストケースの形式性とは ⚫ やまずんが思いつきで定義した概念 ⚫ もし既に言葉としてあったら教えてください ⚫ テストフレームの複雑さを表したものだと思ってOK ⚫ Excelの「列の数」でもいいです 形式性 高 形式性 低 3を入力するとFizzが表示される 32
テストケースの形式性を思いついた背景 ⚫ テストケースについて以下の仮説を持っていた ⚫ 同じテスト条件を持つテストケースは同じ構造を持つ ⚫ テスト条件によってテストフレーム(テストケースの構 造)は変わる テスト仕様書の フォーマットは 絶対に破っては いけない現場も あるよ! ⚫ テスト条件やテストタイプによってテストケースの 形式(フォーマット)が異なることを許容する考え 方 33
テストケースの形式性の使いドコロ ⚫ クロスブラウザテストはブラウザ名を入れよう ⚫ 性能テストは期待結果の他に、実測値をつけよう ⚫ シナリオテストは無理に表にせずに、文章のままで ごまの名前も入 れていいんだ よぉ いこう ⚫ 構造化した方がテスト設計が楽だと いう考え方 34
テストケースの形式性を操ろう ⚫ そもそも自分の現場のテストケースの形式はどのよ うな意味があるのか?を考えてみる ⚫ 本当に必要なテストケースの形式を考えてみる 自由な形式のテ ストケース ⚫ 画一的なフォーマットではなく、必要に応じてカス タマイズする 35
阻塞:形式性が〇〇でない理由 ⚫ テストケースの粒度 ⚫ 構造に着目している感じがなかった ⚫ テストケースの複雑度 言い訳のフェー ズ ⚫ 「シンプルな方がいい」という印象を与える感じがあっ た ⚫ テストケースの詳細度 ⚫ 列が多ければ詳細であるという感じでもなかった 36
テストケースに意味を見出す 37
テストケースを導出するプロセスとしてのテスト設計 ⚫ テスト設計を「テストケースを生み出すためのプロセ ス」として捉える ⚫ そういった位置付けで多くの人は説明しているが、どうして もテスト設計はテスト観点やテストアーキテクチャの話だと テストケースを 作って遊ぼう 理解してしまいがちかもしれない ⚫ 「テストケース」を捉えることで、テスト観点やテスト アーキテクチャの存在理由も自分なりに腹落ちするかも しれない ⚫ テストケースだけでテストの価値、十分性、実行実現性を説 明できる人はあまりいない 38
いいテスターはいいテストケースをつくる ⚫ 「いいテストケースをつくれる」ことはテストエンジニアの価値を 端的に説明していると私は思う ⚫ もちろんテストケースを作るだけでは「いいテストケース」になら ない ⚫ テストケースを説明したり、補強するためのドキュメントが存在す いいぬいぐるみ も作ってねえ るはず ⚫ 例えば ⚫ テストケースがテストの全体像のどこにいるのか ⚫ テストケースはどのような意味を持つのか ⚫ テストケースはどのように実行されるのか ⚫ テストケースの実行結果はどのように報告するといいのか 39
注意:「いいテストケース」は現場によって違う ⚫ 「いいテストケース」に絶対的な答えはない ⚫ テストはコンテキスト次第であり、テストの制約・目的・背 景によって「いいテスト」は変わりうる ⚫ テストの目的がはっきりしていると嬉しい場合 過度な一般化に 気をつけてねえ ⚫ テストの手順が明確だと嬉しい場合 ⚫ 短時間で作れると嬉しい場合 ⚫ 構造化されていると嬉しい場合 ⚫ この現場でいいテストケースは別の現場では違うかもしれな い ⚫ 今いいテストケースは一年後には違うかもしれない 40
注意:「いいテストケース」は現場によって違う ⚫ 「いいテストケース」に絶対的な答えはない ⚫ テストはコンテキスト次第であり、テストの制約・目的・背 景によって「いいテスト」は変わりうる イマココに必要なテストケースってなんなの? 過度な一般化に ⚫ テストの目的がはっきりしていると嬉しい場合 気をつけてねえ と ⚫ テストの手順が明確だと嬉しい場合 本来的に必要なテストケースってなんなの? ⚫ 短時間で作れると嬉しい場合 は分けて考えよう ⚫ 構造化されていると嬉しい場合 ⚫ この会社でいいテストケースは別の会社では違うかもしれな い ⚫ 今いいテストケースは一年後には違うかもしれない 41
テストケースってなんなの? ってなんなの? 42
テストケースってなんなの?を問う意味 ⚫ テストケースを定義して言い換えることに実はあん まり意味はないかもしれない ⚫ (ここまで言っといて) ごまってなんな のってなんなの ⚫ むしろ「テストケース」という概念を捉え、さまざ まな角度で分析することに意味があるかもしれない ⚫ そのための見方の例を本セッションでは紹介しました ⚫ テストのどの側面を表現しているのか、構造、形式性 43
みなさんにとって テストケースへの印象は 変わりましたか? 「正解がある」ではなくて、自分で思ったことを言葉にすることが 大事やと私は思います #jasstnano 44
参考文献 いつもありがと ね〜 • リー・コープランド『はじめて学ぶソフトウェアのテスト技法』日経BP 社,2005年 • Rick D.Craig,Stefan P.Jaskiel『体系的ソフトウェアテスト入門』日経BP社,2004 年 • まちがいさがし。_成果物3_001_テストケース仕様書 • テスト設計コンテスト実行委員会,テスト設計チュートリアル ちびこん編資 料, https://www.aster.or.jp/testcontest/doc/2024_chibicon_v1.0.0.pdf,2025/3/1 • テストってなんなの?, https://zenn.dev/55_ymzn/books/what_is_testing • テストケースの形式性について, https://zenn.dev/55_ymzn/articles/formality_of_test_case イラスト:タスマニア・デビ男 45