XCUITestのつらさを乗り越えて、iOSアプリにUITestを導入する by 佐藤剛士

iOSDC Japan 2020
採択
2020/09/21 11:30〜
Track C
レギュラートーク(40分)

XCUITestのつらさを乗り越えて、iOSアプリにUITestを導入する

hatakenokakashi 佐藤剛士 hatakenokakashi

プロダクトが成長するにつれて、アプリ品質向上とリリーススピードを高めることは難しくなっていきます。機能や画面が増えるにつれてマニュアルテストを続けるのは時間的なコストが上昇し、リリーススピードが落ちてしまいます。そこでE2EテストとしてUITestを導入し、テストを自動化する方法が考えられます。Apple標準UITestフレームワーク、XCUITestを検討する方も多いのではないでしょうか?
しかし、やみくもに大量の画面によるテストケースをコード化しても再利用性のないテストになることは明白です。また、XCUITestフレームワークの特性を理解し、適切にUIコンポーネントを操作するにはちょっとしたノウハウが必要です。

方法の一つとして、PageObjectデザインパターンを導入しテストコードと画面構成を切り分けましょう。実装方針をチームで話し合うのも重要です。一般に参照系のテストは実装が容易ですが、ユーザー状態を変更するUITestは実装が難しい場合があります。プロジェクトの性質によって適切な優先順位をつける必要があります。
このトークでは自社アプリにXCUITestによるUITestを導入した経験をもとにUITestの実装ノウハウを共有します。またUITest実装を進めるにあたってXCUITestのトリッキーな挙動もわかって来ました。

  • Accessibility Identifier場合やLabel重複の適切なQuery方法
  • UIView.setAnimationsEnabledをfalseにするとポップアップが表示されない問題
  • iOS 13とiOS 12でView階層が異なる問題

これらの問題の解決方法も合わせて共有できればと思います。

UITest導入と戦略と実践が学べ、UITest導入を検討している方にぴったりのトークです。