API機能テストの効率化
APIをテストするためには、サーバー側から先が全て動作している必要がある
サーバーからさらに外部APIに接続する場合、モックが必要で、そのモックの動作に期待値を与えてしまう
データベースの値に依存しはじめる
テストしようと思ったことはテストできる
テストしようと思わなかったところにバグが残る
テストしようと思うこと自体がスキル依存になってしまう
調査中の記事
https://scrapbox.io/files/6253b1edd51317001fa61df9.png
shimizukawa.icon単にAPIの入出力をみるだけでなく、ログ収集と検証、DBデータ検証、を行っているのが素敵。外部のシステム呼び出しをモックしている部分が単なるモックなのかどうかが気になる
SOAtestは開発中のAPIのテストに必要となるテストドライバーを提供し、APIの機能テストおよびパフォーマンス・負荷テストを自動化します。SOAtestはAPIのテストに加え、DBの値を直接参照・編集をすることやAPログの検証、およびバッチ・シェルなどの実行形式ファイルを実行することなども可能であるため幅広いテストの自動化を実現します。
VirtualizeはAPIを利用するアプリケーションのテストに必要なAPIを仮想化することで、各チームがあたかも実環境を利用しているかのように、実施したいタイミングでテストを可能にします。主に並行開発や結合テストにおいて、API仮想化によりいつでもテストが可能になり、開発を効率化してShift-Leftを実現します。
APIの重要性が増すにつれ、開発の現場ではAPIに関する課題も指摘されるようになってきた。それは「APIのテストをどう行うか」「テスト環境をどう整えるか」ということだ。
APIを利用する側でよくある課題
『APIを開発する側の開発が遅延していて結合テストができない』
『他社との調整が必須でテストできるタイミングが限定される』
APIを開発する側
『テストのやり方がよく分からない』
『十分なテストが実施できていない』
SOAtest/Virtualizeは、1つの製品で大きく2つのテスト機能を提供することが特長だ。
https://image.itmedia.co.jp/ait/articles/1903/28/news011_01.jpg
まず、フロントエンドで行われるUIテストについては、VirtualizeというAPIを仮想化する機能(サービス仮想化)を活用する。サービス仮想化を使うと、APIの開発が間に合わず、本物のAPIがない状態であっても、Virtualizeで仮想化したAPIからのレスポンスをUIが適切に処理できるかを検証することが可能だ。
一方、バックエンドで行われるAPIテストについては、SOAtestという機能を活用してテストを自動化できる。UIが生成する電文(リクエスト)をSOAtestでシミュレーションすることで、APIコールに対するレスポンスの内容が適切であるかを検証することが可能だ。
https://image.itmedia.co.jp/ait/articles/1903/28/news011_02.jpg