JaSST'15 Tokyo 『テスト自動化によるエンジニアのしあわせのかたち』参加記録

JaSSTソフトウェアテストシンポジウム-JaSST'15 Tokyo より

登壇者

  • 堀岡勝 (ローグウェーブ ソフトウェア ジャパン)
  • 山城裕一 (マイクロフォーカス)
  • 雨宮吉秀 (日本シノプシス
  • 大西建児 (ガイオ・テクノロジー)
  • 小井土亨 (OSK)
  • きょん (テスト自動化研究会)
  • 山口鉄平 (ヤフー)

モデレータ

現場で行っている自動化の仕組み

きょん

  • インテグレーションテスト、コンポーネントテストレベルの機能性に関する自動テストを書いてから実装を始める
  • バグを見つけたら失敗するテストコードを書いてから報告する
  • テストコードはドキュメンテーションであると考えて取り組むほうが効率がいい
  • ドキュメントとして書きにくいテストツールはクソだと思う
  • 大まかなテストの分割方法についての共有
  • テストをすることが目的になっているのは良くない

山口

  • 実行・評価のテスト自動化は普及中
  • モバイルアプリのプラットフォーム変更や多様性の影響が大きくなってきた
  • しょっちゅうAPIが変わって、テストの全てダメになる
  • 今後、APIが変わっても工数がかからない仕組み・ノウハウを作っていきたい
  • モバイルアプリは端末ごとの差異が結構ある(組み合わせ数は爆発的に)
  • スマホのVersionUp→すぐにアプリもVersionUp→Androidマーケットのレビューで☆1に
  • テスト自動化を考慮したシステム・ソフトウェアアーキテクチャの整理

今後の方向性・野望などについて

昔から変わらないこと(小井土)

  • 自動テストを効果的に利用するためには改善が必要
  • 自動テストの保守・運用コストを考える

変わったこと(小井土)

大西

  • テストを行ったものを分析する

雨宮

きょん

  • CIで1週間毎の変更したモジュールと変更したテストケースについて調べる

堀岡

  • メモリリークがあった時だけ静的解析かけるとか、リリース直前に静的解析かけるとか、成熟度レベルによって変わる。
  • ツールの管理者・導入リーダーは状況を見てツールを決める

きょん

  • リリースできるかどうかだけを見たい。
  • これが出たからあなたのチームが悪いと一概的には言えない。

小井土

  • 自動化とか開発はやっていって見えることがある
  • 自動化が改善ではなく、自動化で見えていくことを改善する
  • カバレッジで100%を目指す必要ではない。

大西

  • 「網羅率100%を作成しなさい」を示してくるユーザもいるが…

小井土

  • いくらカバレッジしても品質が良くなるわけではない。

山城

  • そもそもメトリクスを取ることは、PDCAが回っているかどうか。
  • ツールを入れる前にPDCAをどのように回すか

堀岡

  • テストツールに振り回されないようにするにはどうすれば

雨宮

  • 「直す段階になっていない」と相談されたので「リリースしたものを諦めましょう」とアドバイスした。
  • ただし、今後のVersionUpでは同じバグを入れさせない。
  • ほっとくのは良くない

堀岡

  • ツールを入れてどうしたいのかという目的をはっきりさせる必要がある。
    • 「これから不具合を混入することを防ぎたい」
    • メモリリークについてだけ見たい」など。

大西

  • 受け手としてはアクセプトできるのか

山口

  • 使う側としては、目的に対して解を出してくれるのかは、使ってみないとわからない。
  • やってみてもうまくいかないツールが多い。
  • プロセスを想定して、ツールを作っていないとはまらない

今後の野望など

きょん

  • エラーログからテストコードやテンプレートを生成
  • 汎用的に使えるテスト並列実行をフレームワーク
  • 「そのテストティングフレームワークでは並列実行できる」というものがほとんど。
  • 汎用的にテスト並列実行することで、
  1. Jenkinsで環境を立ち上げ
  2. テストケースをキューに流し込む
  3. テスト実行結果をGraphite作成
  4. TestCodeにリクエストを飛ばす
  5. 全部終わったら環境を削除する
  • なかなかシステム全体を監視して、どうこうするということができない。
  • テスト結果を飛ばす仕組みが既存のテストツールだとダメ
  • もっと汎用的に作らないとテストツールの連携ができない
  • Json形式にしてほしい
  • VirtualizationとAutoscalingが必要

小井土

テストの実行
  • テストをコントロールする
  • テストを管理する
  • テストの準備する
  • テストを実行する
  • テストを確認する
これから行うこと
  • シェル言語と連携する
  • ツールの中でまたがないようにする
  • 並列化すると準備に時間がかかる。

大西

  • 組み込み系の場合も、仮想環境上でテストをする。その中で気をつけるポイントはあるか?

山口

  • 物理単位は切りやすいが、システムのほうは難しい。
  • 物理層のレイヤーに自分達用のインタフェースを入れるとか

大西

山口

  • 組み込み系の場合はエンタープライズ系とくらべてテスト自動化をしっかりやってもペイできない

小山

  • 他のシステムとの組み合わせや統合については?

山城

  • GitやCIツール(Jenkins)との連携は重視している
  • トップダウンで入れてもらえるケースが少ない。
  • トップダウンで入れると開発者のモチベーションが下がるので、
  • 開発者も共有しながら使えるように目指す。

大西

  • ツールを選ぶのはユーザ自ら。
  • ツール間連携は重要だと思っている。
  • その部分はどうなのか?

堀岡

  • 大きい企業は自分達の部分がプラットフォームとすべきだ。という考えもある。
  • ツールのベンダーとしては、ライセンスの問題などもある。
  • 一つのものでカバーするのは難しくなっている

雨宮

  • 基本的には同じ考え。
  • メトリクスを取るとかは自分で。
  • 自分達が使いやすいと思っているメジャーなところに出せるようにしている。

大西

データベースの中身を開示して、その中身を変更できるようにしている。

きょん

  • データベースとかファイルはダメ。
  • jsoncsvなどのユーザが加工しやすいテキストファイルにしてほしい。

大西

  • 確かに独自フォーマットにするのは良くない。
  • そのデータをどうするのかはお客さんに任せるようにするべき。

小井土

  • システム化しているので、データを取り込みたい
  • GUIじゃないとできないツールもある。
  • CUIで深夜に回したい

きょん

  • RESTで送信して、jsonで出力してほしい。
  • ツールベンダで共通化してほしい

山城

  • RESTはうちはやってる

雨宮

  • うちは全て対応している

山口

  • CUIを使いこなすには、できるひとがきちっといる必要がある。
  • そうじゃない人もものづくりできる仕組みも必要。
  • パラメータセッティングがわかりやすいようにするとか。

堀岡

松木

トレードオフではなく両方あれば良い。

小井土

  • 自動テストのシステム構成について。
  • 2つのシステム
    • テスト対象システム
    • 自動テストシステム
  • 3つのサブシステム
    • テストケースの作成
    • テストケースの実行
    • 自動テストの運用

まとめ

  • 目的目標大事
  • 数字に振り回されないように
  • 疎結合な役割分担、システムの組み合わせ
  • 出来る人とできない人用に
  • ユーザとベンダでのお話が大事