タグ

*infraとtestingに関するsh19910711のブックマーク (69)

  • IaCにおけるテスト考察 / Tests in IaC

    @2024-06-24 さくらインターネット IaC 社内勉強会 LT

    IaCにおけるテスト考察 / Tests in IaC
    sh19910711
    sh19910711 2024/06/27
    "宣言的コードの実行保証はツール側 / IaCのUnitテストはコストと見合っているか / IaC本ではApplication Codeのテストピラミッドとは異なりDeclaration Codeのテストはダイヤモンドモデルになるだろうと書いてある"
  • AWS を使ったシステムのテスト方針 #jawsug #jawsug_niigataken #nds60

    第60回 長岡IT技術者勉強会資料

    AWS を使ったシステムのテスト方針 #jawsug #jawsug_niigataken #nds60
    sh19910711
    sh19910711 2024/06/25
    "責務を分ければユニットテストもしやすくなる + 何でもやろうとしない / 外部サービスを意識する箇所は無理にテストしない + SDKを使う箇所を局所化 / SQS: 複数回メッセージが取れても大丈夫なように設計" 2019
  • インフラのテストに VPC Reachability Analyzer は外せないという話

    人間の尊厳、幸福、アクセシビリティ / 第116回「WEB TOUCH MEETING」アクセシビリティSP

    インフラのテストに VPC Reachability Analyzer は外せないという話
    sh19910711
    sh19910711 2024/06/20
    "Serverspecは対象のサーバーにSSHログインできることが前提 / VPC Reachability Analyzer: Serverspec, awspecなどと組み合わせて手厚いテストが実施可能 / FargateのようなENIがコロコロ変わるサービスとの相性が悪い" 2022
  • Playwright と Artillery によるパフォーマンステスト - Qiita

    要約 DevOps や SRE を実践する人向けに、Playwright による E2E テストを Artillery の負荷掛けシナリオとして利用する手法についてハンズオンを交えて紹介します。 課題としては、Playwright で自動生成したスクリプトを手直ししないと難しいパターンがあることを挙げています。 その他、Tips もあります。 はじめに NSSOL Advent Calendar 2022 の 13 日目にも投稿しました、とうふです。 先の記事で軽く説明した通り、私がいま参画している案件では E2E テスト用のスクリプトを流用したパフォーマンステスト を行なっています。 記事では、Playwright で作成した E2E テストスクリプトを使って負荷掛けを行うことでパフォーマンステストを実施する手法について紹介します。 前提知識 Playwright とは Playwri

    Playwright と Artillery によるパフォーマンステスト - Qiita
    sh19910711
    sh19910711 2024/06/17
    "Playwright による E2E テストを Artillery の負荷掛けシナリオとして利用 / Playwright で自動生成したスクリプトを手直ししないと難しいパターンがある / Artillery: DevOps や SRE にフォーカスを当てた Node.js 製の負荷掛けツール" 2022
  • Playwright testをLambdaコンテナ上でRICを使って動作させる - Qiita

    概要 Lambda関数は通常Amazon Linux上で動作していますが、Playwrightは公式ではDebianとUbuntuしかサポートしていません(参考)。 そのため、Lambda Runtime Interface Client(RIC)を使ってDebian上のNode.jsのベースイメージを元にPlaywrightをインストールすることでLambda上で動作させました。 ローカルで動作確認したいためAWS Serverless Application Model(AWS SAM)で構築しています。 ソース類は以下にまとめています。 https://github.com/octop162/playwright-lambda SAM準備 sam init で初期化しtemplate.yamlを生成しました。 メモリ使用量を1024MB, タイムアウトを最大の900秒に設定しています

    Playwright testをLambdaコンテナ上でRICを使って動作させる - Qiita
    sh19910711
    sh19910711 2024/06/17
    "Node.js上でchild_processを利用して npx playwright test コマンドを実行 / CodeBuildやgithub actionsなら簡単に結果レポートを保存できるなど利点 / ECRの保持料金が少しかかるので無料枠の500MBになるようサイズを圧縮したい" 2023
  • AWS LambdaでPlaywrightを使う(Python 3.10 + playwright1.42.0) - Qiita

    スクレイピングにseleniumを使用していましたが、playwrightがかなり直感的で使いやすかったことから活用を始めました。また、実行環境をlambdaにすることで他のアプリケーションから利用しやすくすることもできるため、その方法をまとめておきます。 開発環境 Windows10 Home 22H2 Python 3.10.4 playwright 1.42.0 1.playwrightを利用した機能を実装する ローカルで普通に実装します。ブラウザオブジェクトを作る際には次のオプションを指定しておきます。今回は図書館のHPにアクセスして貸出状況を取得するスクレイパーを実装しています。 browser = playwright.chromium.launch( args=[ "--disable-gpu", "--single-process", ], ) 2.lambdaから利用する

    AWS LambdaでPlaywrightを使う(Python 3.10 + playwright1.42.0) - Qiita
    sh19910711
    sh19910711 2024/06/17
    "playwright: 実行環境をlambdaにすることで他のアプリケーションから利用しやすくする / chromeやedgeなどのブラウザエンジンを独自にインストールするので、lambda環境ですんなり動くようにコンテナ化"
  • AWS Chalice で実装したアプリケーションのユニットテスト - Qiita

    AWS Chalice とは AWS SDK for Python を開発するチームによってメンテナンスされている、AWS Lambda に展開するアプリケーションを実装するための Python のマイクロフレームワークです。 ビルトインされている @api.route, @app.on_s3_event などのデコレータを用いて関数を実装し、CLI で簡単にそれらを実際に AWS 上に展開することが出来るようになります。 例えば、chalice CLI の中にある chalice new-project コマンドでプロジェクトの雛形を作成するとこのような実装が生成されます。 from chalice import Chalice app = Chalice(app_name='test') @app.route('/') def index(): return {'hello': 'wo

    AWS Chalice で実装したアプリケーションのユニットテスト - Qiita
    sh19910711
    sh19910711 2024/06/17
    "Chalice: AWS SDK for Python を開発するチームによってメンテナンスされている、AWS Lambda に展開するアプリケーションを実装するための Python のマイクロフレームワーク / デコレータを用いて関数を実装" 2019
  • AWS SDK Rubyでスタブを行う - Qiita

    はじめに AWS SDKを使用したコードに対してテストを記述したい場合、AWSのSDKで用意されているClientStubsを使用して、スタブを行うことが可能です。 ドキュメント自体は公式が出しているものがありますが、この例だけではやりたいこと(Aws::S3::Client以外のインスタンスを使うケース)が実現できなかったので、今回調べたことについてまとめました。 環境 Ruby: 2.7.1 aws-sdk: 3.1.0 aws-s3-sdk: 1.114.0 公式ドキュメントから このドキュメントにあるようにAws::ClientStubsというモジュールが、各サービスに対応したClientクラスにincludeされています。 今回はS3を使って、その例を紹介します。 このモジュールに定義されているのはapi_requests, stub_data,stub_responsesの3つ

    AWS SDK Rubyでスタブを行う - Qiita
    sh19910711
    sh19910711 2024/06/16
    "AWS SDKを使用したコードに対してテストを記述したい / SDKで用意されているClientStubsを使用して、スタブを行うことが可能 / Aws::ClientStubsというモジュールが、各サービスに対応したClientクラスにincludeされています" 2022
  • Dynamo DB ベースのアプリケーションをmotoとfactory_boyを用いてユニットテストする - Qiita

    boto3 は AWS SDK の Python パッケージで、Dynamo DB などの AWS のサービスを呼び出すのに使います。 この boto3 には moto という mock パッケージがあります。 moto を使うと、テストを実行するとき Dynamo DB のスタブにテスト用のデータ(fixtures)を 返させることができるので、テーブルが存在していなくてもテストケースを通すことができます。 稿では、moto を使って Dynamo DB に依存せずにアプリケーションをテストする方法を紹介します。 さらに、factory_boy を使って fixtures の組み立てを共通化する方法も紹介します。 factory_boy は fixtures の組み立てを担う Factory クラスを備えたパッケージです。 なお、稿ではアプリケーションとして Flaskベースの AP

    Dynamo DB ベースのアプリケーションをmotoとfactory_boyを用いてユニットテストする - Qiita
    sh19910711
    sh19910711 2024/06/16
    "DynamoDB に依存せずにアプリケーションをテストする / moto を使うと、テストを実行するとき Dynamo DB のスタブにテスト用のデータ(fixtures)を 返させることができる" 2018
  • mysql の CHECKSUM TABLE が 自動テストのDBロールバックする時に便利だった - Qiita

    はじめに 去年は、言語バージョンアップにおけるE2Eテストの考え方とアプローチ方法についてを書きました。 今回は、「DBの差分とロールバック」 に関して書きたいと思います。 DB Diff を実際に使ってみた結果 前回の記事では、「DB Diff」というツールを使うことで、比較とロールバックを自動で行うことができると書いていました。 ★E2Eで検証するデータ種類によって比較方法 新規登録で同じデータが登録される。 → 「どのテーブルに変更が加わったのか?」は DBデータファイルの更新日時等から自動取得させる。 → 登録されたDBデータの差分の比較。( DB Diff ) → 比較後にテスト実行前の状態に戻す( DB Diff ) とある問題が発生し、格的な導入を断念することにしました。 レコードが多いテーブルの比較を行う場合に時間がかかり、テスト実行後のデータロールバックに時間がかかりす

    mysql の CHECKSUM TABLE が 自動テストのDBロールバックする時に便利だった - Qiita
    sh19910711
    sh19910711 2024/06/16
    "CHECKSUM の値に差異のあるテーブルが、そのテスト実行で変更のあったテーブル / そのテーブルのDUMPファイルを個別にリストアすることで、テスト実行前のデータに戻す / 短時間でロールバックできる" 2018
  • moto によって requests が意図せずモック化されてしまう問題を回避する - Qiita

    moto は、AWS SDK の mocking パッケージです。 moto を用いたユニットテストについては以前 エントリを書きました。 このなかで触れましたが、requests パッケージが意図せずモック化されてしまう問題があります。 この問題の回避策について自分なりのアプローチをまとめておきます 問題としては、moto でスタブをアクティブにすると その後の requests パッケージによるリクエストがすべてモック化されてしまうというものです: これにより、elasticsearch-py など requests に依存したパッケージにおいてHTTPリクエストのさいにエラーが起きることがあります。 回避策 回避策としては、moto の responses_mock にパススルーする URL を登録します:

    moto によって requests が意図せずモック化されてしまう問題を回避する - Qiita
    sh19910711
    sh19910711 2024/06/16
    "moto でスタブをアクティブにすると その後の requests パッケージによるリクエストがすべてモック化されてしまう / moto の responses_mock にパススルーする URL を登録 + スタブ化させたくない URL を事前に登録" 2018
  • S3などのデータストアへのアクセス機能をモックとすることでデータストアなしでユニットテストする手法( Java, Mockito ) - Qiita

    S3などのデータストアへのアクセス機能をモックとすることでデータストアなしでユニットテストする手法( Java, Mockito )S3unittestMockitoaws-sdkMock 概要 データストアにアクセスすることなくテストを可能とするポイントを紹介します。 データストア( 今回はS3 )にアクセスするオブジェクトを、外部からテスト対象クラスに注入可能としておく テスト時は、データストアにアクセスしないモックを注入する 動作確認可能なソースコードは loftkun/spring-boot-s3-mock-example にあります。 テスト対象クラス テスト対象のクラスです。S3にアクセスするclientを外部から注入できるようにしています。 ( この例ではコンストラクタで受け取っています。 ) このようにデータストアにアクセスするオブジェクトを、外部からテスト対象クラスに注入

    S3などのデータストアへのアクセス機能をモックとすることでデータストアなしでユニットテストする手法( Java, Mockito ) - Qiita
    sh19910711
    sh19910711 2024/06/16
    "データストア( 今回はS3 )にアクセスするオブジェクトを、外部からテスト対象クラスに注入可能としておく / テスト時にはモックをDI + テスト用データストアの準備が不要となり" 2020
  • サービステストをLambda+unittest用ライブラリで実装してみる - Qiita

    AWS LambdaとServerless Advent Calendar 2020 3日目の記事です。 あるサービスのテスト(外部サービスとの結合テスト)を、Lambda(python)+unittestで実装してみます。 やること 「特定の条件を満たすメールを受信した場合はBacklogに課題を起票する」というサービスをテストするエンジンをLambda+unittestで構築します。 unittestライブラリをunittestよりも上のレイヤーの試験に使います。案外使い心地がいいです。 テスト対象サービス 以下の条件を満たすメールを受信した場合に、Backlogに課題を起票します メールタイトルに特定の文字列を含む 送信元が許可された特定のメールアドレス テストエンジン Lambda(python)にunittestライブラリでテストシナリオを記述し実行 各テストケースは、概ね以下の

    サービステストをLambda+unittest用ライブラリで実装してみる - Qiita
    sh19910711
    sh19910711 2024/06/16
    "unittestライブラリをunittestよりも上のレイヤーの試験に使います / Lambda(python)にunittestライブラリでテストシナリオを記述 / すべてのテストが完了したら結果をSNSで通知" 2020
  • pythonでS3をモック化できるStubberを使って単体テスト - Qiita

    記事について pythonでS3をモック化する際に、以前はpython標準のMockを使っていたけど、boto3に標準のStubberという便利なモジュールが用意されているので、使用してみた。 なお、コードは、実際に動かしたものを公開用に修正したもので、動作確認はしておりません。ご了承ください。 環境 python3系 boto3 テストコードを書いてみる S3からオブジェクトをGETする 対象コード import boto3 func_get(): s3 = boto3.resource('s3') bucket = 'bucket' key = '/key/object.json' obj = s3.Object(bucket, key) res = obj.get() return res from botocore.stub import Stubber from botocore

    pythonでS3をモック化できるStubberを使って単体テスト - Qiita
    sh19910711
    sh19910711 2024/06/16
    "S3をモック化する際に、以前はpython標準のMockを使っていたけど、boto3に標準のStubberという便利なモジュールが用意されている / 複数回の呼び出しのレスポンスを定義 + ファーストインファーストアウトで定義できる" 2021
  • simulatorを使ったCloudFunctionsのunit testを安定化・爆速化させる - Qiita

    こんにちは。virapture株式会社のもぐめっとです。 みんなで集合写真をとったのですが、何故か僕だけぶれてました。何歳になっても落ち着かないみたいです。 今日もfirebase大好きっ子が、firebase大好きっ子向けにfirebaseの情報を提供していこうと思います。 これはFirebase Advent Calendar 202123日目の記事です。 概要 日はcloud functionsでunit testを書く際の方法として、Cloud Functionsのemulatorを使わないという選択肢とその利点と留意点について紹介します。 目標 cloud functionsのunit testを爆速にして荒ぶるCIを安定させます。 ただし、あくまで今回紹介するのは方法の一つです。 後述するデメリットはあるので必要に応じて取捨選択をしてください。 なぜCloud Functio

    simulatorを使ったCloudFunctionsのunit testを安定化・爆速化させる - Qiita
    sh19910711
    sh19910711 2024/06/16
    "cloud functionsでunit testを書く際の方法としてCloud Functionsのemulatorを使わないという選択肢 / cloud functionsのエミュレータ: 実際の挙動に近い形でfirestoreにデータを書き込んでCFが動いて・・・みたいなことをチェックできる" 2021
  • Snowflake x Terraformに自動テストを導入した話 - Qiita

    はじめに こんにちは。ARISEでデータ基盤構築業務を主に行う「データアーキテクト」というキャリアトラックに所属しているエンジニアの田畑です。先日当社のテックブログの記事でも触れましたが、現在私はSnowflakeでの大規模データ基盤構築に携わっています。 そのプロジェクトにおいて、データ基盤のインフラ面における品質担保の負担軽減を図るべく、自動テストを導入しました。今回はその経緯や実装概要、今後の展望を共有したいと思います。 前提 SnowflakeはPRD, STG, DEVの3面構成(アカウントレベルで分離) Snowflakeのオブジェクトは基Terraformで管理 TerraformコードのリポジトリはGitHubで管理 リポジトリはGit-flowで開発 各環境に対応するブランチに対してPR作成をするとterraform plan, マージをするとterraform app

    Snowflake x Terraformに自動テストを導入した話 - Qiita
    sh19910711
    sh19910711 2024/06/16
    "fixture: pytestの機能の1つ + 事前処理/事後処理を定義できる / どの単位で実施するかは先述したスコープという形で設定が可能 / テスト対象としているのは主にアクセス制御周り" 2023
  • AWS Amplify Consoleを連携させてテスト結果ページを自動生成・管理する - Qiita

    記事は、Qiita Advent Calendar 2019 - AWS Amplifyの10日目の記事です。 タイトルでは表現しづらい内容ですが、やりたいことは下図の通りです。 Amplify Consoleを利用してテスト/ビルドできるようにしていたら、テスト結果も自動的に蓄積されて参照可能な形にできないか、、、と思い始めて手を動かした結果です。 やりたいことの流れ 以前開発したCognito管理Web画面のビルドをAmplify Consoleで行う。 https://github.com/kojiisd/cognito-user-manager/tree/master そのAmplify Consoleのビルドの中でKarateやunittestによるE2Eテスト、単体テストが実施される。 E2Eテスト、単体テストの結果を別の試験結果保存用WebサイトのGithubリポジトリにP

    AWS Amplify Consoleを連携させてテスト結果ページを自動生成・管理する - Qiita
    sh19910711
    sh19910711 2024/06/16
    "テスト結果も自動的に蓄積されて参照可能な形にできないか / 結果を別の試験結果保存用WebサイトのGithubリポジトリにPush / Hugoでページのベースを作ることで、Markdownのテキストを追加するだけでページの追加が可能" 2019
  • CodeBuildでREST APIの自動テストを実行する - Qiita

    この記事は AWS Advent Calendar 2021 14日目の記事です。 概要 AWSでCI/CDパイプラインを構築する場合、マネージドサービスであるCodeシリーズを利用することが多々あります。 その中でも、ビルドを実行するCodeBuildでは自動テストのツールを組み込むことが可能です。 この記事では、CodeBuildでREST APIの自動テストを実行する方法を紹介します。記事の開発言語はPythonですが、REST APIのテストは言語に依存しないメリットがあるので、他の言語やフレームワークを使っている方にも参考になればと思います。 REST APIの自動テストツールとしてはKarateを利用します。 前提知識のある方は「CodeBuildの設定」だけ読んでいただければ、大まかな内容は掴めると思います。 2021/12/15 追記 利用したソースコードはgithubに上

    CodeBuildでREST APIの自動テストを実行する - Qiita
    sh19910711
    sh19910711 2024/06/16
    "CodeBuildでREST APIの自動テストを実行する / Karate: APIに対して、任意のリクエストを送ったり想定されるレスポンス内容を検証 + 言語自体はわかりやすく、複雑なシナリオはJavaScriptの関数を定義して実行することも可能" 2021
  • EventBridgeScheduler+ECS+Docker+SeleniumでWebサイトのスクリーンショットを定期的に撮影する - Qiita

    EventBridgeScheduler+ECS+Docker+SeleniumでWebサイトのスクリーンショットを定期的に撮影するSeleniumAWSDockerECSEventBridge EventBridgeScheduler, ECS, Docker, Seleniumを使い1時間ごとに阿部寛のHPのスクリーンショットを撮影しS3に保存する方法についてまとめました。 スクレイピング用のDockerイメージを作成 以下の記事を参考にしながらスクレイピング用のDockerイメージを作成します。 環境変数からスクレイピング先のURLと保存先のバケットを読み取ります。 参考: Selenium×dockerでテスト自動化してみた FROM --platform=linux/x86_64 python:3.12.1-alpine3.19 ENV PYTHONIOENCODING utf-

    EventBridgeScheduler+ECS+Docker+SeleniumでWebサイトのスクリーンショットを定期的に撮影する - Qiita
    sh19910711
    sh19910711 2024/06/16
    "1時間ごとに阿部寛のHPのスクリーンショットを撮影しS3に保存する / 上手く動かない場合、CloudTrailを使用してデバッグする + イベント履歴から RunTask などを確認 / オーバーライドオプションで環境変数の上書き"
  • serverspecをコンテナに格納してお手軽インフラテスト自動化 #STIG #PCI-DSS #CISベンチマーク - Qiita

    まとめ InSpecコマンドとテストコードをコンテナイメージに入れて、いつでもどこでもインフラテストを実行できるようにします。 Docker Hubで公開されているchef/inspecは、CPUアーキテクチャのARM対応していないなど不具合が発生しがちなので、Dockerfileで自前でInSpecコンテナを用意するのが近道です。 FROM ubuntu # Mixlib-install gem で InSpecをインストール RUN apt update -yq && apt install -yq ruby git nginx RUN gem install -N mixlib-install && mixlib-install download inspec -v 5 RUN dpkg -i inspec* ## ライセンス回避 RUN echo 'export CHEF_LICE

    serverspecをコンテナに格納してお手軽インフラテスト自動化 #STIG #PCI-DSS #CISベンチマーク - Qiita
    sh19910711
    sh19910711 2024/06/16
    "InSpec: RSpecやServerspecライクなコードを元にセキュリティテスト・スキャン / ゼロベースから必要なテストコードを自分で書くこともでき / InSpecを開発/メンテナンスしているProgress社が無料公開しているテストコードを活用"