# 概要
複数の他社サブスクリプションベンダーサービス(AWS,Azure,CSP等)を自社のクラウド基盤上のサーバでSaaS型サービスとして提供顧客、契約、請求を一元管理するシステムの開発・運用
# 開発手法
アジャイル開発(1スプリント2週間、jira,redmineを使用)
# チーム構成
PM(1名)->L(1名)->メンバー(自分を含む3~6名)
# 使用技術
バックエンド:Python3.7,Django2.0,DjangoRESTframework,
フロントエンド:JavaScript,jQuery
DB:MySQL
インフラ:AWS EC2,GCE,docker,Nginx,uwsgi
その他:GitHub,GitHubActions,Ansible,GAS,BashShellScript,Autify
# 役割
開発 → 開発+SET → SET+QA
# 経緯
開発でジョインしたが、テスト実施不足が開発のボトルネックになっていた為、テスト自動化を提案し、実装・運用を行う。
その後チーム外とも連携して品質、開発生産性向上を行う為、1人目QAエンジニアとして活動。
# 実績・取り組み
・機能開発(DjangoRestFramework,jQuery)
・シナリオテストの自動化提案、実装、管理
・ボリュームテストの実装
・テスト設計手順作成
・テスト計画~実施、マネジメント(配下3名)
# 状況と課題
ジョインした段階で基幹機能(注文、契約、請求管理)において以下のような状況であった。
・ユースケースで考慮すべきパターンが膨大で整理されていない
・データ依存関係が整理されていない
・レガシーコードな為、バックエンドロジックの変更・改修時の影響範囲が特定しきれない
ユースケースやデータの依存関係を開発チームとして整理することはせず(機能担当者頼み)、テストの網羅率を上げる形で対応。しかし開発者がテストを行う為、テスト工数が増えれば開発工数が圧迫され、さらなるバグを生むという負の連鎖が発生していた。
# 課題に対する取り組み
・手動E2Eテストを自動化(API、バッチ実行をスクリプトで再現)するシナリオテストツールを実装
▶テスト実施不足を解消(最も効果があったテストは40人日→5人日)
・バグが頻出していた機能に絞った入力値や状態を洗い出して組み合わせテストを作成(2000項目程度)
▶テスト設計漏れ解消
・組み合わせテスト項目表にシナリオ生成機能実装、チームメンバーがシナリオ作成できるようにしてツール展開
▶コード変更箇所に対する影響範囲の理解がチーム全体で向上
・各々でコードレビュー前にテストツールを実行できるように改良
▶バグ検出のタイミングが速くなったことで変更リードタイム短縮。またレビューア負荷を軽減できた。
・テスト実行後のデータからドキュメント自動生成
▶調査や他チームからの問い合わせ対応にかかる工数削減
上記以外にも、ソースコードとテスト項目のトレーサビリティ向上の為にログ出力改善、運用チームへのログやデータの問い合わせ方法の改善等、組織全体で開発生産性を向上するように取り組んだ。