Android Test Night #6 内容まとめ

# はじめに
Test NightコミュニティのAndroid Test Night 第6回目（2019/3/7）のまとめです。

- イベントページ
https://testnight.connpass.com/event/117578/

> 本イベントはAndroidにおけるテスト周りに関する知識を共有することを目的としたものです。
> 
> テスト周りに関するものであれば何でもOKです。 例をあげるとすれば以下のようなものなどです。
> 
> - テストをはじめてみた＆ここで苦労した
> - このテスティングフレームワークはここがハマりどころ
> - テスティングフレームワークをこうやって使い分けている
> - こうやって工夫してテストしている
> - オレが考えるAndroidアプリにおけるテスタビリティの高い設計
> - 弊社のCI/CD環境はこんな感じにしている
> - DroidKaigiで話せなかったネタをここで

ハッシュタグは[#android_test_night](https://twitter.com/hashtag/android_test_night?vertical=default&src=hash)です！


# LT

## モバイルテスターの世界戦向けトレーニング - Curiosity and Knowledge
### スピーカー
- mkwrd

### 内容
- SeleniumConf Tokyoの宣伝
    - 日本初開催
        - ４月１８日、１９日
    - テスト自動化の標準となりつつあるSeleniumを学ぼう
    - 160以上のCFPがきた。セッションの選定に時間かけた。
    - 参加者は海を超えて
    - 自分のレベルを図れる
    - 「エンジニアの戦場は世界だ」
- モバイルテスターの世界向き要素
    - モバイルアプリ開発は世界の潮流
    - 世界にでるのにモバイルテスターほど適した資格はない
- モバイルテスターの資格
    - ISTQB
        - JSTQBは日本向けの加盟組織
        - AGILE,CORE,SPECIALISTなどたくさんある
        - ASTQB
            - ISTQB以外の資格も扱う。
            - MobileTesting資格を独自に実施
                - CBTなので日本でも受験できる

            
     
### 資料
- https://speakerdeck.com/mkwrd/cusiosity-and-knowledge-to-the-world-for-android-test-night-number-6

## AzureDevOpsで始めるAndroidのCI/CD
### スピーカー
- nakasho

### 内容
- Azure DevOps
    - 組織のOwnerを簡単に切り替えられる。お客さんへの納品が簡単
    - 料金
        - ３３６０円
        - Free
            - ５ユーザまで無料って？
                - 無料枠利用者５人まで ＋ VSサブスクライバーは人数制限なし ＋ 編集権限なしの人も制限なし
    - AzureRepos
        - 容量無制限のGitリポジトリがもらえる
        - PJに複数のリポジトリ作成が可能
        - ブランチごとに権限設定可能

    - AzurePipeline
        - AzureReposGit,GitHub,Bitbucket、SVNなど使える
        - ビルドテンプレートもいろいろ。今回はAndroidの説明
        - AndroidSigningの設定すればビルドのあとに署名もしてくれる
        - AppCenterTestやDistributeの設定もできる
        - 毎月１８００分まで無料
        - 自前でAgentをインストールすることも可能。これつかえば時間の制限なし


### 資料
- https://www.slideshare.net/shinyanakajima37/azuredevopsandroidcicd

## Make CI/CD More Comfortable Before/After Code Testing
### スピーカー
- red_fat_daruma

### 内容
- モチベーション
    - テストは開発プロセスで重要。
- Definition
    - 開発を加速させるもの

- エラーに対して柔軟でないものは悪
    - badパターン
        -  Lintが落ちたらテストが実行されないCI
            -  Lintはテストを止めるものではない
        -  一つのタスクが失敗したらすべてが失敗する
- これらを解決させるにはコマンドのステータスを確認して必要に応じてCI/CDを失敗させる
    - プロダクションではエラーは落とす必要のあるがステージングでは実行されてほしい
    - Gradle tasksのcontinueオプションを使う
    - Jcneterのリトライロジックを入れる
    - Dangerのようなレポートシステムを使う。テスト失敗の内容を知りたいから。
- ジョブの分け方。このように分けるのが理想
    - VitalJob
    - TestJob
    - DeploymentJob
- ビルドの中間結果を保存・ロードする
    - メジャーなCIサービスにはキャッシュシステムがある。
    - 依存関係のキャッシュ

- CIサービスのキャッシュの使いどころ
    - 単一PRでのビルド間キャッシュ
        - CIのキャッシュシステムは使うべきではない
        - ビルドの中間情報はGithubイシューとHTMLを利用する
    - 複数PR上でのビルド間キャッシュ
        - 最適なソリューションがわからないので解決策があれば教えて欲しい
- DeployGate
    - CDN通してるのでダウンロード速度が速い
        - CIでデプロイしたらレスポンスをカールで叩くようになっている。よって人が初回ダウンロードするときにはキャッシュつかえる
    - DistributionTracks
        - GooglePlayStoreの内部トラックのようなバージョン別ダウンロードページ
    - [dpg](https://github.com/jmatsu/dpg)
        - 非公式のCLIベースDeployGateAPIクライアント

      
### 資料
- https://speakerdeck.com/jmatsu/after-code-testing

## 形式手法について調べてみた
### スピーカー
- altitude3190

### 内容
- 仕様の不備に開発フェーズの速い段階で気づきたい
- あとになればなるほど手戻り工数が大きい
- 改善はしていたが場当たり的な対応、工数・スキル的に手に負えなかった
- 形式手法
    - 仕様を明確に記述
    - 機械的に検証する
    - 数学に基づく科学的な裏付けがある
- 形式仕様記述
    - VDM++/Event-B/Zなど
- 定理証明
    - Coq
- モデル検査
    - Alloy/Promela
    - システムを有限個の状態を持つモデルで表現
    - モデルの状態を機械的網羅的に検査
    - Spinはモデル検査ツールでHomebrewでインストール可能
    - 判例があればトレースとともに表示
- メリットデメリット
    - 形式手法メリット
        - 検査結果から仕様不備に気付ける
    - デメリット
        - 導入コスト
        - モデル化が難しい場合がある
    - 部分化導入がよい
- 現場にマッチした形式手法がどれになるか吟味する必要がある



### 資料
- https://speakerdeck.com/hoddy3190/xing-shi-shou-fa-nituitediao-betemita

## UI テストで楽するための技術
### スピーカー
- ksfee

### 内容
- UIテストは大変
    - 環境構築が大変
    - 実行時間がかかる
    - 実行結果の確認
    - 依存が多い
    - 実装が大変
- 楽する技術
    - テストケースをDSLで
    - テスト結果
        - [Composer](https://github.com/gojuno/composer)
            - ログとスクリーンショットを合わせたレポートを提供
    - ネットワーク依存
        - [OkReplay](https://github.com/airbnb/okreplay)
            - OkHTTPの通信をRecord・Replay
            - レスポンスデータの管理が楽
            - ワイルドカードの表現が使えない。動的なリクエストが難しい

### 資料
- https://speakerdeck.com/ksfee684/ui-tesutodele-surutamefalseji-shu