意味がないテストをするな。VERSION==1.0.0 [無断転載禁止]©2ch.net (87レス)
上下前次1-新
11(1): 2017/09/10(日)03:16 ID:CfAD8p5O(3/6) AAS
>>5
それはテンプレートエンジンのテスト
テンプレートエンジンのバージョンなんかが変わっても同じ結果を取得できてるねってやつ
3rdパーティライブラリのテストだから自分の書いてるアプリのテストとは種類が違う
12(1): 2017/09/10(日)08:18 ID:G4ZVCKWZ(1/12) AAS
>>9
> 今は単純文字列を返す実装だから無意味に感じるのだろうが
> リファクタして設定ファイルからバージョンを取得するようにしたり
> DBからバージョンを取得するようになったりしても
> 仕様を満たしてるかどうかを確認できる
重要なのはなにをテストしているのかをきっちり理解することですよ
バージョン番号が書いてあるところがファイルでも変数でも関係ないですが、
1.0.0と書いたものが、1.0.0であることをテストしたいのか?
それとも、バージョン番号が正しく取得できることをテストしたいのか?
1.0.0と書いたものが1.0.0であることとかアホらしいですよねw
省11
13: 1 == 12 2017/09/10(日)08:38 ID:G4ZVCKWZ(2/12) AAS
>>12の考え方はすごく重要で、これを理解していないために
無意味なテストをしていることが多い。
ロジックではなくデータをテストしている。
書いたものがそう書いてあるか?だけを調べている
無意味なテストが極めて多い。
14: 2017/09/10(日)08:38 ID:G4ZVCKWZ(3/12) AAS
つまりテストを書くときはダミーデータを使うということですね。
15: 2017/09/10(日)10:49 ID:1MFrqOnc(1) AAS
ダミーだこりゃ
16(1): 2017/09/10(日)10:56 ID:G4ZVCKWZ(4/12) AAS
>>10
> バリデーションのテストは
> 「ある項目に数字以外を入れたらエラーになる」という
> 仕様を満たしているかどうかのテストであって正規表現のテストをするわけではない
> 実装が正規表現である必要もない
はい、そのとおりですね。
処理をしているのが正規表現であるかそれ以外のコードであるかは関係ない。
だからここでやるべきことはnumberOnlyという関数を作ること
そしてそのnumberOnlyが仕様を満たしているかどうか? のテストです。
これは入念にテストする必要があるでしょう。
省11
17: 2017/09/10(日)11:30 ID:G4ZVCKWZ(5/12) AAS
> 自分で定義したものが(書いたものが)、自分で定義した(書いた)とおりに
勘違いされそうだから補足しておくと、
書いたものが書いたとおりになるっていうのはデータの話な
プログラマによる処理が一切なく、加工されずに
そのまま結果となるようなもの
書いたコードが書いた通り動くという話はもちろんしてない。
Aと書いたんだから、Aに決まってるだろ。レベルの話。
18(1): 2017/09/10(日)11:37 ID:G4ZVCKWZ(6/12) AAS
>>11
> それはテンプレートエンジンのテスト
> 3rdパーティライブラリのテストだから自分の書いてるアプリのテストとは種類が違う
テンプレートエンジン自身のテストは
テンプレートエンジン開発側で行ってる
自作のテンプレートエンジンの話は別
「3rdパーティライブラリのテスト」と書いてあるから
その点は同意取れていると思うが
俺が言ってるのは具体例を出すと以下のようなテンプレートファイルがあった時
<html>
省10
19: 2017/09/10(日)11:42 ID:G4ZVCKWZ(7/12) AAS
> テンプレートエンジンのバージョンなんかが変わっても同じ結果を取得できてるねってやつ
これは自分の書いたコードのテストではなく互換性のテスト。
互換性のテストは通常サードパーティ側でやってるはずだが
信じられないのであれば自分でやる必要があるかもしれない。
だがその場合でも>>18のようなテストは不要
なぜならダミーデータでテストすればいいからだ。
この場合 {{ }} の仕様に互換性があることをテストするために
テンプレートファイルの中身は {{title}} この一行で良い
>>18のような長ったらしいHTMLテンプレートファイルを使って
互換性テストをやる必要はない。
省4
20: 2017/09/10(日)13:28 ID:ZKxYrqVl(1/5) AAS
設計書書けよ
21(2): 2017/09/10(日)14:12 ID:CfAD8p5O(4/6) AAS
>>16
>まあやるとしたとしても「ある項目のバリデーションがnumberOnlyであること」
分かってる風で分かってないね
「ある項目のバリデーションがnumberOnlyであること」ってのは仕様じゃなく実装方法
その区別がついてないから中身の無い長文を量産するんだよ
>expect(template('file.tmpl.html', {title: 'タイトル'})).to.be "<html>¥n <head>¥n <title>タイトル</title>¥n〜"
このコードはテスト方法よりもテストの意図が全く伝わらないほうが大きな問題
悪い例として書いてるけど、仕様と実装の区別がついてないからこそ
議論の焦点がテストの仕様ではなくテストの実装に当たってる
22: 2017/09/10(日)16:08 ID:G4ZVCKWZ(8/12) AAS
>>21
だから、そういうのが意味がないテストだと言ってる
コードを実装して、その実装したコードを
テストコードから実行すれば
テストOKとかやってるやつが多い
何をテストしているのか全くわからない
23: 2017/09/10(日)16:09 ID:G4ZVCKWZ(9/12) AAS
>>21
> 「ある項目のバリデーションがnumberOnlyであること」ってのは仕様じゃなく実装方法
> その区別がついてないから中身の無い長文を量産するんだよ
あんたは「それは違う」とだけ書いて理由を何も書いていない。
24(1): 2017/09/10(日)16:10 ID:G4ZVCKWZ(10/12) AAS
つーかテストの仕様ってなんだ?
それをいうならアプリの仕様だろ
25(1): 2017/09/10(日)16:11 ID:G4ZVCKWZ(11/12) AAS
あとVERSIONの話は反論なしかw
26(1): 2017/09/10(日)17:18 ID:ZKxYrqVl(2/5) AAS
設計書書けよw
単体なら設計書通りに動くかどうかをテストしろよ
コード見てテストを決めようとするからそんな問題が出てくんだろが雑魚が
27(2): 2017/09/10(日)17:25 ID:G4ZVCKWZ(12/12) AAS
こう言いかえれば良いんですかね?
問題は設計書に1.0.0が返ってくることって
書くのはアホらしいって話ですな。
バージョンが上がるたびに1.1.0が返ってくる
ことなんて修正しないといけない
VERSIONファイルに1.1.0と書いてあるのだから
1.1.0が帰ってくるなんて当たり前でしょう。
また数字のみであることというテストは
項目のバリデーション定義ファイルにnumberOnlyと
書いて有ることを確認すれば良いわけですよ。
省8
28: 2017/09/10(日)17:33 ID:ZKxYrqVl(3/5) AAS
>>27
設計書がそうであればどんなにくだらないことでもテストしなければならないよな
これが普通の感覚だな
コードを見てテストの仕様を考えるからくだらないなんて話が出てくる
くだらなかろうがなんだろうが仕様または設計書通りに動かすことが俺らの仕事なんだよ
29: 2017/09/10(日)18:23 ID:CfAD8p5O(5/6) AAS
>>25
「バージョン番号は1.1.1である」という仕様を満たすかどうかのテストと
getVersionメソッドがメソッド仕様どおりに動くかどうかのテストとは別物
俺が言ってたのは前者の話ね
後者のテストをしたいならメソッド仕様をまず明確にしようね
設計書書けってのと同じこと
30: 2017/09/10(日)18:29 ID:CfAD8p5O(6/6) AAS
>>24
what to testがテストの仕様
how to testがテストの実装
>>27を読んでもwhat to testを理解してないのが分かる
31(3): 2017/09/10(日)21:25 ID:LMpnnAyy(1/3) AAS
作った本人とか同じ部門内でテストコード作るのはテストじゃねぇよ最低限のバグ減らしというかチェックだろ
二重管理とかのレベルですらない
まともにテストするとこなら、仕様書、設計書をベースに絶対に設計部門以外でテストを作らなきゃボロクソに叩かれる
そうするとたとえバージョンチェックでも意味は出てくる
32: 2017/09/10(日)21:29 ID:ZKxYrqVl(4/5) AAS
>>31
なんか複雑なインターフェースしてて思った値が返って来ないんだろ
33: 2017/09/10(日)21:31 ID:LMpnnAyy(2/3) AAS
まったくもって>>26 の言うとおり
意味が無いとか言い訳して設計書すら書かないとかコード書いてから設計書作るやつとか
仕様合わせるとバグりまくりなんだよなぁ
34: 2017/09/10(日)21:37 ID:LMpnnAyy(3/3) AAS
ま、やってるテストが意味ないと思うなら
テストのやり方を意味あるものにすれば良いのだがそれすら思いつかんと
35: 2017/09/10(日)21:55 ID:ZKxYrqVl(5/5) AAS
もう仕事の手順が間違ってるわけで
36: 2017/09/13(水)09:26 ID:SbfCQQCY(1) AAS
TDDでok
37: 2017/09/14(木)12:00 ID:yiOvFiYP(1) AAS
>>31
手作業でテストするならそうだろうけど自動テストが当たり前の時代にその考え方は古すぎる
38: 2017/09/14(木)12:41 ID:NPMvj+H/(1) AAS
>>31
いつの時代の話だよ
39(1): 2017/09/14(木)14:20 ID:+X9KJHHB(1/3) AAS
時代の問題か?
設計書通りに動くこと
仕様書通りに動くこと
が時代遅れとか
掲示板のレベル下がってるな
プログラム組むのやめて田舎帰れよ
役に立たねぇ
40(1): 2017/09/14(木)14:28 ID:1Cd2i0pl(1) AAS
そうじゃないんだよなあ。読解力ガイジかよ
上下前次1-新書関写板覧索設栞歴
あと 47 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.009s