0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Goでクラウド環境自動構築&テストカバレッジをやってみる

Posted at

はじめに

前回の記事では、Goでのテスト自動化と CI/CDの構築方法について解説しました。
今回は、テストカバレッジの向上についてとTerraformを使ったクラウド環境の自動構築について解説します。

テストカバレッジとは、テストがどれだけのコードを網羅しているかを示す指標のことです。
Terraformは、クラウド環境をコードで管理する「Infrastructure as Code(IaC)」を実現するツールで、AWS、GCP、Azureなどの環境構築を自動化できます。

対象読者

  • Goのテストカバレッジを向上させたい方
  • Terraformを使ってクラウド環境を自動構築したい方
  • 開発の効率化を目指したい方

目次

  1. Goのテストカバレッジを向上させる方法
    • カバレッジとは?
    • go test -coverを使ったカバレッジ測定
    • coverprofileを使った詳細なカバレッジ分析
    • Mockを活用したテストの強化
  2. Terraformを活用したクラウド環境の自動構築
    • Terraformとは?
    • Terraformの基本構成
    • AWSにGoアプリをデプロイする方法
  3. まとめ

1. Goのテストカバレッジを向上させる方法

1.1 カバレッジとは?

テストカバレッジ(Test Coverage)とは、ソースコードのうちテストが実行された割合を示す指標です。

カバレッジの種類 説明
ステートメントカバレッジ コードの各行が実行されたか
ブランチカバレッジ if文やswitch文の全ての分岐が通ったか
関数カバレッジ 関数が実行されたか

1.2 go test -coverを使ったカバレッジ測定

Goでは、-coverオプションをつけてgo testを実行すると、カバレッジを測定できます。

go test -cover ./...

出力例:

ok   example  0.002s  coverage: 85.0% of statements

1.3 coverprofileを使った詳細なカバレッジ分析

カバレッジレポートをファイルに保存し、詳細に分析するには -coverprofileを使用します。

go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html

ブラウザでcoverage.htmlを開くと、どのコードが未カバーかを視覚的に確認できます。

1.4 Mockを活用したテストの強化

依存関係のあるコードのテストを容易にするために、Mock(モック)を活用できます。

type MockRepository struct{}

func (m *MockRepository) GetUser(id int) string {
    return "MockUser"
}

func TestGetUser(t *testing.T) {
    mockRepo := &MockRepository{}
    result := mockRepo.GetUser(1)
    expected := "MockUser"
    if result != expected {
        t.Errorf("Expected %s but got %s", expected, result)
    }
}

Mockを使うことで、外部サービスに依存せずにユニットテストを実行できるようになります。


2. Terraformを活用したクラウド環境の自動構築

2.1 Terraformとは?

Terraformは、AWSやGCPなどのクラウド環境をコードで定義し、自動構築できるツールです。

特徴 説明
Infrastructure as Code(IaC) クラウドの設定をコードで管理できる
再現性が高い 一貫した環境を作成できる
変更の管理が容易 変更をGitで管理可能

2.2 Terraformの基本構成

Terraformの基本的な構成ファイルは.tfという拡張子で記述されます。

1. Terraformのインストール

brew install terraform

2. AWSの認証情報を設定

export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key

3. Terraformの設定ファイルを作成

main.tf(AWS EC2インスタンスを作成)

provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "go_server" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "GoServer"
  }
}

4. Terraform の適用

terraform init
terraform apply -auto-approve

AWS上にGoアプリを実行するためのサーバー(EC2 インスタンス)が作成されます。

2.3 AWSにGoアプリをデプロイする方法

GoアプリをDocker化し、TerraformでECS(コンテナ)にデプロイする構成

  1. Dockerfileを作成
FROM golang:1.18
WORKDIR /app
COPY . .
RUN go build -o main .
CMD ["./main"]
  1. ECSクラスターをTerraformで作成(ecs.tf
resource "aws_ecs_cluster" "go_cluster" {
  name = "go-cluster"
}
  1. Terraformでデプロイ
terraform apply -auto-approve

3. まとめ

項目 説明
テストカバレッジの向上 go test -coverでカバレッジを測定し、Mockを活用
Terraformでのクラウド自動構築 AWSにGoアプリを自動デプロイ可能
IaC(Infrastructure as Code) クラウド環境をコードで管理し、一貫性を確保

少し難しめの内容になりましたが、以上になります!
是非検証してみてね。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?