基調講演 ICT応用S&S製品の品質不良のリスクとSQuaREシリーズ 国際標準(及び翻訳JIS)-その歴史と概要 #JaSST '17 Tokyo

講演者

  • 東 基樹

標準化について

  • ソフトウェアの標準化には皆さんの生まれる前からやっている。
  • 経営工学の基本は作業の標準化。重要なのは品質

NECでの思い出

  • NECでは、コンピュータの添付品としてお客さんのところへ行ったりした。
  • 私が入った年に倍々ゲーム。
    • 教育なんてできない。
    • ひどいサポートになっていた。
    • 仲間を集めて勝手に作業標準を作った。
  • 色んな様式、紙に埋めていく形式、本にしたらいっぱい売れた。マシンも売れるようになった。
  • PC8000が出てきたら、コンピュータを使うのはみんなになった。
  • 全社的な品質を野放しにすると全社的にひどいことになるよ。
    • →上の人がサポートして、全社的にバックアップしてもらった。
  • 全社会議で品質が大事と訴えた
  • それまでのテストは「動けばいい」という考えだった。
  • 品質展開、品質モデルを通じ、品質研究会を開いて、体験論文発表会を開いたりしていた。
  • 国際的にも論文発表していたら、早稲田大学に呼ばれた。
  • ずっと製品の品質というのは気になっている。

製品の利害関係者について

  • 以前はせいぜい数千ステップだったが、今ではメガ単位
  • 1ページの文章を書いたら1,2個のミスがあるのは当たり前。なので、誤りが無い製品というのはあり得ない。
  • SQueREでは利害関係者を重視していて、直接ユーザーに対する部分だけではない。
  • 直接ユーザーと間接ユーザーがいる。
    • 発表スライドでいえば、スライドを作る人が直接ユーザーに対して、そのスライドを見た人やこのスライドを広める人は間接ユーザーとなる。
  • ユーザーに対する品質も、どれも一緒とは言えない。
    • 中心ラインを踏むとアラームが鳴るのは良い面と悪い面がある
      • 良い面…中心線を超える
      • 悪い面…駐車中の車を抜かす
  • UNIXでプログラムを作るプログラマはカーソルキーが使えなかった。しかし、その状態が良いんです。実際、能率的に作業していた。しかし一般人は同じようにはできない。

SQueREの話

  • 国際的なユーザビリティのコミュニティがあるが、何にでも適用できると言い張る
    • 信頼性の低いものは…応答速度の遅いものは…どれもユーザビリティに直結する。拡大解釈して品質を飲み込もうとする。
  • SQueREは違う。エンドユーザーだけでなく、様々なステークホルダーのことを考えている。
  • SQuaREは「要求を満足する」だけでなく、暗黙的なニーズも範疇にしている。後は「当たり前品質」とか。例えば、寿司・刺し身には醤油が当たり前のように出てくる。サラダを頼むとドレッシングを聞かれる。「とりあえずビール」というと、銘柄を聞かれる。ステーキを頼むと焼き方を聞かれる。(フランスの場合はシェフに失礼。なんでも要求すれば良いわけではない。)

  • 良いものは設計から始まる。機能要求は書いてあることがあるが、品質要求が書いていないことが多い。

  • プルダウンの方が、ポップアップの方が…というのは品質ではあるが、最終的にはソフトウェアの機能要求に返ってくる。

  • 最初の品質モデルはKJ法。会議室の壁一面に「とりあえず品質の用語を張り出せ」「それをグループ化しろ」で出来た。

  • 「メトリクス」という言葉は今では使えない。カナダのオタワが猛反発した。メートル法ではないのでやめて欲しいという要求があった。

質問

なぜセキュリティは出てきたがセーフティは出てこないのか?

  • セキュリティはシステムの特性だが、セーフティは特性ではない。システムの結果として出て来るだけであり、利用時の品質で「リスク回避」にまとめている。

利用時の品質のところで混乱した。テストレベルの受け入れテストの部分と被っている部分がある。どういう段階で誰が使えば良いのか。出荷前の品質に携わっていた自分は使おうと思っていたが、出荷後の話も出ていた。

  • 利用時の品質特性と製品の品質特性の関連図を作っている。
  • 例えば、機能が不十分、使いづらい、保守性が悪い、これらを副特性のどれに関連するかというところから紐付けている。
  • しかし製品によって異なるので、一般的なものとしては出せない。
  • 実際にこれは今回のJaSSTのワークショップで体験してもらう。
  • 最終的には、製品に関わる人が体験してもらわないと難しい。

JaSST'16 Tohokuに参加してVSTePについて体験してきた #JaSSTtohoku #JaSST

告知ページ

JaSSTソフトウェアテストシンポジウム-JaSST'16 Tohoku

当日のツイートまとめ

togetter.com

基調講演「VSTePによるソフトウェアテストの開発」

VSTePの対象組織

  • 「このままでいいや、とどこかで思っている組織」はVSTePに取り組み価値が無い組織
    • 標準に沿っているから良いやと考えている組織
    • コンサルに全ておまかせしちゃえば大丈夫と考えている組織
    • 既に社内標準がしっかりしていて変えづらい状況の組織
      • しっかりしていること自体は良いことなので、わざわざ変える必要がない
  • 「このままじゃダメだ、と強く思っている組織」はVSTePに取り組み価値がある組織
    • 「仕様が無いので何をテストすれば良いか分からないからヤバい」と思っている組織
    • 「社内標準は既にあるけど、意味が無い」と感じている組織

VSTePとは

  • テスト観点を基盤としたテスト開発のための記法とテスト開発プロセス
  • 参考資料
  • テスト観点図、テストコンテナ図、テストフレームをつくることで、質の高いテストケースやテスト手順を作成する方法
  • 網羅性については考えていない
    • この作業をやって出てこなかった内容は、今の自分(チーム)の限界ということであり、漏れていたと把握できる状況にすることが大事

VSTePの構成

テスト観点図
  • テストケースごとのテストの意図を示したもの
  • テストケースの一部を抽象化したものになる
テストコンテナ図
  • テストレベルやテストタイプ、テストサイクルをまとめたもの
テストフレームとは
  • テストケースの雛形となるもの

VSTePのワークショップ

VSTePの進め方

  1. 仕様書を読む

    • どんな動きなのか把握するだけ
  2. 仕様書を読んだ感想や気になったところを一人ずつ喋ってもらう

    • あくまでもキッカケ作りなので、ここで色々議論する必要はない
  3. 付箋に観点となりそうなものを書き出す

    • これ以降は仕様書を閉じる!
    • 皆に聞こえるように喋りながら付箋に書く
      • 付箋に書いた内容が、別の内容を付箋に書くキッカケになるかもしれないため
    • 付箋に書いたものに対して詳しく聞いたり、ツッコミを入れるようなことはしない
    • 「これはテストする段階で行うものではなく、開発者が気にすべきところだから…」とか考えずに、思ったことはどんどん書く
  4. 書きだした付箋を見て、似たような内容(似たような意図で書かれたもの)をグルーピングする

    • その時、曖昧な言葉で記載していた場合は、「どういう意図で記載したのか」を書いた人に質問する
      • もしも、自分と認識が違った場合は、違う認識の点も付箋に貼る
        • 実際にワークショップ内であった例として、「メモリ」と書いた付箋に対し、「メモリ使用量」というパフォーマンス観点と「メモリ不足」というエラーの原因についての観点が出てきた。これらから、「メモリ」という付箋は捨て、「メモリ使用量」と「メモリ不足」の付箋を加えた。
      • 全員が同じ意図と理解するまで議論する。
        • 全員が理解し共有できていることが大事。
  5. グルーピングした付箋について、それらをまとめた(抽象化した)言葉を付け、ツリーを作成する。(テスト観点図の作成)

    • 例えば、「パスワード付きファイル」や「圧縮形式ではないファイル」については、「解凍するファイルの種類」とまとめた。
      • 先ほどの「メモリ不足」や「メモリ使用量」を「メモリ」とまとめることはしない。なぜならば、それぞれで意図が異なっているからである。
        • これを「メモリ」とまとめてしまうと、文字を見てまとめただけであり、綺麗なものにしようとしているに過ぎない(パット見て綺麗にすることが目的ではない)
    • 当日作成したテスト観点図 f:id:nihonbuson:20160524214341j:plain

      f:id:nihonbuson:20160524214419j:plain

      f:id:nihonbuson:20160524214449j:plain

    • 当日作成したテスト観点図をマインドマップで描き直したもの f:id:nihonbuson:20160523221445p:plain

  6. テスト観点図のトップノード(一番上の抽象化した言葉)を用いて、テストコンテナを作成する。

  7. テストコンテナを時系列で並べる
    • 当日作成したテストコンテナ図 f:id:nihonbuson:20160524214546j:plain

      f:id:nihonbuson:20160524214620j:plain

      f:id:nihonbuson:20160524214640j:plain

      f:id:nihonbuson:20160524214717j:plain

      f:id:nihonbuson:20160524214803j:plain

      f:id:nihonbuson:20160524214834j:plain

      f:id:nihonbuson:20160524214901j:plain

    • 当日作成したテストコンテナ図を描き直したもの f:id:nihonbuson:20160523221513p:plain

追加課題
  • このワークショップの最後に、「もしも圧縮機能を入れたら」という話になった。
  • これについては、「このコンテナの部分は再利用できるよね」「この観点図の部分は付箋が追加されるよね」と、一から作り直す必要もなく、メンテナンスしやすい形になっていることが実感できた。

復習

  • シンポジウムの翌日、復習を兼ねて、当日と違うグループの人と同じ課題(+Lhaca)でVSTePを行った。

成果物

  • 付箋にどんどん記載した時点の画像 f:id:nihonbuson:20160523221534j:plain

  • グルーピングした時点の画像

    • 一部ツリー化しており、この点は失敗している f:id:nihonbuson:20160523221612j:plain
前日との比較
  • 前日と違う観点が出てきた
  • しかしトップノードは似たようなものになることが多かった。
  • 途中で作業を抜ける人がいる場合、書いた意図が分からない付箋が存在することになった。
    • その際は、思い切ってその付箋を無くすことにした。
      • その付箋は抜けた人がいたからこそ出てくる項目であり、抜けたあとのチームの限界を超えているため
  • 復習会では、付箋を動かしやすい人と動かしにくい人が発生していたため、グルーピングがうまく行かなかった

感想

  • 事前の予習では、どのように観点図を作成すれば良いのか考えることが多かったが、実際に参加してみて、深く考えることなく(抽象度を気にすること無く)どんどん書いていけば良いと分かった。
  • 始める前は仕様書を見なくて書けるのかと疑問だったが、実際やってみると仕様書に書かれていないことがどんどん出てきた。

Git運用のコツについて発表してきた&発表時の補足 #Naite

先週の日曜日(4/24)にGitの運用について発表しました。

  • 告知ページ

nagasaki-it-engineers.connpass.com

  • 発表スライド

speakerdeck.com

はじめに ~この発表を行うきっかけ~

なぜGit運用という発表を行うことにしたか。

それはJJUGナイトセミナーの『Git入門』という回に行ってきたことがきっかけでした。

そこでは、よこなさんが分かりやすいGitの使い方を発表し、しょぼちむさんがGitを運用していくための方法を発表していました。

その時の参加記事はこれ↓

nihonbuson.hatenadiary.jp

これに参加した時に以下のようなことを思いました。

  • そもそものフローを知る機会(発表資料)ってなかなか無いのでは?
  • 運用をどうしてもマンパワーで頑張る感があったので、それをシステム的に何とかしたい!

ということで、これらについて今回発表しました。

特に、GitHubフロー及びGitフローについては時系列できちんとお伝えできたのでは?と感じてます。

スライドの補足

とはいえ、発表では、スライドに載せていないような補足説明が多かったので、それをお伝えしていきます。

5ページ

f:id:nihonbuson:20160502135511p:plain

Gitのコマンド的な話は、今回の発表内容の本筋とは違うので、全てよこなさんのスライドを参考にしてもらうことにしました。

12ページ

f:id:nihonbuson:20160506124737p:plain

当日、質問もあったところですが、ここで主張しているSVNとGitの違いはどちらかと言うとローカル上の話です。

例えば、Jenkinsで対象のブランチを変更したい場合、SVNもGitもどちらともcheckoutを行うと思います。

ただしその際に、SVNでは新たにソースを取りに行く必要があります。

一方Gitは切り替えだけで済みます。

(ここで「リポジトリの複製」という表現を使ったのは完全に間違いでしたね…)

24ページ

f:id:nihonbuson:20160502135529p:plain

ここでの(今回のスライドでの)点線は、リモート上からローカル上にpullしたりpushしたりする部分を表しています。 本当はmasterだって一緒に持ってくるだろうし、正確な図ではないことは百も承知ですが、ここではこのような表記にしています。

28ページ

f:id:nihonbuson:20160502135557p:plain

この図は、「あくまでもローカルとやり取りして、ソースの修正とかが入ってくるのはそれぞれのtopicブランチであり、masterには直接入ることが無いよ」ということを示したかったんです。

43ページ

f:id:nihonbuson:20160502135615p:plain

休憩として、小学校の時に使ったであろう筆洗バケツの話をしました。

ただ、当日の参加者は意外と使っていない(覚えていない)ようで、ピンときてもらえませんでした…。

これは「洗い水やすすぎ水という部分があるから、水を含ませるために使う付け水は、汚れの殆ど無い状態になるよ」と言いたかったんです。

後ほどのスライドに出てくる「topicブランチからのプルリクエストなどの仕組みによって、masterが綺麗な状態に保たれてすぐに適用可能なものになっている」と結びつけるつもりでした。

46ページ

f:id:nihonbuson:20160502135645p:plain

SVNなどのプルリクエストという仕組みが無いところでは、きっとWinMergeやレビューボードを使って頑張っているのだろうなと思っています。

ただし、それらはローカル上で他の人に確認してもらうか、trunk(Gitでいうmaster)にコミットされた後にレビューしてもらうので、非常にコードの状態がよろしくないと思っています。

49ページ

f:id:nihonbuson:20160502135705p:plain

このチケット駆動開発のブランチでの仕組みというのは、以下のようなメリットが生まれます。

  • 本当にその案件の部分しか変更しないようになる
  • 案件に基づいた部分のレビューがしやすい
  • 案件を次サイクルに持ち越した場合に、SVNの時に発生していたような切り戻し作業を行わなくて済む

62ページ

f:id:nihonbuson:20160502135728p:plain

上記でも書いた、チケット駆動開発を確実に行うために、チケット番号が入ったブランチ名にしているかをhookで掴んでチェックするような仕組みを取り入れるべきでしょう。

そうしないと、「ブランチ名をチケット番号にして!」というアナウンスを新しい人が来たり、間違いが発生する度に伝えることになり、教育コストが高くなります。

参考文献

  • slideshareならリンクが貼れて、直接スライドから該当ページに飛べるのですが、speakerdeckではその機能が無いようなので、ここでもリンクを貼っておきます。
    • 本当はslideshareにしたかったけど、フォントの問題でスライドがそのまま反映されないみたいなので、なくなくspeakerdeckへ( ;∀;)

Git-scm

https://git-scm.com

A successful Git branching model

nvie.com

GitHub Flow 図解

qiita.com

git-flow cheatsheet

git-flow cheatsheet

Gitはじめの一歩

www.slideshare.net

一休.comにおけるデプロイフローと自動化

speakerdeck.com

水彩絵の具の使い方

educe-web.craypas.co.jp

"Luca, フォース(force)を使え" - Jenkins開発者が1ヶ月分のGitHubコミットを消失

www.infoq.com

さいごに ~反省内容~

発表時間を余らせてしまったのは反省…。というか、発表終了の時間を間違えてました。

あと、上記でも書きましたが、12ページの「リポジトリの複製」という記載は誤解を招く記述でした。

まあ、あとは概ね発表で伝えたかった内容をほとんど伝えられたので良かったです。

デブサミ2016再演『今日の習慣が明日をつくる~よりよい技術者を目指して~』参加レポート #devsumi

発表スライド

docs.google.com

概要

  • 習慣的に行っている訓練のうち、明文化できるものを伝える
  • 言っても問題が無いもの
  • 技術者の週間を見直すきっかけを
  • 1年で成長することはない。4,5年かけて成長する

良い技術者とは

  • 読む力
  • 書く力
    • コードを書けるのは評価されない
    • ドキュメントを書くのも重要
  • 捨てる力
    • 自分や組織が作ったものを捨てる、再実装する

読む力

  • 仕様を理解する
  • 仕様を類推する
    • 「地球上で動作する」なんて前提条件は書かない
    • 今暗黙のものが未来永劫変わらないとは限らない
  • コードを理解する
    • ゴミのようなコードが数十万行ある中で、新機能を探したりとか
    • 3個先の呼び出し状態を暗記した状態とか
  • コードを評価する
    • 設計や品質の妥当性を検証する
    • 沢山読めても、良い物が分からなければ読む力があるとはいえない

書く力

  • 仕様に対して妥当なアルゴリズムを実装できる能力
  • 書いたコードの制約事項を明らかにする
    • CPU heavyなのかメモリheavyなのか
    • 技量が足りないエンジニアは、1種類の書き方しか分からなかったりする
  • 書いたコードの最低限の品質をテストによって保証する納涼
    • QAエンジニアは品質に対して特殊な人達

捨てる力

  • 現在のコードを作りなおす能力
  • 厳密に再定義する能力
  • 様々な方法で表現する能力
    • 多種多様な言語とか
  • 自分のコードは捨てられるはず

良い技術者になる方法

  • 仕様書とコードを大量に書いて読んで捨てる

標準化された仕様書

  • 読んでおけば網羅性が増える
    • ISOとかIEEEとかIETCとか
    • JavaならJEPとかJCPとか
  • 高度に整備された知見から都合の良い部分だけ拾うため
    • 1から作るより簡単
  • 原理原則を理解するため
    • 何となく動かないから頑張るのではなく、仕様を確認する
    • 仕様通りだけど動きが気に入らないというのはあまり良くない
  • アプリケーションやミドルウェアが正しく動いているかを検証するため

まずはHTMLから

  • W3CWHATWGの仕様書を確認する
    • ググった最初のページを参考にするとか止めよう

RFC

  • RFC2119は要求を表す言い回しについて理解する

HTTP1.1

  • RFC7231を開始点にする
  • 最初は流し読みしてボリューム感を掴む
  • 関連のRFCのポインタがいっぱいあるのでオススメ

JSR

IEEE

  • IEEE754-2008
    • 浮動小数点演算に関する仕様
    • 如何に不安定か分かる
    • 仕様書が2万円ぐらいかかる
      • 会社の金で買いましょう

網羅性が気になったらISO

  • ISO12207
    • ソフトウェアのライフサイクル
    • 自分がやったことと全体との違いが分かる
  • ISO90003

仕様書を読もう

  • 仕様書によって決まるべき
  • 誰かのフィーリングではなく

コードを書こう

  • 大量の良いコードがある
    • 個人のやってみたみたいな悪いコードもある
    • Gitみたいな巨大なプロジェクトの悪いコードもある
  • 貢献の機会がある
    • 個人のリポジトリ
    • 小さいライブラリのコミュニティ
    • 大きいライブラリのコミュニティ

まずは毎日ログイン

  • Trending repositoriesを見よう
  • 言語のトレンドとかを見るだけで良い
  • 惰性で見れるように

Github以外の情報源

  • Tech Blog
    • AWS(Security)
      • Linuxのことはだいたい分かる
  • VOXXED

毎日30分コードを眺めよう

  • トレンドに上がっていれば食わず嫌いせずに眺めてみよう
  • ネストが深いけど、Goなので深くなるし、規則性がある

なぜコードを眺めるのか

  • 恐れを減らすため
  • デジャブ感のあるものは挫折しづらい
  • 良い処理構造(ネストが深いとか)はあまり言語に関係ない

  • モチベーション無しにコードを見られるようになろう

  • 集中しないと読めないとか無いように

リポジトリの選び方

  • 得意な言語のリポジトリ
  • リポジトリの説明が分かりやすい
  • READMEがしっかり書かれてる
    • ビルド方法が書いてないものは読むに値しない
  • 基本的な使い方が書いてある
  • 半年以内にコミットがある
  • CI(TravisCI)とかで成功が維持されているもの

コードの読み始め方

  • 依存ライブラリを確認
    • 依存ライブラリで知らないものはそっちを優先した方が良いかも
  • ビルド環境構築
    • Windowsだとビルド環境辛い
    • 色んなことが分かる
      • 如何にWindowsがクソかとか
  • Unitテストを実行する
    • Windowsのみ動かないことも
  • エディタやIDEは慣れたものを
    • コードとエディタ同時に新しいものをするのは良くない

コードの読み方

  • 全部のコードを何度も眺める
    • 20000ステップを30分ぐらいで読めるようになる
  • 外部との境界面となる場所から読む
  • 仮説と検証を繰り返しながら読む
    • 関数名から動く内容を想定する
      • rubyは関数名をガンガン変える
      • Javaは関数名が長くなりがち
      • Hasskellは数学的に完璧な名前を付けたがる
  • 抽象度の高い部分を優先して理解する
    • Javaだったらインタフェースとか
  • 難しい部分は後回し
  • コードが荒れているならgit blameすると良い

    • 色んな人が理由あって沢山触っているはず
  • コードを高速に読もう

コードを書く習慣

  • 規模のある組織においてはミドルマネジメントは重要な仕事
    • 100人ぐらいいて、ミドルマネジメントがいなくて好き勝手書いている企業はブラックになりがち

一人砂場プロジェクト

  • しがらみの無い自由を味わうため
  • 自身の能力を客観的に評価するため
  • 自身の価値観を少しずつ変えるため
    • 企業内では味わえないもの
  • 価値の不明瞭なものを評価するため

一人砂場プロジェクトで何する?

ネタがない?

  • 短縮URLを生成する画面の無いサーバ

    • groovyだったら15行ぐらいで書ける
  • 小さい車輪を再発明しよう

毎日少しずつ書こう

  • 最初は毎日エディタを起動して新しいプラグイン入れるだけで良い

コードを捨てる体験をしよう

  • 捨てることでもっとうまくもっと早くやり直せる
  • 始まりから終わりまでやり直す
  • 良い技術者は同じ仕様で何度もやり直す人が多い

質問

  • ISOはPDFだけ?
  • 紙もある
  • 図書館にある?
  • ある
  • 解説本も良いけど、原文も読もう

デブサミ2016再演『ソフトウェアテストから見たクックパッドのモバイルアプリ開発』参加レポート #devsumi

発表スライド

www.slideshare.net

クックパッド

  • cookpad.com/en とか
  • 全世界で2000万人/月(日本を除く)
  • 日本は5755万人/月
  • アプリユーザーの方がアカウントを持っている人が多い
  • iOS
    • Essentials
      • Apple社が認めるマーク
  • Android
    • 2年前にネイティブアプリ化
    • 1年前に☆4,最近はトップデベロッパーに

2年前

  • 2014年の障害件数の多い部分はほとんどモバイルアプリ
  • 組織の変化
  • 関わり方の変化
  • テストエンジニアの価値の変化

品質

  • Quality is value to some person.
  • テストエンジニアが組織に属していても、人によって変わる
  • Quality is not equal test.
  • 品質活動は手段である

Developerとの関わり

  • 仮設→実行→検証

Userとの関わり

  • ユーザーから挙がってきた声を事業部に結ぶ

2年前にあったこと

  • 定着したWeb開発のスタイル
  • サービス開発と基盤/インフラの人達の区分
  • コンウェイの法則

2014年

組織づくり

  • サービス開発は縦組織に対して、インフラ・デザイナは横串を通していた
  • さらにモバイルファースト室を横串を作った

仕組みづくり

  • プロセス作り
    • リズムを作る
  • リリースマネージャ
  • ブランチ戦略と欠陥管理

振り返りと改善の習慣化

  • 振り返りを2週間ごとに

テスト関係の効率化

  • 手順、期待結果、分類
    • これで十分なのか分からない
  • 普通の設計と同じように、場合によって組み合わせが変わる
  • 実行の自動化
  • 項目の分類
  • 開発時の心的負担の軽減
  • 最後の砦
  • 開発とテストの分離ではなく、統合

Try

  • Tryと失敗を繰り返している

2015年

  • まだクラッシュ数は多いが、モバイルアプリの開発者がとても多くなっていった

組織

  • サービスそれぞれにモバイル基盤チームが関わるように
  • 2,3週間で10人ぐらいがコミットする
  • デザイナを大きく巻き込んだ
    • デザイナが体験の設計と責任を読む
      • ラベルを変更するとBOTが反応するようにした
  • PR毎、masterマージ毎、リリース毎で行うテスト内容に変化をつけた

2016年

  • フィードバック・ループの深化

気をつけていたもの

  • 関係性
    • 疎遠になるものは無くす
      • 飲み、振り返り、雑談の機会を増やすなど
  • 低い意識で続けることができる環境の構築

悩み

  • 経験ベースとルール/知識ベースの知見をどのような比重をかけて障害を予防していくか
    • 経験ベースだと不具合を起こしやすいが、修正はしっかりできる
    • ルール/知識ベースの知見は修正がしっかりできない

テストエンジニアとして聞かれること

  • モチベーション
    • Qualityに対して集中することができる職である
    • テストはオペレーターではなく、ボトルネックを探すために幅広い知識が必要

施策を進める上で大事だったことは

  • 尊敬、すごい、などを集める
    • テストエンジニアなのにコードでかけるとか

コーディングスキルは?

  • システムの構成要素の理解の方が重要

質問

  • 手動テストはどのようなことをやっているか?
  • バイスの互換性はどうやっているのか?
  • マニュアルテストは今もやっている
  • 2014年〜2015年はAndroidは2系
  • 外部起因での不具合は限られる
    • カメラを使っているなど
    • こういうのは外部に委託した
  • 2015年からは4系のみをサポートしたので楽になった

デブサミ2016再演『アジャイル開発(GINZA)』参加レポート #devsumi

発表スライド

http://niconare.nicovideo.jp/watch/kn1140niconare.nicovideo.jp

今日覚えて帰ってほしいこと

  • Practice Slaves kill Development
    • Scrum Slaves
      • スクラムを守ることがプロジェクト成功の全て」というがんじがらめ

ZERO

アジャイルの原点

  • アジャイルソフトウェア開発宣言
  • アジャイルソフトウェア12の原則

    • 開発は短い期間でやりましょう
    • 動くソフトウェアを中心でコミットメントを取っていきましょう
    • 関係者とのコミュニケーション
    • やり方を最適化
  • 「こうしろ!」なんて出てこない!

    • 朝会しましょうとか
    • KPTしましょうとか
  • Do Agile right

    • 正しいAgileってなんなの?
    • 信じることで救われた"気持ち"になる

アジャイルを取り巻く環境

  • 沢山のツール
  • 沢山の手法
  • 高価な認証制度
  • ラクティスの盲信
  • 学術的アプローチをする人が増えたなぁ…
  • 経験論的な話がなくなってきた
  • Agile is Dead

  • 実際、プラクティスを盲信するあまり、うまく行ってないプロダクト群がニコニコにもある

  • GINZAでは新Versionを出さず、直すフェーズになっている

Q

  • ZEROが出た2012/05で不評だったので2012/10に新Versionをすぐに出した

進むために

  • メトリクスをとって現在位置と目的地を知る
  • 目的地に迎えれば、方法が変わっても良い

現在位置を知る

  • これまで何をしてきた?
  • いま何をしている?
    • テストフェーズ
  • これから何をするのか?
  • 今どれくらいのスピードなのか
    • あと3ヶ月なのにタスクがいっぱいある
      • リソースを増やすなどの臨機応変の対応ができるのか

目的地を知る

  • どこに向かっているのか?
    • ロールアウトするまでとか
    • 収益が上げられるまでとか
  • いつ到着するか?
  • リソースは足りているか?
  • 行く途中によるべきところはあるか?
    • 羽田→那覇の旅なのに、経由地が札幌とかだとおかしい
    • よく失敗するところ
      • 「このサービスと一緒にやっていったほうがよいのでは?」とか入って、開発がかさんでしまう
    • できるだけまっすぐ進む

ゆっくり進路を変える

  • 急に変えても上手くいかない
    • いきなり変えても、メンバーのスキルセットは変わらない
  • なぜ変えるのか説明する

自分の立ち位置と技法のマッチ

  • スクラムのタイムボックスが適任だ」とかではない
  • 仕様がしっかり固まっているならウォーターフォームの方が良かったりする
  • ミスマッチなら、新しい技法を探そう
    • エンジニアって基本新しいものを使いたがる
    • 自分達にあっていたかどうか判断しなかったのがドワンゴの失敗
    • 「教条的にスクラムが正しい」→どんなところが正しかったの?→主張できない
    • こう進んでいくしかないよねとなっていた
    • 定期的に振り返りが必要
    • どうやって原点に立ち戻って評価すれば良いのかが難しい
    • コストオーバー、納期オーバーした時にその原因を調べられなかったことが多かった

GINZA

  • 厳密さを捨てる勇気
    • 自分達に必要なところを見つけ出す
  • Practice is "Kata"
    • あくまでも基本形であって全てではない
  • もっと自由にやれば良い

マネージャを縛る鎖

  • クオリティ
  • コスト
  • スケジュール

まとめ

  • "Agility"の高い開発を目指す
    • 要求に素早く対応する
  • 全てを疑って、最善手を考えろ

質問

  • Agileをやっていて上手くいかなかった具体例は?
  • タイムボックスの管理は上手くいかなかった。
    • 出来るものからやる→大きすぎるタスクが入らなかった
    • 2週間で終わるべきではないものは3週間でも良いからタスクを入れるようにすべきだった

特別セミナー「アジャイル品質とソフトウェアパターン」参加レポート

告知ページ

特別セミナー「アジャイル品質とソフトウェアパターン」 2月22日 | Reliable Software Engineering, Washizaki Laboratory

講演1:アジャイル開発へのソフトウェア工学的アプローチ:イテレーション期間と学習ワークショップ

スライド

www.slideshare.net

経緯

  • 水曜日に台湾でソフトウェアパターンの国際会議が開かれる
  • 今週台湾に来るんだったら、日本にもお越しいただいてセミナーを開こう!(2週間前)
  • 非常にHotな品質とアジャイル開発について学んでいく

はじめに

  • アジャイル開発に関連する領域について取り組んでいるので、それについて紹介する

動機付け

  • アジャイルは科学不足
    • 他のプロセスに比べて
  • Cynefinフレームワークより
  • 横軸…解放が既知かどうか
  • 縦軸…問題が複雑か単純か
  • 第1象限…グッドプラクティス
  • 第2象限…突発・創発(Emergent)
  • 第3象限…新規(の研究)
  • 第4象限…ベストプラクティス

  • 本来扱うべきところと実際に扱う場所が異なっているのではないか

  • プラクティスなものに対して科学的裏付けをして、境界条件や本来のアジャイル開発の場所に持っていくプラクティスを探ってみるべき
  • まだそこまで出来ていないので、地道に行っていく

  • 科学的に出来ないのか

    • イテレーション期間を長く取るべきか短く取るべきか
    • ワークショップが有用なのか
  • イテレーション期間について必要ない部分をバッサリ切ってモデル化する

  • 机上の(計算機上の)シミュレーションを行ってきた結果
  • 要求の不確実性大→イテレーション期間を短めに
  • 要求間の依存関係複雑さ→イテレーション期間を眺めに

講演2:ソフトウェア信頼性予測のプロジェクト進行中の動的な活用

ソフトウェア信頼性モデルとアクションを結びつける

  • 信頼性モデルの利用
  • 開発の最後、振り返りが主な利用シーン

  • 状況のモニタリング

  • CIツール
  • R言語

  • 異常の検知

  • 信頼性モデルの解釈とアクション

欠陥と信頼性

  • 欠陥数の予測について
  • 信頼性に対して、欠陥を十分に発見できたかどうかを評価する基準
  • 欠陥数を予測し、取り除くべき欠陥数を定める
  • ソフトウェア信頼性モデル
  • どれだけテストを行えばよいか、リリース時期を測ったりする
  • 発見した欠陥を累積として日毎、週ごとに測定

  • 開発における問題

  • 欠陥を十分に発見できているか
  • 予測される欠陥数に対して今どれだけ欠陥を見つけたか

  • リリースに間に合うか判断できない

  • 開発のスコープ決定を支援
  • テスト工数、計画の支援

CIツールリポジトリシステムを用いた欠陥数予測

  • Jenkinsを用いて自動的に欠陥数を取得する
  • R言語を用いて欠陥数を予測する

リリース時期の分析

予期せぬ状況の発見

動機付け

  • ソフトウェア信頼性モデルが不一致になる場所がある
    • なぜそのようなことが起きるのか?
  • 期待を超える時期が発生する

欠陥をテストフェーズで分類

  • 継続的に問題が発生
  • いくつかの問題が再発生したので、開発者がテストを止めて他のテストを再開させた

まとめと今後

  • 今後は欠陥のデータベースを作りたい

質問

  • 未解決な欠陥については研究の対象にしていないのか?
  • していない
  • 是非とも、対象にして欲しい
  • PMが欠陥の理由を説明できない
  • 比率を見て、どんどん欠陥が減っていっているか
  • 見つかった欠陥をいつ修正されているかも研究の対象にしているところ

  • バグの影響範囲や重要度、優先度は取り入れているのか

  • 今回の研究では対象にしていない
  • バグの重複についてはフィルターをかけている
  • ユースケースで95%修正でリリースとしているが、残っているバグがクリティカルならばリリースできない

講演3:QA to AQ(Agile Quality): Being Agile at Quality

発表スライド

http://www.washi.cs.waseda.ac.jp/wp-content/uploads/2016/02/QA2AQ-Waseda-2016-.pdf

自己紹介

  • Joseph Yoder

トレードオフ

リーン開発

アジャイルとは

非機能要件

  • 非機能要件をユーザーストーリーでどのように表すか

  • 非機能要件とかも重要なのに、スケーラブルだから大丈夫…?

  • QA→QC

  • プロセス管理

  • 色々なパターンに当てはまるかどうか

  • バリアをいかに壊すか

  • 文化、言語、様々なバリアがある

    • QAが敵と考えられたりする
  • アジャイルチーム

  • QAの60%はユニットテスト

  • Tearing Down the Walls: Embedding QA in a TDD/Pairing and Agile Environment

  • Test early

  • Automate "easy" test

  • Qualify Loadmap

  • Qualify the Backlog
  • Quality Checklists

  • Quality Splints

  • Monitor Qualities

  • Usabilityをどうやって計測する?

  • "Quality Debt related to Technical debt."

  • SteveMcConnell https://kev.inburke.com/kevin/the-best-ways-to-find-bugs-in-your-code/

Agile Quality Benefits

  • Visibility
  • Effectiveness
  • Architectual Risk

Being Pragmatic

  • Do the Agile
  • Be the Agile

  • No Planning No Design...Sometimes calls Agile

  • Lot's of upfribt planning... Transitional Waterfall

  • Ultimate Agile Stories

質問

  • Agileの品質モデルはどのようなものがあるか
    • ウォータモデルならV字モデルがあったりするが…
  • Valueが出るようにすれば良い
  • Being Agileがなれば良い
  • Vモデルでも良いが、改善させていくことが大切

  • Test Baseをどのようにゲットするか

  • Agile Manifestによる
  • ドキュメントはValue
  • Agile StoryがValueになる
  • catalog, method

パターン一覧

  • 障壁の解体
  • アジャイルプロセスへの品質の組み入れ
  • 本質的な品質の発見
  • アジャイル品質シナリオ
  • 品質ストーリー
  • 測定可能な値やシステム品質の特定
  • 折り込み品質
  • アジャイルな着地点
  • 着地点の再調整
  • 品質目標の合意
  • システム品質ダッシュボード
  • システム品質ラジエータ(可視化する仕組みを用意する)
  • ロードマップの品質検討
  • バックログ上の品質検討
  • 品質チャート
  • チーム全体
  • 品質に焦点をあてたスプリント
  • 品質保証プロダクトチャンピオン
  • アジャイル品質の専門家
  • 品質のモニタリング
  • アジャイル品質保証テスター
  • 品質に関する作業負荷の展開
  • 品質熟練者の備考
  • 品質主義者とのペア