Developers Summit 2020話題賞を受賞しました! #DevSumi

この度、Developers Summitデブサミ) 2020で話題賞を受賞しました!

f:id:nihonbuson:20200323180934p:plain

私を含めた各賞の受賞コメントについては、記事をご覧ください。

codezine.jp

t_wadaさん、安田さん、ryuzeeさん、川口さんという、そうそうたるメンバーと一緒に受賞という、ちょっと恐れ多い感じもありますが、大変嬉しいです。

上記の記事にある受賞コメントに書ききれなかった想いを書きます。

公募に当選

今回、私は公募で申し込んだ結果、発表が決まりました。

懇親会の時にそーだいさんから聞いたのですが、それなりの倍率で、選ぶ方もその中から全体のバランスなども考慮していたとお聞きしました。

今回の発表、そして話題賞の受賞は、そもそも公募の中から選ばれなければ実現しなかったことなので、選考委員の方には本当に感謝しかないです。

開催の判断

今回の発表はCOVID-19の影響で、運営の方々としては開催するかどうかの瀬戸際だったのだと推測します。

デブサミ 2020の2日目である2月14日に、国内での感染をしたと思われる事例が都内で発生しました。

もしも1週間遅くなっていたら、おそらく開催中止を判断していたことでしょう。

色々と感染対策の準備をした上での開催というのは、本当に難しい判断だったと思います。

もちろん、既に警戒していた人もいるはずで、当日来場しなかった人も多かったと思われます。

当日の様子から感じた「テスト」への関心の高さ

そんな中、多くの方に来ていただき大変ありがたかったです!

その結果として、満員+立ち見での講演となりました。どうやら入場制限もかかっていたらしいです。

こんなにも「テスト」について関心を持っている人が多いのだなと、すごい感じました。

また、t_wadaさんの「質とスピード」の講演と一緒に話題賞に選ばれたということも、品質やテストに興味を持つ人が多くいるのかなと感じているところです。

参加者のフィードバック

多くの方からアンケートによるフィードバックをいただきました。

ある程度、満足度が高いという結果も頂き、すごい嬉しかったです!*1

今回はデブサミ 2020のテーマ「ともにつくる」を意識した発表にしており、当日は聴講者の皆さんも「ともに」参加して、一緒に発表を作り上げました。

そのため、当日参加された皆さんは、後からスライドを見ただけの方々以上の満足度を得られたのではないかと思ってます。

また、ありがたいことに多くの方から感想を頂いたのですが、その中でも以下のような意見が多かったです。*2

  • 開発者では気付けない部分に気付けた。
  • テストの勉強をしたいと思えるようになった。
  • テストの印象が変わった。

特に、「印象が変わった」と言ってもらえたのは、それだけ発表が響いたということなので、すごい嬉しいですね。

もっと多くの人に届けたい!

ただ、先ほど書いた通り、入場制限がかかっていたとのことなので、おそらく聞きたかった人全員に向けてお伝えできなかった悔しさもあるのは事実です…。

なので、この「ともにつくる」発表を今からでも体験したい!という方は是非ご連絡ください! 企業・コミュニティ関係なく、この発表を沢山の方々に届けて、少しでもテストについて理解を深めてもらえたら幸いです!

参考までに、今回の発表資料を貼っておきます。

speakerdeck.com

今回は話題賞に選んでいただき本当にありがとうございました!

*1:ただ、今回のデブサミ2020の発表者はすごいメンバーばかりで、皆さん平均的に満足度が高い!

*2:アンケート結果はそのまま頂けたのですが、どこまで赤裸々に公開して良いのか分からず…。とりあえずざっくりと共通した意見を抜き出して、独自の文章を作成しました。

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

このブログでの告知が遅れましたが、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:もちろん、開発チーム内で用語の定義が統一されており、その理解を皆がしているならば使っても良いとは思います。