エンハンス開発でソフトウェア品質を守る
イオンスマートテクノロジー CTO室QA の show_chan です。
プロダクト1つが初期開発を終えエンハンス開発に移行するに伴い、品質を守るための対策方針・案をあらためて考え直したのでまとめておきます。目新しい事や銀の弾丸は無いですが、備忘録的に公開します。
エンハンス開発における品質対策方針
エンハンス開発とは既存の稼働しているシステムに、機能追加/拡張/改善を行う際、品質維持・向上のための方針です。エンハンス開発に限ったものでないものもありますが、そこは初期開発で導入などができなかった場合に再検討し導入してみることで品質向上が見込めます。
リグレッションテスト徹底実施
エンハンス開発は当然ながら稼働中のシステムに手を入れます。新機能の追加や既存機能の改善に伴って、稼働中システムに不具合が生じる可能性があります。それを検出するために理想を言えば過去実施した全ての機能テストを行い、変更が悪影響を与えていない事を確認します。
特に、変更部だけではなく全体の動作確認が実施できれば効果的です。
これらを効率的に実施および動作確認するためにリグレッションテストとして過去に実施したテストを整理しておく事は非常に重要であると考えています。しかし毎回全てのテストケースを実行することは難しいので、影響範囲に関連したテストを優先して実行します。そのために変更のあるモジュールや共通ライブラリなどの変更に依存する機能が把握できていることが重要となります。
自動化テストの推進と活用
繰返し実施するテストや設定条件が複雑だったりテストデータの準備が必要なテストケースは、テストの自動化を推進します。テスト作業の効率が向上し、かつ開発サイクル内で繰り返し実施する事で早期に異常を検出することが可能です。またヒューマンエラーや見逃しなども低減します。
特に単体テスト、機能動作、APIはCI/CDに組込んで高頻度で実施するとより効果が見込めます。
UIを含めたE2Eテストの自動化なども必要に応じて構築できればさらに効果的だと考えています。
CI/CDの導入
CI/CD(継続的インテグレーション/継続的デリバリー)パイプラインを導入します。
これ自体はエンハンス開発だから導入という訳ではないですが、開発/テスト向け環境に機能追加部分や修正を既存システムに含め迅速にリリースことが必要となります。
これらは仕組み化をしておき、自動テストを組み込む事で品質確保にもリソース的にも有用です。
非機能要件の見直し
エンハンス開発において、既存システムにパフォーマンスやセキュリティに与える影響を確認しておく事が大切です。DBの追加やSQLの変更に伴う影響で設定された非機能要件を満たさなくなる場合を考慮すべきです。またサービスがスケールする事でシステム負荷が変化したり、セキュリティ要件が変更される可能性がないのかについて確認します。
想定ユーザーの検証
既存システムユーザーからのフィードバックを収集し、ユーザーからの視点での不具合や改善点を取り込み品質の向上を図ります。また当初想定のペルソナに相違がなかったのか?などを検証します。
エンハンス機能がユーザーにとって良い効果をもたらものか、操作性などを含めてユーザビリティテストの実施を行います。
静的解析の実施
ソースコードの依存関係や変更点を自動的に解析できるツールを利用します。また循環的複雑度が高ければリファクタリングなど改善策を実施します。特にモジュール間依存を減らし変更時の影響範囲を広げないことが重要です。コードの保守性や可読性を向上し機能追加を容易する事で、不具合発生抑止の対策を行います。
ドキュメントのメンテナンス
エンハンス開発で追加された機能の設計はもちろんですが、設計や開発の過程で発生した問題点の解決方法や技術的な知見また追加したOSSなどを、適切にドキュメント化し共有します。今後の開発で同様の問題が発生した際の手掛かりや対処への検討が速やかに行われるようになります。
またGitなどで、変更履歴とコメントを残しておくことで影響を及ぼす範囲の特定に役立てることも可能です。
テスト環境の妥当性
既存システムが実際に動作している環境に近づけ、エンハンス開発で追加変更された機能が影響を与えることがないのかを確認することが重要です。特にテストに使用するデータや、外部連携システムなどは実環境と同等にすることで想定しきれていない影響を把握することが可能です。
まとめ
これらの方針を基にエンハンス開発でプロダクトの価値と品質を高め、安定したプロダクト開発を続けることが重要ですが、対策案は何が何でも全てを実施することが正しいという訳ではありません。何を実施するのか?どうしたいのか?を開発チームと共に決めれば良いと考えています。
そりゃーね、リソースもコストも時間も糸目なく使って全部できるのであればいいですが。。
イオングループで、一緒に働きませんか?
イオングループでは、エンジニアを積極採用中です。少しでもご興味もった方は、キャリア登録やカジュアル面談登録などもしていただけると嬉しいです。
皆さまとお話できるのを楽しみにしています!
Discussion