デブサミの発表聴講諸注意→発表終了&資料公開しました

このブログでの告知が遅れましたが、2/13,14に行われるDevelopers Summit 2020でテストについての発表をします。

f:id:nihonbuson:20200131084318p:plain

event.shoeisha.jp

内容は、いつもの発表内容に少しだけ最新の内容を付け加えたものとなります。

開発系のイベントでの発表は昨年のJJUG 2019 Spring以来で緊張しますが、頑張ります!

諸注意

テストコードの書き方は話しません

セッションタイトル「テストエンジニアが教える テストコードを書き始める前に考えるべきテスト」で表されているように、私が話す内容はテストコードよりも前の話です。

テストコードの書き方の話はしませんので、そのような話を聞きたいと思っていた人は他のセッションに移ることをお勧めします。

ペアワークがあります

私の発表では、ただ聴講していただくだけではなく、隣の人とのペアワークがあります。

基本的にテストのことを何も知らなくても、何かしら話せるであろうお題を用意していますが、どうしても「隣の人と喋るのは無理!」という人がいましたら、他のセッションに移ることを強くお勧めします。

初めて私の発表を聞く人前提で進みます

上記にあるペアワークもそうですが、JJUG 2019 Springで私の発表を聞いたことがある人や今までに私の発表を聞いたことがある人は、同じネタが多くあるため、発表がつまらないかもしれません。

そのような方は、他のセッションに移ることを強くお勧めします。

(2020年2月13日更新)発表が終了しました!

発表資料を置いておきます。

speakerdeck.com

Agile Testing Fellowのメンバーになりました

先月末、Agile Testing Fellowのメンバーになりました。

Agile Testing Fellowとは

Agile Testing Fellowとは「実践アジャイルテスト テスターとアジャイルチームのための実践ガイド (IT Architects' Archiveソフトウェア開発の実践)」の作者であるLisaとJanetが設立したコミュニティです。

agiletestingfellow.com

まだ全世界で300名弱しかいませんが、Agile Testingについて、お互いに相談に乗る形で運営されているようです。

Agile Testing Fellowに入るためには

入会費を支払い、Agile Testingに関するテストをPassすることによってコミュニティの一員になることができます。

f:id:nihonbuson:20200203192129p:plain
証書の一部

まだ他に日本人がいないので、興味のある方はメンバーになってくれると個人的に嬉しいです。

そして、Agile Testing界隈をもっと盛り上げていきましょー!

「ドイツで行われたAgile Testing Days良かったよ!」と言いふらしてたら、ドイツにある運営事務局からサポートをもらえた話

はじめに

2019年11月3日〜8日にAgile Testing Daysが行われました。

https://agiletestingdays.com/

Agile Testing Daysとは、ドイツのポツダムで毎年11月に行われているAgileとテストがメインのカンファレンスです。

私は今年のAgile Testing Days2019に参加してきました。

本記事は、参加後の私の活動と、それに対する運営側のサポートについての話です。

目次

Agile Testing Days参加後の活動

活動1.参加報告会のイベント開催

Agile Testing Days参加後に、下記の3つのイベントで参加報告を行いました。

d-cube.connpass.com

wingarc1st-spqi.connpass.com

wacate.jp

特に、1つ目のイベント発表に向けて書いたスライドは、多くの方に閲覧してもらえてるようです。(スライドが180ページもあってすいません…)

speakerdeck.com

活動2.ワークショップ資料の日本語翻訳

Agile Testing Daysで参加したワークショップで、テスト戦略ハンドブックという素晴らしい資料を頂いたので、それを日本語訳しました。

詳しくは、下記の記事を見てください。

nihonbuson.hatenadiary.jp

運営側のサポート

運営側とのやりとり

参加報告会を3つやるよ!と話していたら、運営側からこんなDMを頂きました。

f:id:nihonbuson:20200127113309p:plain
イベント情報を教えてくれたら、ノベルティとか送るぜ!(超意訳)

その後、メールでやり取りを行いました。

f:id:nihonbuson:20200127112922p:plain
2つのイベントは開催日の関係で無理だけど、3つ目のイベント(WACATE)はノベルティを送るのに間に合いそうだぜ!(超意訳)

f:id:nihonbuson:20200127112900p:plain
日本にノベルティを配送するには費用がかかりすぎるから、ノベルティのデータを送るぜ!ノベルティの印刷費用は運営側が負担するぜ!(超意訳)

ノベルティ配布

そんなこんなで、WACATEのイベント内にてノベルティを配布できました。 WACATE参加者の方々に喜んでもらえたようで何よりです。

そして無事に…

WACATEでノベルティを配布できたことを報告し、先日無事に送金してもらえました!

f:id:nihonbuson:20200127113009p:plain
送金方法はpaypalでした*1

おわりに

ドイツと日本は物理的距離だとかなりありますが、このようなコラボが出来たのは非常に良かったです!

開催は2019年11月3日〜8日で既に2ヶ月以上経ちましたが、未だに色々と関われるイベントであり、本当に参加して良かったなと感じました!*2

次回もまた参加できると良いな…。

*1:早速、leanpubで海外の技術同人誌を買ってみました

*2:ちなみに完全に会社のお金で行きました。会社ありがとう!

Agile Testing Days 2019 で頂いた「テスト戦略ハンドブック」の日本語版を公開しました

はじめに

この記事は ソフトウェアテスト Advent Calendar 2019 の2日目の記事(代打)です。

目次

Agile Testing Daysとは何か?

11/3〜8にAgile Testing Daysが行われました。

agiletestingdays.com

Agile Testing Daysとは、ドイツのポツダムで毎年11月に行われているAgileとテストがメインのカンファレンスです。

私は今年のAgile Testing Days2019に参加してきました。

Agile Testing Daysで印象に残ったセッションの紹介スライド

会期中に行われるセッションの数は100を超えます。当然、すべてのセッションに参加することはできません。

自分が興味を持って参加できたセッションの中で、特に印象的だったセッションを紹介するスライドを作成しました!

speakerdeck.com

上記のスライドではセッション内容を中心に載せてますが、一方で会場の雰囲気もすごい良かったです。

会場の雰囲気については下記のツイートを見れば分かるかと思います。*1

twitter.com

テスト戦略ハンドブック

上記のスライドのp12〜p25で紹介している「Test Strategy Workshop」にて、「Test Strategy Handbook」という付録ファイルを貰いました。

そこで、この付録ファイルの日本語訳をして公開しても良いか講師に聞いたところ、OKと言われたので、公開します!

speakerdeck.com

ぜひ、参考にしてみてください!

おわりに

今回はAgile Testing Days2019を紹介しました。

Agile Testing Daysは毎年行なっており、次回も2020年11月8日〜13日に開催することが決まってます。

Agile Testing Daysは参加費(約30万円)+渡航費+宿泊費と、かなりの額が必要となりますが、行く価値は絶対にあると思うので、興味がある人は会社に申請をしてみてはいかがでしょうか?*2

agiletestingdays.com

*1:これは講演中の様子ではなく、会期中の夜に行われたパーティーの様子です

*2:私は完全に会社のお金で行かせて貰いました

WACATE2019冬でなぜ私は「ソフトウェアテストの7原則」のセッションを行ったのか #WACATE

はじめに

この記事は ソフトウェアテスト Advent Calendar 2019 の16日目の記事です。

目次

WACATE2019冬

12/14,15にWACATE2019冬が行われました。

wacate.jp

WACATEとは、1泊2日で行うテストに関するワークショップです。

私はこのWACATEの実行委員をしています。

今回はほぼ満員の参加者とともに、走り抜けることができました。

私の担当セッション

今回、私は「業務でも活用できるソフトウェアテストの7原則」と「Agile Testing Days 2019 参加レポート」の2セッションを担当しました。

本記事では、その中でも「業務でも活用できるソフトウェアテストの7原則」を行うことにした背景をお伝えします。

なぜ私が「ソフトウェアテストの7原則」のセッションを行ったのか

きっかけは2つあります。

きっかけ1:私がWACATE参加し始めた頃の思い出から

私がWACATE初参加したのは、2015年の夏でした。

私はJSTQB FLを2016年に取得しているので、初参加と2回目の頃はJSTQB FLを取得してませんでした。*1

そんな中、2回目のWACATEの参加時(WACATE2015 冬)、「ソフトウェアテストの7原則」がWACATE内で紹介されました。

その時の↓のツイートがとても印象に残ってます。

と、この頃に明確に思い始め、そこからJSTQBを勉強した覚えがあります。

きっかけ2:ソフトウェアテストの7原則のことを書いたら、意外とニーズがありそうだと思えたから

私は7月ごろにこんな記事を書きました。

nihonbuson.hatenadiary.jp

この記事の反応が思いの外よく、ニーズがあるのだなと感じました。(以下は反応の一例)

そこで、こんな感じで事例を踏まえつつソフトウェアテストの7原則を伝えれば、きっと参加者はより理解してもらえるのでは?と思い、今回のセッションを行うことにしました。

セッション資料

以上のようなきっかけで作った資料はこちらになります。*2

speakerdeck.com

なお、公開用のセッション資料ではワーク題材を非公開としています。気になる方は、お近くのWACATE2019冬参加者に見せてもらってください。

おわりに

今回は私がWACATE 2019冬で行なった「ソフトウェアテストの7原則」セッションを行うに至るまでを紹介しました。

WACATEは半年に1回行なっており、次回も2020年6月に開催予定です。

もしもこの記事に興味を持って「WACATEに参加したい!」と思った方がいましたら、半年後にWACATEでお会いしましょう!

wacate.jp

*1:今回の参加者は初参加者も含め半数近くがJSTQBを取得していて「すごいなー」と感じてました。

*2:文字フォントが崩れてしまってるので、余裕があれば後で直す

テストレベルに「機能テスト」が入ると困る理由

はじめに

この記事は ソフトウェアテストの小ネタ Advent Calendar 2019 の3日目の記事です。

もはや、「小ネタ」という文量を遥かに超えてしまっている気もしますが、「機能テスト」という1つの単語に対しての小ネタということで…。*1

目次

この記事のきっかけ

こんな記事がありました

先日、テストレベルの種類*2として

  • 単体テスト…関数単位のプログラムのテスト
  • 結合テスト…プログラムを組み合わせて行うテスト
  • 機能テスト…結合したプログラムを使い、1つの機能として行うテスト
  • システムテスト…機能を統合したプログラムを検証するためのテスト
  • ユーザによるテスト…(特に細かい説明なし)

が羅列してあり、「システムテスト」の中身として

  • 回帰テスト
  • セキュリティテスト
  • 負荷テスト(性能テストを含む)

などが書いてある記事を見つけました。*3

これを開発者が話していたので、思わず「テストについては様々な側面で分類することができる」と言った上で、テストレベルとテストタイプの説明をしました。

テストレベル

JSTQBでは「テストレベルは、系統的にまとめ、マネジメントしていくテストの活動のグループである。」と記載されています。*4

また、設計工程に合わせてテストレベルを設定すると分かりやすいとは思います。

ここではJaSST'18 Kyushuでの池田暁さんの資料から図を拝借します。

f:id:nihonbuson:20191129112449p:plain
V字モデルとテストレベル

JSTQBではテストレベルを下記の4つとしています。

テストタイプ

JSTQBでは「特定のテストの目的から見たソフトウェアシステムの特性をテストするための活動を束ねたものである。」と記載されています。*5

有名なものとしては品質特性があります。*6ただし、盲目的にここに乗っている品質特性を当てはめるのではなく、自分たちの製品に必要なものは何か考えることが必要です。

f:id:nihonbuson:20191129125328p:plain
品質特性(JIS X 25010より)

なお、ここに書かれているもののうち、機能適合性を「機能性」、それ以外の部分を「非機能性」と呼んだりします。また、機能性をテストすることを「機能テスト」と呼んだりもします。

素朴な質問

テストレベルとテストタイプの説明をしたところで、QA歴の浅い人から興味深い質問をもらいました。

f:id:nihonbuson:20191202114734p:plain
素朴な疑問

それに対し、様々な知見を元にした回答を複数人で行なったのですが、せっかく良い話なので、ブログにして公開することにしました。*7

「機能テスト」がテストレベルに入っていることによる弊害

さて本題です。どうして、「機能テスト」がテストレベルに入っていると困るのでしょうか?

理由1. 複数人の間で認識齟齬が発生してしまうため

機能テストをテストレベルに入れてしまうと、「機能テスト」と呼んだ時、テストレベルの1つのことを言っているのか、それとも機能性のテストのことを呼んでいるのか混乱します。そして、認識齟齬にも繋がるリスクがあります。

例えば、下記のような会話が発生するかもしれません。

A「機能テストをやっといて」

B「はーい(単体テストレベルの機能性に対するテストを実施)」

A「なんだよ。機能テストをやってないじゃないか(結合したプログラムをテストしてもらう考えだった)」

このような認識齟齬が発生しないためにも、JSTQBで書かれているような内容で進めたいと個人的には考えています。*8

理由2. 不足や重複が確認しづらいため

例えば、「単体テスト、統合テスト、機能テストをします」と言われたとします。

すると、ここでの例は下記のどちらなのか分かりづらくなります。

  • 「システム全体の機能面は機能テストでテストする」と伝えようとしている
  • 単体テスト、統合テストとは別に、機能面の単体部分などをテストする」と伝えている(システムテストが抜け漏れている)

つまり、この例の場合、システムテストレベルは行われるかどうか分からない」という状況が生まれています。

このように、不足しているテストレベルやテストタイプを確認しやすくするためにも、JSTQBなどを使って共通理解をしたいと考えています。*9

理由3. テストできるはずの粒度・タイミングでのテストができるように見えなくなってしまうため

今回の例だと、「機能面のテスト(テストタイプの「機能性テスト」)を実施するには、コンポーネントテストでもシステムテストでもできる」ということが示しづらくなります。

元記事だと「単体テスト結合テスト、機能テスト、システムテスト、ユーザーによるテスト」と書いており、あたかも機能面のテストは単体テストレベルや結合テストレベルでは行わないように見えてしまうからです。

別の例として性能テストがあります。元記事では、性能テストをシステムテストで行うものの1つとして書いています。

しかし、システムテストでのみ性能テストを行うかというと、そうではありません。例えば、SQL単体での性能を測定する場面もあるはずです。この場合、単体テストレベルで性能テストをやっていることが分かります。

これを「性能テストはシステムテストレベルで行うべきだ」という考え方になってしまうと、後行程での不具合発見に繋がることになります。

なお、JSTQBではできるだけ前行程での確認を推奨しています。

本節では、全テストタイプにおける各テストレベルの適用例を示したが、すべてのソフトウェアに対して、各テストレベルで示した全テストタイプを適用する必要はない。

ただし、各テストレベルで適用可能なテストタイプを行うことが重要である。

中でもテストタイプが必要となる最も早いテストレベルで行うことは重要である。

なので、テストにおいてはテストレベルとテストタイプの掛け合わせでテストの対象を考えることが多いです。

(テストタイプだと捉えることもできてしまう)機能テストをテストレベルに入れてしまうと、「テストレベルとテストタイプの掛け合わせ」の表現が難しくなってしまうでしょう。

さらに発展した話

テストコンテナ

「テストレベル・テストタイプを掛け合わせる」という話をテスト設計コンテストチュートリアル(U30)では、テストコンテナを用いて図示しています。

f:id:nihonbuson:20191129194913p:plain
テストコンテナ図

こうすることにより、「困る理由2. 不足や重複が確認しづらいため」を解消することを手助けできます。

テスト計画

「テストレベル・テストタイプを掛け合わせる」という話には、テスト計画にも繋がります。

詳しくはWACATE 2019夏の資料を見ると分かりやすいかもしれません。

f:id:nihonbuson:20191129194647p:plain
テスト計画におけるテストレベルとテストタイプ

テスト計画時にテストレベルとテストタイプを意識することで、どのレベルでどのような特性のテストを行うのか示すことができます。

これはテスト計画とは名ばかりのスケジュール表とは違い、それぞれのタイミングでの責務が見えてきます。

また、開発とも合意を取ることで、「どの部分を開発者自身でテストするのか」もハッキリさせることができます。

テスコンチュートリアル(OPENクラス)にて…

と、ここまで書いてたら、昨日開催された『テスト設計コンテスト'20 チュートリアル』にて、講師のにしさんに、

「まあ、機能テストがテストレベルなのかテストタイプなのか、どっちでもいいんじゃね?」

と、言われてしまいました…w

おわりに

今回は、「機能テスト」という言葉をきっかけとして、テストコンテナやテスト計画についても書いていきました。

自分もまさかこんなところまで議論するとは思わなかったですが、ここまで議論ができたのも、周りの環境が良いからなんだろうなぁ…としみじみ感じてます。

最後に、テストレベルとテストタイプの説明を聞いたQA歴の浅い人と開発者の感想を載せて終わりとします。

QA歴の浅い人の感想(Slackのスクショ)

f:id:nihonbuson:20191129195747p:plain
感想

開発者の感想

「今まで自分たちは、『如何にテストについてなんとなくでやってきたのか』ということを実感しました。

こういう風にして、どんどん皆さんがテストに興味を持って、より深く考えてくれると良いですね。

*1:本当は、「マツコの知らないテスト勉強会の世界(2019年版)」をやろうと思ったんだが、昨年とあまり代わり映えしないなぁ…というのと、どうしてもこのネタを公開したいと思ったので、急遽テーマを変更しました。

*2:元記事では「テストの種類」と書いてありましたが、中身はテストレベルを意識したものだったため、本記事では問題点を分かりやすくするために「テストレベルの種類」と表記します

*3:別に晒すことが本記事の目的ではないので、URLは載せません。ただ、それが400以上の好意的反応を貰っているのは「なんだかなぁ…」とも感じてしまいます

*4:JSTQB FLのシラバスより

*5:JSTQB FLのシラバスより

*6:IPAの資料より拝借

*7:ここまでが前置き

*8:別に「JSTQBが正しい」と言いたいわけではなく、JSTQBという共通言語にしやすいものがあるのでそれに従うと楽だよねというだけです。開発チーム内で「結合したプログラムをテストする=機能テスト」という考えが統一できているならば、使っても良いとは思います。

*9:もちろん、開発チーム内で用語の定義が統一されており、その理解を皆がしているならば使っても良いとは思います。

前回のJaSST Reviewってどんな感じだったのか紹介(パネルディスカッション編) #JaSSTReview

はじめに

2018年12月8日に、ソフトウェアレビューのシンポジウムである「JaSST Review」が東京で初開催されました。本記事はJaSST Review'18でどのようなパネルディスカッションになったのかを紹介します。

パネルディスカッション

講演いただいた白水様、及部様、鈴木様をパネラーとし、私がモデレータになってディスカッションを行いました。 ディスカッション内容は、私が予め用意したテーマの他、会場の皆さんの質問に回答していただく形をとりました。

その中で印象的な話を紹介します。

レビューでの深掘り対象を見つける手がかりは人である

レビュアーがレビュー対象物を見るにあたって、満遍なく対象物を見るという方法が取られがちです。 しかし、その人がどのような背景で書いているのかこそが大切なことです。

例えば、発表者の自信がなさそうな部分を見つけて深掘りします。自信がなさそうな部分は、曖昧な言葉になり、きちんと思考して書かれていないことが多いからです。特に、「なんとなく」や「◯◯さんが言ったから」という発言が出てきた場合は、書いた人自身が思考できていない可能性が高いです。 また逆に、自信満々になっている部分も深掘りすることがあります。これは、自信満々な部分ほど、詳しい内容を省略してしまっている可能性が高いからです。

時間軸を意識する

時間軸を意識してレビューをするという話が、すべての登壇者から出てきました。 それは、現時点では良くても、将来気になる点がよく出てくるからです。

特にレビューイにとっては、今を解決する傾向になりがちだと思うため、時間軸を意識するやり方は有効だと私も感じました。

レビュー中に「指摘」は行わない

レビューというと、「指摘を行う会」と捉えられがちです。 しかし、登壇者は「指摘する」ということはあまりなく、「質問する」ことで、中身を深掘りすることが多いようです。

質問することで、レビュー対象物を見るだけでは分からない、レビューイの思考を引き出すことができます。 そして、足りない部分や誤っている部分があれば、その部分を話し合うという形を取ります。

レビューをどこまで行うか

レビューの終了条件については、会場の皆さんにとって悩みの種だったようです。これもパネルディスカッションの中で話し合いました。

レビューは時間をかければかけるほどより良いものが出てきます。しかし時間は有限です。なので、「費やした時間の中でどこまで到達したか」で判断します。 チェックリストを満たしたかどうかなどよりも、参加者全員が安心、納得が得られるかこそが大事です。

おわりに

本記事ではパネルディスカッションの一部を紹介しました。 今回登壇していただいたお三方も含めて、「レビューの専門家」はほとんど存在しません。

この文章をご覧になっている方は、普段の業務の中で何らかのレビューをされているのではないでしょうか。 業務の節目などにレビューの知見をお互いに共有したり、ディスカッションしたり、振り返ってみたりしてはいかがでしょうか。 JaSST Review'19への参加も、もちろんお待ちしております。

www.jasst.jp