6
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?

【あけましておめでとうございますpart2】試験仕様書作成スクリプトをRubyで作成しました。

Last updated at Posted at 2025-01-06

独り身 & 一人暮らしの年末年始って暇なんですよ。知ってましたか?

前回は「Railsのdb/schema.rbからDB仕様書を作成するスクリプト」を作成したのですが、今回は「どのアプリケーションにも適応可能な試験仕様書を作成できるRubyスクリプト」を作成しました。

↓前回の記事↓

試験仕様書といっても、7割くらい出来上がっている試験仕様書が作成されるくらいのスクリプトです。

以降で示している例も、わかりやすくするための例でしかありません。

ソースコードをGithubに上げているので、詳細についてはそちらを参照してください。

何のテストができる試験仕様書?

元々は、弊社内で使用しているアプリケーションの試験仕様書作成業務の工数を削減したいという考えから、以下のことができるRubyスクリプトを作成しました。

(以後、弊社で使用しているアプリケーションをあけおめアプリと呼びます。)

1. あけおめアプリのログインユーザのアクセス権限の試験

このツールを作成した一番の目的はこれです。ログインユーザの種別ごとに試験仕様書の結果が異なるので、これを細かく見ながら試験仕様書を作成しなきゃいけないのがストレスでした

settings.ymlを作成して、指定された形式で権限情報を記述しておくと、以下のように結果が異なる試験を自動で作成できます。

手順1. 管理者でログインして、メニューの「顧客」をクリックする。
結果1. 顧客一覧画面が表示されること。

手順2. 一般ユーザでログインして、メニューの「顧客」をクリックする。
結果2. 顧客一覧画面が表示されないこと。

2. 新規登録・複製・編集の試験

ここは自動で作成できたらラッキーくらいの感覚でした。

新規登録画面の試験では「新規登録実行」の試験、複製画面の試験では「複製実行」の試験、編集画面での試験では「更新実行」「削除実行」の試験が自動で作成できます。

3. テストケース管理ツール「TestRail」のインポート可能なCSV形式で出力される

デフォルトの形式では、弊社で使用しているフォーマットになっています。
項目が増えたり減ったりする場合にはちょっとソースコードをいじる必要があります。
これは、今後対応したいな。

現在のフォーマット
セクション,タイトル,前提条件,備考,手順,期待する結果,対応バージョン

大まかに上記2点かなと思います。

今後の発展について

以下の点について、実装できたらいいなと思っています。

  • 新規登録/複製/編集時のバリデーションの試験 → not: nulllのバリデーションは実装済み
  • 試験用データの自動作成
  • 出力時のCSV構成を簡単に変えられるようにする

上記の上2つを実装するには、DB設計書では足りなくて、「画面設計書」の内容をRubyに読ませる必要があります。
案としては、以下の2点です。

  • 生成AI(GPT-4o or Claude3.5)を使用して、Markdown/yml/csvのいずれかの形式に落とし込む
  • ERB(SLIM)を正規表現を使って読み込み、Markdown/yml/csvのいずれかの形式に落とし込む

なるべくコストはかけたくないので、正規表現を使用する方法になるかなぁとは思っています。
あけおめアプリのViewコードがSLIMだから一般化できるか不安...

他にいい案があったら採用させていただきます。

以上

6
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
6
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?