8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

小規模チームが簡単に管理できるテスト管理アプリを個人開発しました

Posted at

report.PNG

開発者とテスト担当者がわかれていないようなチームがテスト仕様書を作成できて、共有、レポート作成と
簡単に管理できるツールが作れないかと考えTESTBASE(https://www.test-base.tech/)というテスト管理ツールを個人開発しました。
現状はベータ版としてパイロット運用をして、本番稼働に移行していけたらなと考えています。

対象読者

次のような方の参考になるような内容をまとめています。

  • 個人開発を始めようとしている方
  • テスト管理ツールを探している方

なぜ作ろうとおもったか

理由は次の3点があります。

  • 無料で使えるテスト管理ツールがなかった
  • 海外製品はIEEEなどの基準に準拠しているのか日本のExcelっぽいGUIではなかった。
  • 海外製品は単純に機能が多すぎて、使いづらかった。

オープンソースのテスト管理ツールだとTestLinkというものがありますが、UIがかなり古く、実際に使用するには難しい印象を受けます。その他では、基本的には有償のツールでした。代表的なものを上げると国産だとqangaroo(https://qangaroo.jp/)、海外製品だとTestRail(https://www.gurock.com/testrail)などがあります。

海外製品はIEEEが作成した標準的なテストテンプレートに準拠しているのか、日本で多くのエンジニアが作成していると思われるExcelベースの表形式のテストテンプレートではありませんでした。テスト管理の点から考えるとIEEEのようなテンプレートのほうが認識間違いなどが少なくなるようですが、実務上は運用は厳しいという印象を受けます。(特に小規模な開発チームでは)

また、海外製品はテストシートをテストスイートという単位で管理するようで(詳細には調べていません)これもまた高機能ですが、使いこなせないなと印象を受けました。

そこで開発者がマニュアルテストを簡単に作成できて、管理できる。さらにテスト結果の集計を簡単にできるようなツールを作成しようと考えました。

構成技術

  • bootstrap
  • jQuery
  • handsontable
  • Chart.js
  • Ruby On Rails
  • PostgreSQL
  • heroku

SPAのようなうな要件はなく、単純に入力項目を埋めていくような画面構成が多いため、フロントサイドはオーソドックスな技術を使用しています。テストシートのスプレッドシート部分はスプレッドシートのライブラリで無料で使用できて動きの安定しているhandsontableを利用しました。(一定の過去バージョンのみOSSで、それ以降は有償となっています。)

サーバーサイドは実務経験のあるSpringBoot(Java),Laravel(PHP)、RubyOnRails(Ruby)と検討しました。
実務経験があるのでSpringBootは学習工数がなく、開発作業に移れましたが、Ruby on Railsと比較すると作成しなければならないクラス数が多いのと(例:Form、Modelなど)、Ruby on Railsは優れたマイグレーション機能があるので、Ruby on Railsを採用しました。
結果として、体感ですが、SpringBootとと比較して4割減くらいの工数で開発できたと思います。

実行環境については、VPSやAWS当のIaaSも検討しましたが、一人で開発とサーバー構築するのは不可能だったのでHeorkuを採用しました。SaaSということでマルチテナントを実現する必要がありましたが、Heorkuで対応ができました。

アプリケーション構成

TESTBASEはSaaSのためマルチテナント構成にする必要がありました。複数のテナントにたいして、テナント事にサブドメインを分割して、それによりアプリケーションにアクセス可能となっています。

次のような実現方法をとっています。

  • テナント単位にサブドメインを分割
  • サブドメイン部分によりテナントを特定
  • データアクセス時にそのテナントによりデータアクセスし、テナントごとのデータ分離を実現

重要なデータ分離についてはテナントIDにて管理しており、Apartmentなどのマルチテナント用のGemは使用せず、モデルのdefault scopeとCurrentにより実現しています。defaultscopeを利用することで、CRUD操作すべてでテナントIDが条件に付与され、処理ごとにテナントIDを付与しなくてもいいようにして、保守性を実現しています。

マルチテナントはスキーマ分離方式もありますが,Heroku自体が使用を非推奨にしており、テナント数の増大によりテーブル定義等の変更が大きな負荷となってしまうため、採用しませんでした。

8
8
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
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?