質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Q&A

解決済

1回答

2987閲覧

Railsでテストコードを書くときに何をアサートすればいいのかわかりません

tmiyachi

総合スコア47

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

0グッド

0クリップ

投稿2016/02/20 07:45

Railsで、Minitestを使ってテストコードを書いているのですが、どのくらいテストコードを書けばいいのか原理原則のようなものがわかりません。

  • 機能はたくさんあるので、そのうちどの機能をアサートすべきか
  • アサートの仕方として、どのように証明した方がいいのか

など、そこにルールというか、お作法のようなものを学びたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

RailsやMinitestについては知らないのですが、テスト戦略については見解を持っていますので、回答してみます。抽象的になってしまいます。ごめんなさい。

そもそもテストってなんでしょう? 私は「他の人に約束した通りに動作すること」を検証することと考えています。
つまり、「他の人に何を約束したのか?」がテスト基準になります。これは通常仕様書に記載してますね。仕様書通りに動作していることを検証するために必要なテスト項目をテストするべきです。

残念ながら、十分なテスト・セットを洗い出すことは現実問題不可能ですし、無限に開発期間も取れませんので妥協は必要です。頻繁に発生するケース(シナリオ)は漏れてはいけないと思います。また、バグが潜んでいると被害が甚大なケースもテストするべきですね。
それらが軽微な項目は開発工数等と見比べて手を抜くことも視野に入れざる得ないと思います。

なお、頭の痛いことに「仕様」のバグもあり得ます。実際に使う場面において十分な仕様を定義できていなかった結果、実使用上問題が発生する場合もあります。その意味で、実使用を想定したテスト・セットの洗い出しと仕様へのフィードバックも、多少は視野に入れておいた方がよいかも知れません。プロジェクトの性質にもよりますが。

テスト自体は必ずPASSするように組みます。アサートすることが機能の一部であれば、アサートしたらPASSし、しなければFAILするテストを組むイメージです。Minitestでそれが可能なのか把握していませんが、私自身はそのように自動テストを組んでいます。手間かかりますが。

投稿2016/02/20 08:11

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tmiyachi

2016/02/20 08:17

めちゃくちゃわかりやすいです、ご丁寧にありがとうございます。 サービスの企画というか、上流段階からみんなで考えていかないと、テストすべき項目や粒度もずれてしまいますね。 よくあるユースケースと、課金とかお金が関わるところ、そもそも自分たちが実現したいことをその仕様で実現できているか、ですね。 あとはおっしゃるとおり、どれだけ工数をかけるかのセンスですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問