app.version = '1.0.0'
テストコード
expect(app.version).to.be '1.0.0'
バージョン番号1.1.0に変更すっぞ!
app.version = '1.1.0' に修正
expect(app.version).to.be '1.1.0' に修正
これただのデータの重複、たんなる二重管理ですから\(^o^)/
メンテナンス工数が二倍になるだけ
誰もそんなことやらねーよって思うかもしれないが
関数だったらやってしまうんだよね。
カバレッジがー(笑)
function getVersion() { return '1.1.0' }
expect(app.getVersion()).to.be '1.1.0'
他にも色々と、意味がないテストがある
意味がないテストしてるやつが多い。
関数の実行結果をテストコードにコピペしてテスト作るやつとかな
探検
意味がないテストをするな。VERSION==1.0.0 [無断転載禁止]©2ch.net
2017/09/09(土) 15:31:54.82ID:al+wrNfN
2017/09/09(土) 16:54:48.95ID:hfmQ7RMB
どっかユーザの目に入るところにバージョンでるなら意味あるんじゃね?
2017/09/09(土) 17:25:35.09ID:5TYgeUeA
その前に意味のないコードを入れるな
意味があるならその意味に沿ってちゃんとテストすべき
意味があるならその意味に沿ってちゃんとテストすべき
2017/09/09(土) 20:10:39.54ID:GB2h7YGf
その前に意味のないスレを立てるな
5デフォルトの名無しさん
2017/09/09(土) 20:49:02.98ID:al+wrNfN 意味がないテストっていうのは他にも有るな。
例えばテンプレートの適用結果をテストするとかな
HTML生成のためのテンプレートがあって、
テンプレートファイルを手書きして(ここまでは普通)
そのテンプレートに値を入れたHTMLをテストとして手書きする(アホ)
例えばテンプレートの適用結果をテストするとかな
HTML生成のためのテンプレートがあって、
テンプレートファイルを手書きして(ここまでは普通)
そのテンプレートに値を入れたHTMLをテストとして手書きする(アホ)
2017/09/09(土) 21:17:51.67ID:al+wrNfN
正規表現バリデーションのテストも大概意味がない。
正規表現がものすごく複雑っていうのなら話は別だが、
/^[0-9]+$/ みたいに書いてあるものに対して
数字以外入れたらエラーになることを確かめるテストはいらない
正規表現がものすごく複雑っていうのなら話は別だが、
/^[0-9]+$/ みたいに書いてあるものに対して
数字以外入れたらエラーになることを確かめるテストはいらない
2017/09/09(土) 21:23:57.43ID:al+wrNfN
まあ正規表現バリデーションのテストに関して言えば、
正規表現を直接書くのではなく、numonlyなどというメソッドを作るべき。
そのnumonlyのテストを書くのは少しは意味がある。
だけど、このフィールドはnumonlyになっているか?という
確実にテストは必要ない。
SQLのスキーマのテストしてるようなもんだよ。
SQLのcreate table文で、priceの項目をintegerと書いて
そのテストコードで、create table文のpriceがintegerであること
とテストすることに何の意味があるのだろうか
正規表現を直接書くのではなく、numonlyなどというメソッドを作るべき。
そのnumonlyのテストを書くのは少しは意味がある。
だけど、このフィールドはnumonlyになっているか?という
確実にテストは必要ない。
SQLのスキーマのテストしてるようなもんだよ。
SQLのcreate table文で、priceの項目をintegerと書いて
そのテストコードで、create table文のpriceがintegerであること
とテストすることに何の意味があるのだろうか
2017/09/09(土) 23:25:06.47ID:al+wrNfN
あー、関係ない所でアイデア思いついたわ
一部でテストのことをスペックと呼ぶ文化が有るだろ?
変数の型とかバリデーションとか
コードに書かないでスペックに書けば良いんじゃね?
一部でテストのことをスペックと呼ぶ文化が有るだろ?
変数の型とかバリデーションとか
コードに書かないでスペックに書けば良いんじゃね?
2017/09/10(日) 02:59:20.70ID:CfAD8p5O
>>1
>function getVersion() { return '1.1.0' }
>expect(app.getVersion()).to.be '1.1.0'
バージョンアップのたびにテストコードを変更してメンテするのは微妙すぎるだろ
そうじゃなく、そのバージョン用のテストスイートを書いてるのであればその種のテストにも十分意味がある
(例えば1.0系のテストと1.1系のテストを並列でメンテしてる場合)
今は単純文字列を返す実装だから無意味に感じるのだろうが
リファクタして設定ファイルからバージョンを取得するようにしたり
DBからバージョンを取得するようになったりしても
仕様を満たしてるかどうかを確認できる
テストが不要なくらい明白な実装かどうかを
毎回判断しながらテストケースを管理することのほうが意味がない
>function getVersion() { return '1.1.0' }
>expect(app.getVersion()).to.be '1.1.0'
バージョンアップのたびにテストコードを変更してメンテするのは微妙すぎるだろ
そうじゃなく、そのバージョン用のテストスイートを書いてるのであればその種のテストにも十分意味がある
(例えば1.0系のテストと1.1系のテストを並列でメンテしてる場合)
今は単純文字列を返す実装だから無意味に感じるのだろうが
リファクタして設定ファイルからバージョンを取得するようにしたり
DBからバージョンを取得するようになったりしても
仕様を満たしてるかどうかを確認できる
テストが不要なくらい明白な実装かどうかを
毎回判断しながらテストケースを管理することのほうが意味がない
2017/09/10(日) 03:10:32.77ID:CfAD8p5O
2017/09/10(日) 03:16:10.29ID:CfAD8p5O
>>5
それはテンプレートエンジンのテスト
テンプレートエンジンのバージョンなんかが変わっても同じ結果を取得できてるねってやつ
3rdパーティライブラリのテストだから自分の書いてるアプリのテストとは種類が違う
それはテンプレートエンジンのテスト
テンプレートエンジンのバージョンなんかが変わっても同じ結果を取得できてるねってやつ
3rdパーティライブラリのテストだから自分の書いてるアプリのテストとは種類が違う
2017/09/10(日) 08:18:10.38ID:G4ZVCKWZ
>>9
> 今は単純文字列を返す実装だから無意味に感じるのだろうが
> リファクタして設定ファイルからバージョンを取得するようにしたり
> DBからバージョンを取得するようになったりしても
> 仕様を満たしてるかどうかを確認できる
重要なのはなにをテストしているのかをきっちり理解することですよ
バージョン番号が書いてあるところがファイルでも変数でも関係ないですが、
1.0.0と書いたものが、1.0.0であることをテストしたいのか?
それとも、バージョン番号が正しく取得できることをテストしたいのか?
1.0.0と書いたものが1.0.0であることとかアホらしいですよねw
そう書いたんだから、そう取得できるのは当たり前
これは単なるデータの二重管理に過ぎません。
重要なのは、バージョン番号が正しく取得できることなのですよ。
具体的なデータ(バージョン番号)はダミーデータで十分です。
まずテストコードでそのダミーデータ(例えば0.0.1)を
変数なり、ファイルなり、DBなりに格納します。
そしてそれがgetVersion()で正しく取得できることテストするのです。
そうすりゃ、getVersion() == 1.0.0
あ゛〜、バージョンが上がっちまったー、VERSIONファイルと
テストコードの両方を1.1.0に修正しなきゃーなんて
アホなメンテは必要なくなるなるわけです。
> 今は単純文字列を返す実装だから無意味に感じるのだろうが
> リファクタして設定ファイルからバージョンを取得するようにしたり
> DBからバージョンを取得するようになったりしても
> 仕様を満たしてるかどうかを確認できる
重要なのはなにをテストしているのかをきっちり理解することですよ
バージョン番号が書いてあるところがファイルでも変数でも関係ないですが、
1.0.0と書いたものが、1.0.0であることをテストしたいのか?
それとも、バージョン番号が正しく取得できることをテストしたいのか?
1.0.0と書いたものが1.0.0であることとかアホらしいですよねw
そう書いたんだから、そう取得できるのは当たり前
これは単なるデータの二重管理に過ぎません。
重要なのは、バージョン番号が正しく取得できることなのですよ。
具体的なデータ(バージョン番号)はダミーデータで十分です。
まずテストコードでそのダミーデータ(例えば0.0.1)を
変数なり、ファイルなり、DBなりに格納します。
そしてそれがgetVersion()で正しく取得できることテストするのです。
そうすりゃ、getVersion() == 1.0.0
あ゛〜、バージョンが上がっちまったー、VERSIONファイルと
テストコードの両方を1.1.0に修正しなきゃーなんて
アホなメンテは必要なくなるなるわけです。
131 == 12
2017/09/10(日) 08:38:12.02ID:G4ZVCKWZ >>12の考え方はすごく重要で、これを理解していないために
無意味なテストをしていることが多い。
ロジックではなくデータをテストしている。
書いたものがそう書いてあるか?だけを調べている
無意味なテストが極めて多い。
無意味なテストをしていることが多い。
ロジックではなくデータをテストしている。
書いたものがそう書いてあるか?だけを調べている
無意味なテストが極めて多い。
2017/09/10(日) 08:38:50.50ID:G4ZVCKWZ
つまりテストを書くときはダミーデータを使うということですね。
2017/09/10(日) 10:49:50.23ID:1MFrqOnc
ダミーだこりゃ
2017/09/10(日) 10:56:13.13ID:G4ZVCKWZ
>>10
> バリデーションのテストは
> 「ある項目に数字以外を入れたらエラーになる」という
> 仕様を満たしているかどうかのテストであって正規表現のテストをするわけではない
> 実装が正規表現である必要もない
はい、そのとおりですね。
処理をしているのが正規表現であるかそれ以外のコードであるかは関係ない。
だからここでやるべきことはnumberOnlyという関数を作ること
そしてそのnumberOnlyが仕様を満たしているかどうか? のテストです。
これは入念にテストする必要があるでしょう。
もしてテストしなければいけない(?)項目はもう一つ残っていますね?
numberOnlyのバリデーションが設定されている項目はpriceだけではなく
sizeやcountなどもいくつもあるでしょう。
それらの数値項目が10個あったとき、10個全てに
numberOnlyでやったのと同じ入念なテストは必要ないのですよ。
まあやるとしたとしても「ある項目のバリデーションがnumberOnlyであること」
ぐらいでしょうが、これもまさに項目のバリデーションにnumberOnlyと
書いたんだから当然numberOnlyに決まってるだろという
データの二重管理にすぎない問題になるわけですよ。
自分で定義したものが(書いたものが)、自分で定義した(書いた)とおりに
なっているかなんて意味がないテストです
> バリデーションのテストは
> 「ある項目に数字以外を入れたらエラーになる」という
> 仕様を満たしているかどうかのテストであって正規表現のテストをするわけではない
> 実装が正規表現である必要もない
はい、そのとおりですね。
処理をしているのが正規表現であるかそれ以外のコードであるかは関係ない。
だからここでやるべきことはnumberOnlyという関数を作ること
そしてそのnumberOnlyが仕様を満たしているかどうか? のテストです。
これは入念にテストする必要があるでしょう。
もしてテストしなければいけない(?)項目はもう一つ残っていますね?
numberOnlyのバリデーションが設定されている項目はpriceだけではなく
sizeやcountなどもいくつもあるでしょう。
それらの数値項目が10個あったとき、10個全てに
numberOnlyでやったのと同じ入念なテストは必要ないのですよ。
まあやるとしたとしても「ある項目のバリデーションがnumberOnlyであること」
ぐらいでしょうが、これもまさに項目のバリデーションにnumberOnlyと
書いたんだから当然numberOnlyに決まってるだろという
データの二重管理にすぎない問題になるわけですよ。
自分で定義したものが(書いたものが)、自分で定義した(書いた)とおりに
なっているかなんて意味がないテストです
2017/09/10(日) 11:30:43.35ID:G4ZVCKWZ
> 自分で定義したものが(書いたものが)、自分で定義した(書いた)とおりに
勘違いされそうだから補足しておくと、
書いたものが書いたとおりになるっていうのはデータの話な
プログラマによる処理が一切なく、加工されずに
そのまま結果となるようなもの
書いたコードが書いた通り動くという話はもちろんしてない。
Aと書いたんだから、Aに決まってるだろ。レベルの話。
勘違いされそうだから補足しておくと、
書いたものが書いたとおりになるっていうのはデータの話な
プログラマによる処理が一切なく、加工されずに
そのまま結果となるようなもの
書いたコードが書いた通り動くという話はもちろんしてない。
Aと書いたんだから、Aに決まってるだろ。レベルの話。
2017/09/10(日) 11:37:19.05ID:G4ZVCKWZ
>>11
> それはテンプレートエンジンのテスト
> 3rdパーティライブラリのテストだから自分の書いてるアプリのテストとは種類が違う
テンプレートエンジン自身のテストは
テンプレートエンジン開発側で行ってる
自作のテンプレートエンジンの話は別
「3rdパーティライブラリのテスト」と書いてあるから
その点は同意取れていると思うが
俺が言ってるのは具体例を出すと以下のようなテンプレートファイルがあった時
<html>
<head>
<title>{{title}}</title>
</head>
<body>
数十行のコード
</body>
</html>
テストコードの中に、このテンプレートにtitleの値を埋め込んだ、以下のようなテストを書く意味は無いってこと
expect(template('file.tmpl.html', {title: 'タイトル'})).to.be "<html>\n <head>\n <title>タイトル</title>\n〜"
さすがににそんなことやってるやつはいないと思うがねw
> それはテンプレートエンジンのテスト
> 3rdパーティライブラリのテストだから自分の書いてるアプリのテストとは種類が違う
テンプレートエンジン自身のテストは
テンプレートエンジン開発側で行ってる
自作のテンプレートエンジンの話は別
「3rdパーティライブラリのテスト」と書いてあるから
その点は同意取れていると思うが
俺が言ってるのは具体例を出すと以下のようなテンプレートファイルがあった時
<html>
<head>
<title>{{title}}</title>
</head>
<body>
数十行のコード
</body>
</html>
テストコードの中に、このテンプレートにtitleの値を埋め込んだ、以下のようなテストを書く意味は無いってこと
expect(template('file.tmpl.html', {title: 'タイトル'})).to.be "<html>\n <head>\n <title>タイトル</title>\n〜"
さすがににそんなことやってるやつはいないと思うがねw
2017/09/10(日) 11:42:21.70ID:G4ZVCKWZ
> テンプレートエンジンのバージョンなんかが変わっても同じ結果を取得できてるねってやつ
これは自分の書いたコードのテストではなく互換性のテスト。
互換性のテストは通常サードパーティ側でやってるはずだが
信じられないのであれば自分でやる必要があるかもしれない。
だがその場合でも>>18のようなテストは不要
なぜならダミーデータでテストすればいいからだ。
この場合 {{ }} の仕様に互換性があることをテストするために
テンプレートファイルの中身は {{title}} この一行で良い
>>18のような長ったらしいHTMLテンプレートファイルを使って
互換性テストをやる必要はない。
{{title}} の部分は、書いた文字そのまま返ってくるわけではなく
加工される部分だから互換性テストを行う必要はある。
だが {{title}}以外の部分は書いた文字がそのまま
返ってきているだけなのでテストする必要はない。
これは自分の書いたコードのテストではなく互換性のテスト。
互換性のテストは通常サードパーティ側でやってるはずだが
信じられないのであれば自分でやる必要があるかもしれない。
だがその場合でも>>18のようなテストは不要
なぜならダミーデータでテストすればいいからだ。
この場合 {{ }} の仕様に互換性があることをテストするために
テンプレートファイルの中身は {{title}} この一行で良い
>>18のような長ったらしいHTMLテンプレートファイルを使って
互換性テストをやる必要はない。
{{title}} の部分は、書いた文字そのまま返ってくるわけではなく
加工される部分だから互換性テストを行う必要はある。
だが {{title}}以外の部分は書いた文字がそのまま
返ってきているだけなのでテストする必要はない。
2017/09/10(日) 13:28:42.54ID:ZKxYrqVl
設計書書けよ
2017/09/10(日) 14:12:07.70ID:CfAD8p5O
>>16
>まあやるとしたとしても「ある項目のバリデーションがnumberOnlyであること」
分かってる風で分かってないね
「ある項目のバリデーションがnumberOnlyであること」ってのは仕様じゃなく実装方法
その区別がついてないから中身の無い長文を量産するんだよ
>expect(template('file.tmpl.html', {title: 'タイトル'})).to.be "<html>¥n <head>¥n <title>タイトル</title>¥n〜"
このコードはテスト方法よりもテストの意図が全く伝わらないほうが大きな問題
悪い例として書いてるけど、仕様と実装の区別がついてないからこそ
議論の焦点がテストの仕様ではなくテストの実装に当たってる
>まあやるとしたとしても「ある項目のバリデーションがnumberOnlyであること」
分かってる風で分かってないね
「ある項目のバリデーションがnumberOnlyであること」ってのは仕様じゃなく実装方法
その区別がついてないから中身の無い長文を量産するんだよ
>expect(template('file.tmpl.html', {title: 'タイトル'})).to.be "<html>¥n <head>¥n <title>タイトル</title>¥n〜"
このコードはテスト方法よりもテストの意図が全く伝わらないほうが大きな問題
悪い例として書いてるけど、仕様と実装の区別がついてないからこそ
議論の焦点がテストの仕様ではなくテストの実装に当たってる
2017/09/10(日) 16:08:22.02ID:G4ZVCKWZ
2017/09/10(日) 16:09:56.35ID:G4ZVCKWZ
>>21
> 「ある項目のバリデーションがnumberOnlyであること」ってのは仕様じゃなく実装方法
> その区別がついてないから中身の無い長文を量産するんだよ
あんたは「それは違う」とだけ書いて理由を何も書いていない。
> 「ある項目のバリデーションがnumberOnlyであること」ってのは仕様じゃなく実装方法
> その区別がついてないから中身の無い長文を量産するんだよ
あんたは「それは違う」とだけ書いて理由を何も書いていない。
2017/09/10(日) 16:10:45.25ID:G4ZVCKWZ
つーかテストの仕様ってなんだ?
それをいうならアプリの仕様だろ
それをいうならアプリの仕様だろ
2017/09/10(日) 16:11:17.12ID:G4ZVCKWZ
あとVERSIONの話は反論なしかw
2017/09/10(日) 17:18:17.17ID:ZKxYrqVl
設計書書けよw
単体なら設計書通りに動くかどうかをテストしろよ
コード見てテストを決めようとするからそんな問題が出てくんだろが雑魚が
単体なら設計書通りに動くかどうかをテストしろよ
コード見てテストを決めようとするからそんな問題が出てくんだろが雑魚が
2017/09/10(日) 17:25:04.80ID:G4ZVCKWZ
こう言いかえれば良いんですかね?
問題は設計書に1.0.0が返ってくることって
書くのはアホらしいって話ですな。
バージョンが上がるたびに1.1.0が返ってくる
ことなんて修正しないといけない
VERSIONファイルに1.1.0と書いてあるのだから
1.1.0が帰ってくるなんて当たり前でしょう。
また数字のみであることというテストは
項目のバリデーション定義ファイルにnumberOnlyと
書いて有ることを確認すれば良いわけですよ。
バリデーション定義ファイルにnumberOnlyと書いてあるのだから
numberOnlyであるのは当たり前。なのに項目一つづつ
numberOnlyの仕様を満たしているか?というテストをするのは無意味です。
画面の出力結果を目視で観察するぐらいなら
定義ファイルを目視で観察すれば良いのです。
自動化のためにテストコードを書くというのなら、
定義ファイルに書いて有ることをテストすれば良いのです。
numberOnlyと書いてある事。とね。
問題は設計書に1.0.0が返ってくることって
書くのはアホらしいって話ですな。
バージョンが上がるたびに1.1.0が返ってくる
ことなんて修正しないといけない
VERSIONファイルに1.1.0と書いてあるのだから
1.1.0が帰ってくるなんて当たり前でしょう。
また数字のみであることというテストは
項目のバリデーション定義ファイルにnumberOnlyと
書いて有ることを確認すれば良いわけですよ。
バリデーション定義ファイルにnumberOnlyと書いてあるのだから
numberOnlyであるのは当たり前。なのに項目一つづつ
numberOnlyの仕様を満たしているか?というテストをするのは無意味です。
画面の出力結果を目視で観察するぐらいなら
定義ファイルを目視で観察すれば良いのです。
自動化のためにテストコードを書くというのなら、
定義ファイルに書いて有ることをテストすれば良いのです。
numberOnlyと書いてある事。とね。
2017/09/10(日) 17:33:45.82ID:ZKxYrqVl
>>27
設計書がそうであればどんなにくだらないことでもテストしなければならないよな
これが普通の感覚だな
コードを見てテストの仕様を考えるからくだらないなんて話が出てくる
くだらなかろうがなんだろうが仕様または設計書通りに動かすことが俺らの仕事なんだよ
設計書がそうであればどんなにくだらないことでもテストしなければならないよな
これが普通の感覚だな
コードを見てテストの仕様を考えるからくだらないなんて話が出てくる
くだらなかろうがなんだろうが仕様または設計書通りに動かすことが俺らの仕事なんだよ
2017/09/10(日) 18:23:45.21ID:CfAD8p5O
>>25
「バージョン番号は1.1.1である」という仕様を満たすかどうかのテストと
getVersionメソッドがメソッド仕様どおりに動くかどうかのテストとは別物
俺が言ってたのは前者の話ね
後者のテストをしたいならメソッド仕様をまず明確にしようね
設計書書けってのと同じこと
「バージョン番号は1.1.1である」という仕様を満たすかどうかのテストと
getVersionメソッドがメソッド仕様どおりに動くかどうかのテストとは別物
俺が言ってたのは前者の話ね
後者のテストをしたいならメソッド仕様をまず明確にしようね
設計書書けってのと同じこと
2017/09/10(日) 18:29:29.72ID:CfAD8p5O
2017/09/10(日) 21:25:57.68ID:LMpnnAyy
作った本人とか同じ部門内でテストコード作るのはテストじゃねぇよ最低限のバグ減らしというかチェックだろ
二重管理とかのレベルですらない
まともにテストするとこなら、仕様書、設計書をベースに絶対に設計部門以外でテストを作らなきゃボロクソに叩かれる
そうするとたとえバージョンチェックでも意味は出てくる
二重管理とかのレベルですらない
まともにテストするとこなら、仕様書、設計書をベースに絶対に設計部門以外でテストを作らなきゃボロクソに叩かれる
そうするとたとえバージョンチェックでも意味は出てくる
2017/09/10(日) 21:29:54.28ID:ZKxYrqVl
>>31
なんか複雑なインターフェースしてて思った値が返って来ないんだろ
なんか複雑なインターフェースしてて思った値が返って来ないんだろ
2017/09/10(日) 21:31:19.11ID:LMpnnAyy
2017/09/10(日) 21:37:38.91ID:LMpnnAyy
ま、やってるテストが意味ないと思うなら
テストのやり方を意味あるものにすれば良いのだがそれすら思いつかんと
テストのやり方を意味あるものにすれば良いのだがそれすら思いつかんと
2017/09/10(日) 21:55:28.82ID:ZKxYrqVl
もう仕事の手順が間違ってるわけで
2017/09/13(水) 09:26:04.89ID:SbfCQQCY
TDDでok
2017/09/14(木) 12:00:39.09ID:yiOvFiYP
>>31
手作業でテストするならそうだろうけど自動テストが当たり前の時代にその考え方は古すぎる
手作業でテストするならそうだろうけど自動テストが当たり前の時代にその考え方は古すぎる
2017/09/14(木) 12:41:22.58ID:NPMvj+H/
>>31
いつの時代の話だよ
いつの時代の話だよ
2017/09/14(木) 14:20:12.84ID:+X9KJHHB
時代の問題か?
設計書通りに動くこと
仕様書通りに動くこと
が時代遅れとか
掲示板のレベル下がってるな
プログラム組むのやめて田舎帰れよ
役に立たねぇ
設計書通りに動くこと
仕様書通りに動くこと
が時代遅れとか
掲示板のレベル下がってるな
プログラム組むのやめて田舎帰れよ
役に立たねぇ
2017/09/14(木) 14:28:59.77ID:1Cd2i0pl
そうじゃないんだよなあ。読解力ガイジかよ
2017/09/14(木) 20:37:17.99ID:+X9KJHHB
>>40
ゴミクズうざ
ゴミクズうざ
2017/09/14(木) 21:02:50.08ID:XVFgKdZv
2017/09/14(木) 21:44:39.62ID:+X9KJHHB
>>42
は?死んで
は?死んで
2017/09/15(金) 07:21:59.46ID:3dLbew77
作成者が自分の望んだ観点しかテスト出来ないってこういうことなんだろうな
2017/09/20(水) 08:59:37.11ID:G8o9DQ5K
>>39
作る前から完璧な設計・仕様が確定してる前提ってのがいつの時代の話だよってことじゃね?
作る前から完璧な設計・仕様が確定してる前提ってのがいつの時代の話だよってことじゃね?
2017/09/20(水) 09:01:51.05ID:dboA6E8g
>>45
UnitTestなんて書いたことないんだろ
UnitTestなんて書いたことないんだろ
2017/09/20(水) 10:14:42.96ID:59PsJZUl
48デフォルトの名無しさん
2017/09/27(水) 23:02:52.48ID:YYHqfTn1 >>1 が言ってるテストの書き方で問題なのは中の実装を見てテストを書こうとしてるところ。そんな書き方してたら意味のあるテストなんて殆ど書けない。
大事なのはテスト対象の振る舞いを決め、その通りに動作するかどうかの観点でテストを書くこと。
例えば固定のバージョンを返すメソッドでもそれが文字列なのであればフォーマットが決まってるはず。
フォーマットが決まってなければバージョンを確認して動作を変えるようなものも作れないからね。で、フォーマットが決まってるならそのフォーマット通りの文字列を返しているかどうかのテストが書ける。
逆に言えばそのバージョンが人間が異なるかどうかの確認する為の物なだけで、プログラム上から確認するためのものではないからフォーマットなんて決まってないというのであればそんなものにテストなんて書かなくていい
大事なのはテスト対象の振る舞いを決め、その通りに動作するかどうかの観点でテストを書くこと。
例えば固定のバージョンを返すメソッドでもそれが文字列なのであればフォーマットが決まってるはず。
フォーマットが決まってなければバージョンを確認して動作を変えるようなものも作れないからね。で、フォーマットが決まってるならそのフォーマット通りの文字列を返しているかどうかのテストが書ける。
逆に言えばそのバージョンが人間が異なるかどうかの確認する為の物なだけで、プログラム上から確認するためのものではないからフォーマットなんて決まってないというのであればそんなものにテストなんて書かなくていい
レスを投稿する
ニュース
- 京都のホテル大幅値下げ 訪日中国人客、年1000万人目前で急ブレーキ ★2 [蚤の市★]
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★4 [ぐれ★]
- 「今の女性はルッキズム」は本当なのか? 若い世代が結婚相手に求める"本当の条件" [少考さん★]
- 【サッカー】J1リーグの2025年平均観客動員数が4.4%増の21,246人 最多入場者数の2019年を超えて過去最高値 ★2 [尺アジ★]
- 舛添要一氏「政府は必要な反論はすべきだが、「優雅なる無視」も中国には効く」…日中関係に私見 [少考さん★]
- 【沖縄】宮古島で陸自防災訓練に抗議した団体、「恫喝された」と駐屯地トップ厳正捜査求め署名運動 「市民弾圧と戦争への道を…」 [少考さん★]
- 鈴木大臣「お米券の使い勝手は悪くない。卵や味噌、醤油も買えます。」 [237216734]
- 【実況】博衣こよりのえちえちドラクエ1&2リメイク🧪★3
- 正義のミカタ「中国は日本人の反高市勢力を裏で操ってる。あいつらはスパイ」 [931948549]
- 【謎高市】帽子被ってるやつの正体💥💥wwwwwwwwwwwwwwwwwwwwwwwww [683137174]
- 【画像】最新版氷川きよし、限界突破 [242521385]
- 官僚「差し控えます、と答えて」答弁用意→高市総理「どう考えても存立危機事態」 [834922174]
