開発本部QAチームの山田です。
テストの自動化によりリファクタリングの際のQAも大きく効率化できましたので、ご紹介します。
テスト自動化
以前こちらの記事でもご紹介したように、QAチームではAutifyを使ってテストの自動化を進めています。

まずはPR TIMESのサービスにとって重要な機能でもある「プレスリリース配信」と「ユーザー登録」を重点的に自動化しました。
これによってプレスリリースの情報を出したいときに出せなくなるということを防ぐことができ、情報インフラを目指す上で欠かせない機能を担保することに近づけられます。
リファクタリングデーのテスト
準備
PR TIMESでは月に1度リファクタリングデーをおこなっています。
普段の開発の中ではなかなか行うことができない部分のリファクタリングを1日かけておこなうという日です。
詳細はこちらの記事をご覧ください。

さて、このリファクタリングデーでは1日に2回、全体のテストをおこなっています。
2回おこなうのは手間ではあるものの、リファクタリングでは全体に影響が出るような大きな改修を実行するため、万一壊れている場合でも早い時間で気付けて改修できるというメリットがあります。
1回目は開発チームの方で13:00頃までに対応したコードの結合テスト、2回目は15:30前後でコード修正を締め切り1日分の結合テストです。
PR TIMESにはプレスリリースの配信・各種ユーザー登録・閲覧機能・外部サービスとの連携など多くの機能があるため、手動での確認はどうしてもそれなりの時間がかかっていました。
そこで自動化のシナリオを作成した「プレスリリース配信」と「ユーザー登録」の出番です。
様々なパターンで作成したシナリオを組み合わせて、リファクタリングデー用のテストプランを設定します。


今回は各シナリオを同時に走らせる並列実行ではなく、1つずつ実行していく直列実行としました。
本来であれば複数のシナリオを並列実行することでテスト時間も短縮できるのですが、ステージングで同時実行となるとどうしても付随するメール送信やPR TIMES上での表示などの順番が混在してテストがエラーとなってしまいます。
このあたりは今後の課題です。
次に上記シナリオに対してそれぞれデプロイしたステージングのURLとSlackの通知を設定します。

これで準備ができました。
テスト実行
昼の部でまず「プレスリリース配信」と「ユーザー登録」のプランを自動実行、その間に自動化できない他の部分のテストをQAチームで進めます。
今回はプレスリリース配信もユーザー登録も次々とテストが失敗していきました。


リファクタリングデーでは動作を変えずにコードを全体的に大きく変えることもあるため、登録部分がエラーになっていることがこのエラーでわかりました。
手動のテストも止めて、開発で修正してもらいます。
このまま夕方までリファクタリングを続けてからテストしていたら大きなロスになっていたかもしれませんが、昼の段階ですぐにエラーがわかったのは自動化の大きな成果です。
リファクタリングデーでの修正受付を締め切った夕方に再度すべての結合したコードをデプロイして自動化テストを実行します。
開発チームの努力もあり、ここではテストが次々に成功していきました。


テストが成功し続ける間に昼と同じく自動化できない部分をQAチームが手動でテストを続けます。
(上記の画面では自動テストが失敗している部分が1箇所ありますが、そこは手動で問題がないことも確認できました。)
これまで手動のみで確認していた際は全体テストに1時間〜1時間半ほどかかっていましたが、手動と自動を組み合わせることにより45分ほどにまで短縮できました。
今後Autifyで自動化テストできる部分を増やしたり、開発側でのコードによるE2Eテストなども進めることにより、さらに効率化していければと考えています。
QAチームもメンバー募集しています!
PR TIMESのQAチームではテスト自動化以外にも様々な手法でプロダクトの品質を高め、PR TIMESのミッションである「行動者発の情報が、人の心を揺さぶる時代へ」の実現を目指しています。
ご興味が少しでもあれば、ぜひご応募ください。
もちろんその他の開発の職種(エンジニア・PdM・デザイナーなど)も含めて、お待ちしています!!
https://prtimes.co.jp/recruit
そしてPR TIMESのQA業務についてお話している記事もありますので、こちらも合わせてご覧ください!
https://www.qbook.jp/column/20220427_1330.html