早く高品質なサービスを提供できる仕組みを創り、会社や社会の課題を解決したい
1-1. 技術力(主にSET,QA)と非技術力(コミュニケーション力、リーダーシップなど)を兼ね備えたエンジニア
1-2. 課題を発見し、解決策を実行できるエンジニア
1-3. チームとして成果を出すことができるエンジニア
このPJは
しています。
E2Eテストをシフトレフトし、PR上でテスト実行できるようにした。
またテストのメンテナンスもPR作成者が担当できるように運用フローも作成した。
これにより
全社横断でE2Eテスト(回帰テスト)をGitflowにおけるdevelopブランチマージ後に実施していたが、以下の課題があった。
E2EテストをPR上で実行できるようにし、以下のフローへ改善した
このPJではAWS認証をIAMユーザー認証からOIDCによるIAMロール認証に切り替えました。
IAMユーザー認証の場合、GitHub Actionsのシークレット変数にAWS_ACCESS_KEYやAWS_SECRET_ACCESS_KEYなどの機密情報を保存する必要があります。万が一これらが漏洩してしまうと、AWSのリソースが不正に操作されてしまいます。
OIDCによるIAMロール認証を導入することで、GitHub Actionsのシークレット変数に機密情報を保存する必要がなくなり、セキュリティを向上させることができました。
テスト結果はPRにコメントする形で表示しています。
開発している時には気づけなかったのですが、コミット数が多くなってくるとコメントがその分量産されPRの見渡しが悪くなるとのFBをもらいました。
以下の処理に変更しました。
PR内に存在する過去のE2E結果コメントを削除
新規のテスト結果コメントを投稿
このE2EテストはCIとしてPushの度に実行されます。またリグレッションテストとしての役割も持っているので、当然全てのテストが成功してからdevelopブランチに反映されるべきです。
そのため導入時はテストが100%成功していないとマージができないようにしていました。
しかし、このルールでは開発者体験が悪化してしまいました。原因は以下です。
マージ要件に閾値を設ける手段を取りました。
具体的には自動テストのpass率が90%を超えている場合にはマージ可能としました。
チーム内で話し合った結果、避けたかったこととしては以下が列挙されました。
上記の「バグの流出」と「E2Eテストの形骸化」は自動テスト成功率を100%を強いることで解決できますが、3つ目に関しては自動テスト成功率を100%を強いると起こり得てしまう問題です。
過去の自動テストの結果を見て、flakyテストとABテストで期待していないパターンを引いた場合でも90%は下回らないということが分かりました。
そのためマージ要件をE2Eテストのpass率100%→90%に変更しました。
テストの再実行を行いたい場合、以下の手順を踏む必要がありました。
特にコードの修正をしていない場合の再実行では、E2Eを再実行したいだけのためにEEの再構築も行わなければなりません。
EE再構築からテスト完了まで17分かかることもあり、これはユーザーにとってストレスでした。
GitHub Actionsのworkflow_dispatchを使い、E2Eテストの再実行を楽にしました。
以下の流れでテストの再実行が実施されます。
E2Eテストの実行フローは以下の通りです。
テスト実行時に同じテストが複数回実行されることを防ぐため、テスト実行中にテストの実行を操作する仕組みを導入しました。
「pushされるたびに自動テストが走る」仕組みになっているので、連続でpushされた場合に同じテストが複数回実行されることになります。
これでは余計なコストがかかるだけでなく、アプリケーションに余計な負荷がかかっていました。
新規でテストが実行される際に、実行中のテストを停止する仕組みを導入しました。
具体的には以下の流れです。
少しずつですが導入され、導入されたプロダクトコードでのテストは安定性が向上しました。
ある程度導入された段階で、flakyテストをモニタリングし数字も出していこうと思います。
qiitaにも投稿しています
https://qiita.com/Yamashita-Taiki/items/10aebf3a54c2b4d6665f
社内で自動テストの課題についての相談を募っていた際、とあるタグマネージャーツールを使用している部署から「意図したタグが正しく埋め込まれているか確認するための工数が膨大である」との意見があった。
タグ確認作業は手動で行われており多くの工数が必要になっていた。
そこで、意図したタグの埋め込みを確認するためのE2Eテストを導入することで、今後の業務効率向上が期待できると考えプロジェクトを開始した。
Playwright
TypeScript
今までタグが問題なく埋め込めているかを確かめるために2〜3日かかっていた工数が、E2Eテストによって5分/日に減少した
開発チームのエンジニアに対して探索的テストの講習を実施した
開発チームのソフトウェアテストスキルの向上
開発チームの課題として以下があった
事後アンケートの結果(一部)
大学4年目〜就職後は副業として教育系スタートアップに参画
教育系のサービスを展開しており、その社内システムの開発を主に担当していた。
サービスの内容としては、学校教員と外部人材とマッチングを図り学生に新たな視点を持つことを目指すサービス。
担当した主な業務は以下
友人の趣味である麻雀の学習アプリの開発に携わった。
友人の企画の元、麻雀のモバイルアプリを作成した。
上記を解消するため麻雀に関する知識の習得、実践問題を通じて点数計算ができるようになることサポートする
RSpecでのユニットテストの保守改善とGitHub Actionsへの移行
私は弊社のAPIサーバーにおいて、以下の業務を担当しました。
弊社のAPIサーバーはGitFlowを採用し、featureブランチからdevelopブランチへのマージ後にユニットテストを実行していた。しかし、このプロセスにはいくつかの課題が存在していた。
上記の改善により、より品質の高いプロダクトを迅速にリリースできるようになった。
このプロジェクト詳細は公開されていません
このプロジェクト詳細は公開されていません
このプロジェクト詳細は公開されていません
副業先で1人目のQAエンジニアとして以下の活動を実施しています。
私は特に探索的テストはエンジニア以外でも実施すべきと考えている。
しかし
ハドルなどで常時コミュニケーションを取れる状態を作りながら、タスクの期限を設定している状態。
細かな進捗共有会や、朝会などの時間はどちらでも構わない
要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。
なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。