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

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

新規登録して質問してみよう
ただいま回答率
85.48%
ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

テスト駆動開発

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

Q&A

解決済

2回答

565閲覧

テストコードでは日付はベタ打ちした方がいい

tomoyuki123

総合スコア273

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

テスト駆動開発

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

0グッド

0クリップ

投稿2020/04/16 02:40

編集2020/04/16 02:40

PHPで開発しています。

テストコード内で日付ライブラリのCarbonを使ってる人がいたので上記のことを言ったらなぜですか?と聞かれました。
そういえばなんでだろうと改めて考えたのですが以下の認識で問題ないでしょうか?

* テストを読む人がどんな値を期待しているのかすぐにわからない * テストにロジックを書くとバグがあった時に、テストが期待した結果にならない * Carbon自体にバグがある可能性もある

これ以外にも理由があったり、逆にベタ打ちをやめた方がいい理由があれば教えていただけないでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんにちは。

テストの目的によると思います。

再現性のあるテストを行いたい場合は、当然ですが毎回同じ入力を与えます。この場合、現在日時等を使うと毎回異なる入力を与えることになるので目的を満たしません。

逆の場合もあります。全てのケースをテストすることはそもそも不可能ですから、再現性に拘ると当然毎回同じテストしかできませんので、テスト・ケースは増えません。再現性を諦めることができる場合は、リアル時刻を使うことでテストの度に異なるテスト・ケースが生成されるのでバグ検出力は上がると思います。

単体テストの場合は前者、全体テストの場合は後者が好ましいように思います。

投稿2020/04/16 04:28

Chironian

総合スコア23272

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

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

tomoyuki123

2020/04/16 08:38

ありがとうございます! > 単体テストの場合は前者、全体テストの場合は後者が好ましいように思います。 参考にさせていただきます!!
guest

0

テストで日付が出ると、たいていの場合閾値が存在します。例えば1ヶ月前とか。
そういう場合、ベタ打ちだと困る可能性はあるのでは?

Carbon だってバグがないとは言いませんが、ベタ打ちにして「打ち間違い」するリスクとどっちを取るかという気もします。

投稿2020/04/16 02:46

tacsheaven

総合スコア13703

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

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

tomoyuki123

2020/04/16 08:38

回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問