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 が言ってるテストの書き方で問題なのは中の実装を見てテストを書こうとしてるところ。そんな書き方してたら意味のあるテストなんて殆ど書けない。
大事なのはテスト対象の振る舞いを決め、その通りに動作するかどうかの観点でテストを書くこと。
例えば固定のバージョンを返すメソッドでもそれが文字列なのであればフォーマットが決まってるはず。
フォーマットが決まってなければバージョンを確認して動作を変えるようなものも作れないからね。で、フォーマットが決まってるならそのフォーマット通りの文字列を返しているかどうかのテストが書ける。
逆に言えばそのバージョンが人間が異なるかどうかの確認する為の物なだけで、プログラム上から確認するためのものではないからフォーマットなんて決まってないというのであればそんなものにテストなんて書かなくていい
大事なのはテスト対象の振る舞いを決め、その通りに動作するかどうかの観点でテストを書くこと。
例えば固定のバージョンを返すメソッドでもそれが文字列なのであればフォーマットが決まってるはず。
フォーマットが決まってなければバージョンを確認して動作を変えるようなものも作れないからね。で、フォーマットが決まってるならそのフォーマット通りの文字列を返しているかどうかのテストが書ける。
逆に言えばそのバージョンが人間が異なるかどうかの確認する為の物なだけで、プログラム上から確認するためのものではないからフォーマットなんて決まってないというのであればそんなものにテストなんて書かなくていい
2017/09/28(木) 07:27:38.63ID:Q17St4K8
要はその関数の仕様が満たされているか確認できているかどうかということだろ
仕様が固定文字列を返すことなら固定文字列との比較が必要だし、特定フォーマットの文字列ならそのフォーマットか検査することが必要
仕様が固定文字列を返すことなら固定文字列との比較が必要だし、特定フォーマットの文字列ならそのフォーマットか検査することが必要
2017/09/28(木) 17:12:47.59ID:5YSrcQS5
51デフォルトの名無しさん
2017/09/28(木) 19:37:57.44ID:NUvabez2 >>50
それ、君の思い込みだから
それ、君の思い込みだから
2017/09/28(木) 20:05:09.84ID:Up+E61c/
テストコード書けなくてバカにでもされたんだろ
2017/09/29(金) 10:21:20.15ID:w8XxzvHf
>>51
ほう、カバレッジという概念に全く意味が無いとでも?
ほう、カバレッジという概念に全く意味が無いとでも?
レスを投稿する
ニュース
- 【速報】中国、水産物輸入停止と通達 日本政府に ★2 [おっさん友の会★]
- 中国側が首相答弁の撤回要求、日本側拒否★6 [夜のけいちゃん★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 [ぐれ★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 「厚かましい挑発的発言だ」中国国連大使が高市首相発言に強く反発 日本の常任理事国入りに明確に反対 [ぐれ★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 【高市訃報】ホタテ業者、死亡😇😇😇 [573041775]
- 「日本の保守層のご機嫌を取りながら、中国、ロシア、アメリカのご機嫌も取る」👈こういう総理がいれば良かったよな [762037879]
- 高市早苗 「靖国神社電撃参拝」説が浮上 [163661708]
- 【朗報】ウヨの姫小野田大臣、吠える「何か気に入らないことがあったらすぐに経済威圧をする国に依存するのはリスク」脱アメリカを宣言 [856698234]
- 【終国悲報】高市早苗、たったの10日で莫大な経済的損失を叩き出す [165981677]
- 【緊急】高市早苗 月内辞任か [695089791]
