Flying Cat Penguin

ゆるゆる仕事、ソフトウェアテスティング関連のことについて綴ります。

テスト開発環境を構築する(Gitlab立てるまで) #1

こんばんわ。

おーだんです。

夏はC94にでてました。

 

ただ、下記のタイトルで同人誌を出そうと思ったのですが、

なかなか時間とモチベーションが取れず落としてしまいました…。

次回は、10月08日の技術書典5に参加予定です。

ということで、現在はつらつらとそれに向けての下準備中。

 

題名:

テスト開発者のための

  TDDして、

   CI回して、

    E2Eのテスト自動実行して、

        なんやかんやする テスト開発環境構築」です。

 

実は、テスト開発をしようとしたとき、最近は開発環境に目を向けることが多いです。

なぜ、そう思うのかというと…それは、実際に利用している環境で、プロダクト開発者とテスト開発者の認識が合わないことがあるからです。

合わせなくてもよいということもあるのですが、個人的には認識が合わないことによるデメリットが強くあるように感じています。

例えば、作られているプロダクトの情報が遅く伝わることや、プロダクトの構成要素に対する理解不足が挙げられます。

私は、こういったデメリットが発生してしまうと、テスト開発に強く影響すると考えています。(少なくとも、デメリットが発生しなければ、テストを作る前にプロダクト開発者へ情報提供できたり、より重要なバグの指摘に専念できる可能性があります。)

なぜ、そういったデメリットがあるのか?

それは、開発で利用される環境の差なのではないかと思います。

開発で利用される環境を明確に定義し、維持・改善していくことで、より意識を合わせ、より素早いプロダクト開発やテスト開発につながるのではないでしょうか?

 

加えて、私が主に該当しますが、基本的にテスト開発者はコードに弱いと思います。

確かにコードに強くなくてもテスト開発はできると思うのですが、それでもテストを開発するには全て手動でやらなければならないわけではありません。

時にはテストに特化した便利なツールを利用したり、開発する必要も出てきます。

そうした時に、テスト開発者もサクッと利用したり、作れるような準備が必要ではないかと、日々感じていますし、焦りも感じています。

 

ということで、そういった理由からテスト環境構築からテストツール開発と対応するテスト開発までの一連の流れをまとめていきたいと思います。(頑張って2年くらいでまとめたい…多分3年)

 

やりたいことは2つ

  • テストツールを開発すること
  • テスト開発環境を構築すること

現在はツールはちょっと置いておいて、下記の環境を構築することを目指します。

 

f:id:dandan_611:20180816182408p:plain

使う人のイメージはこんな感じ。

最終的に全部一人でやるんですがイメージとしてはこんな感じ。

f:id:dandan_611:20180816183304p:plain

ひとまず簡単なものを実装。 

     f:id:dandan_611:20180816193544p:plain

コードは下記で公開中。(まだまだ絶賛開発途中)

github.com 

 

ひとまず、現在のタスクとしては下記を想定。

f:id:dandan_611:20180816183135p:plain

 

 

詳細の手順やツールの解説はもうちょっと待ってください(汗)

途中までは下記に…。

 

所要時間:90分くらい:多分ほとんどプロビジョンの時間

■初期環境をインストールする(Cygwin,vagrant,Virtualbox,git)

  上記のReadmeに記載されている ツールをインストールしてください


Githubから開発環境構築コードを取得する

$ git clone https://github.com/dandan611/D-environment.git


■開発環境(env_prodev)を作成する

 ひとまず、python3.6が入っている環境

$ cd D-environment/env_prodev
$ mkdir data/
$ vagrant up
$ ssh vagrant@192.168.10.10

  ※メモリが不足しそうな場合は、’vagrant halt’で停止してください。


■開発環境(env_devmng)を作成する

$ cd ..
$ cd env_devmng $ mkdir data/ $ vagrant up $ ssh vagrant@192.168.10.100

  下記にアクセスする。

  http://localhost:10080/

  ※アクセスできなかったら下記のコマンドを実行して、Gitlabのコンテナを取得し起動する。

$ sudo docker run --name gitlab-postgresql -d --env 'DB_NAME=gitlabhq_production' --env 'DB_USER=gitlab' --env 'DB_PASS=password' --env 'DB_EXTENSION=pg_trgm' --volume /srv/docker/gitlab/postgresql:/var/lib/postgresql sameersbn/postgresql:10
$ sudo docker run --name gitlab-redis -d --volume /srv/docker/gitlab/redis:/var/lib/redis sameersbn/redis:4.0.9-1
$ sudo docker run --name gitlab -d --link gitlab-postgresql:postgresql --link gitlab-redis:redisio --publish 10022:22 --publish 10080:80 --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' --env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' --env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' --volume /srv/docker/gitlab/gitlab:/home/git/data sameersbn/gitlab:11.1.4

 

  下記にrootのアカウントでログインする。(初期パスは5iveL!fe)

  
■Gitlabでグループ、アカウントを作成する

  スパナマークをクリックして、グループとアカウントを作成する

    Group:Test

          User:<個人の名前とメールアドレス>

  作成したアカウントの初期パスワードを設定する


■Gitlabでgitのssh設定を行う

       個人のアカウントでログインする

  Settings->SSH keysの項目をクリックする

  開発環境で、ssh keyを作成する

$ ssh-keygen -C "<登録したメールアドレス>" -t rsa
$ cat ~/.ssh/id_rsa.pub

        表示したssh keyを貼り付けて登録する


■Gitlabでサンプルプロジェクトを作成する

    Project:Test

 

以上です。(次は、gitlabでCIジョブの作成からシステムテスト成功まで)

f:id:dandan_611:20180816191112p:plain

 

 

参考

github.com

 

qiita.com