「単体テストを手動で行いエビデンス取る」の破壊力
単体テストは自動化するものだと思っていたから
一瞬何を言っているのかわからなかった たぶん、手動、自動化以前に単体テストができない人がいる気がする。 自動化って
メソッドsumAtoFの場合
引数A,B,C,D,E,Fの
処理S=A+B+C+D+E+F
戻り値S
のチェックって
int S=sumAtoF(A,B,C,D,E,F);
int chkS=A+B+C+D+E+F;
if(S!=chkS)
{
エラー
}
みたいになるの?
無駄じゃね? >>5
指定されたテストケースを実行できない人はそういないだろうが
過不足ないテストケースを作り出すのはむしろできる人のほうが少ない
自動化を阻む一番の要因 >>6
1+2+3+4+5+6 の結果が 21 になってることを確かめるのがテストだろ
なんでテストで変数使うんだよw >>7
それな。
4,000行近くの神クラスがあらゆるクラスと相互で強力な依存関係を持っていて、さぁ!単体テストやろう!
って言われても...単体って何だよ(哲学)
こんな感じになる。
いやもう俺の会社やだ。泣きたいわ。 >>8
お前は仕様を先に考えないのか?
先にどうなるか答えは決まってるだろ >>8
エクセルとかで予め計算しておいた値と比較するんだろ?
俺とやってること変わんなくね? 別で書いた計算式と本処理を比較するって点は一緒じゃん
それがエクセルでも処理言語でもやってることに違いなくね? >>13
テストは、あらかじめわかっている答えと比較することなんですが?
あらかじめわかってるはずの答えを計算するなという話をしてる
その計算ロジックにバグがあったら、テスト(比較)で失敗したとしても
正しい値がなにかわからんだろ >>15
だからどうやって21出すんだよって聞いてんじゃん
何言ってるのかわからないの? >>16
自分で仕様を考えたこと無いのか?
1,2,3,4,5,6を与えたら21になる関数を作るんだろ
21をだすなら電卓でもなんでも使えよ
電卓が不安なら色んな方法を使って21が正しいと
確信もてるまで努力しろよ
そして21と比較するだろうが、21と比較する場面で
計算式を使ったら今度はその計算式が正しいかを
努力するしかなくなるだろうーが
それこそ意味がない >>17
だからエクセルだか、電卓だか、別で計算した値と比較するだけで
どっちが正しいかなんてわかんねんだろお前w >>18
どっちが正しいかわからないから
計算式を書くなと言ってる
両方が同じ計算式だったら間違っていてもわからんだろ
片方が固定値であれば、こちらが正しい値であると考えてることがわかる >>19
大して違いないってw
だったらログでも出して変数にしときなよ >>20
ログ出してどうするんだ?
何が正しいかどうかをどうやって確かめるんだw テストはロジック(関数)と固定値を比較することでやるという
基本的なことも知らないやつが居るとはなw >>21
固定値が欲しいんだろ?
だからログでも出せばいいじゃんってこと
結局さ
やってることは1つの仕様に対して2つ処理書いてその値を比べてるだけ
別にテストコードに書いた値や処理のが正しい根拠もないし
本処理のが不出来である根拠もないでしょ 自動でやっても、テストコードとエビデンスのレビューをしろ、という
キチガイもいる 俺、この結論はどこまで行っても出ないと思うぜ
どっちが正しいかなんて誰にもわからん >>23
お前はログに21と出力されているのを見て
これがどうやって正しい答えだって判断するんだ?
正しい答えが21ってわからないって言ったのはお前だろw >>23
> やってることは1つの仕様に対して2つ処理書いてその値を比べてるだけ
それはお前がやってる無意味なことですよね?w
そんな無意味なことはしないで、
1つの処理と1つの正しい答えを比べろって
俺は言った テストと言いつつできるのは計算過程と処理結果を残すだけだと思ってるよ俺は
長年考えた結果
正しい値なんてのは実は物理的に誰も知りえないということを理解した
なのでテストで重視するのは俺は組んだコードのエビデンスの方
どんな処理書いてどんなログ出したか
自動テストは結局同じやつが作ってる以上同じ不具合入ってるだろうなって思ってるw > テストと言いつつできるのは計算過程と処理結果を残すだけだと思ってるよ俺は
処理結果を残すだけというのは
間違った処理結果を残していてもいいって話ですか?w
そうですね。お前はログ取るまでで
そのログを見るのは他の人ですもんね(笑)
こいつに、盗まれないように見ててって言ったら
盗まれました。ちゃんと見てました。って言いそうw >>29
うん
だってさっきの21みたいにどこまで突き詰めたって
同じ仕様に対して別で2つ処理書いて比較してるだけだもの
んでこれを同じやつがやってる以上こんなところに金なんかかけるだけ無駄 >>30
論点がずれてるね。
お前はログを見て21であることを知って
あとからこの21は正しいのだろうか?と考えて判断すると言ってる。
どうやって21が正しいか判断するの?w
俺は、最初に21が正しいと確信を持ってコードに書いてると言ってる。
だからお前がやってるログを取るだとかログを見るだとかいう無駄な作業がいらない 世の中にはテストケース1個作ることすらできない人もいるんだな
これは驚いた >>31
確信ってw
無理なこと言うなよw
お前が本処理に書いたA+B+C+D+E+Fも
21を出すために書いたA+B+C+D+E+Fも
どっちも胡散臭ぇんだよw
こんな簡単なことがわからねーのかよ ある関数を作ったその関数は
1, 2, 3 という引数を与えると3421という値がログに出力された
「これが書いたコードにバグなんてあるはずがない。3421は正しい計算結果だ。」
そういってログを取れば十分とつぶやいた >>33
俺はそんなコード書いてないが?
こんな簡単なことがわからねーのかよw
IDも確認できねーのかよw >>7
んなプログラマーってどうやって仕事をしてんだろう? >>36
あのな、ソフトウェアの開発っていうのは
○○を入れたら○○になる関数が欲しい!
という考えの連鎖で作っていくんだよ
お前は誰かから課題を与えられるんだろうけどな
自分で考えて作るってことしたことないでしょ 作って終わりのシステムだったら手動でも問題ないと思う
Sierのユーザはテストのエビデンスを欲しがる人が多いから
エビデンスは納品物として残さないといけない
開発者よりもユーザ側の事情が大きいのじゃないかな 客「正しく動いているというエビデンスが欲しい」
SI「正しく動いてるかどうかなんてどうやって証明したらいいかしらん
テストやったというスクショ用意すりゃいいんじゃないか?」
これ そうそう、結局こういう入力(ユーザによる操作や設定ファイルも含む)に対してこう動くようにしましたよ
としか言えない
だからエビデンスが重要だって言ってんじゃん
21が正解かどうかは誰にもわからないんだよ
もっと複雑な計算で客も式は知ってるけど
実際に計算した値はわからんようなのだったらどうやって出すよ?
PG「大丈夫、エクセルで数式でこのように出した値と一致しています!」
客「は?なんでそれが正しいの?」
PG「え?」
みたいになるやつはここの理解が足りない
どこまで突き詰めても究極的にはわからない
わからないものを説明しなければならない > 21が正解かどうかは誰にもわからないんだよ
じゃあログ出す意味ないじゃんw
どうせ文字化け出力してても正解かどうかわからないだろ > もっと複雑な計算で客も式は知ってるけど
> 実際に計算した値はわからんようなのだったらどうやって出すよ?
計算式は神が作り出したものとか、いきなり湧いて出てきたって思ってそうw
高校レベルの数学はそうだね。計算式は覚えるもの
だけどな、本当は計算式っていうのは、ある値を出したいと思って
「計算式を作る」ものなんだよ。作るのは計算式。それがコード ゲームの当たり判定でも、あれとこれがぶつかったのは
どう計算すれば導き出されるんだ?って悩んで
ぶつかったという答えを出す計算式を作り出すものなんだが
本を読んで計算式をみて、ぶつかったかどうか?
この計算式を使えばぶつかったという答えが出るんだよ
みたいに思ってるんだろう。
自分でアルゴリズムを考えたことがないから
計算式ググって、そのとおり計算して
なるほど、これが計算した答えか。
答えなんて計算しないとわからんな。と言ってる
計算式を作り出したことがない 内部にジェネレータとかIOとかを持ってて、冪等じゃない関数のテストってどうやったらいいの?
そういうのは単体テストの対象外? >>45
1つぐらい何か言い返せよw
お前がやってるそれが遠吠えじゃねーかw
>>46
冪等性がなんで出てくるのか知らんが
与えられたデータ(引数だけじゃなくてすべての状態)が
同じであればその結果も同じになる
テストというのは、固定のデータを使って固定の結果と比較するもの
固定のデータが用意するのが難しいのであれば
その部分にスタブ(モック)を利用する
十分、単体テストの対象内
というか単体テストができないなら、その他のテストもできないだろ >>47
だからなんの意味もねーってそれ
お前がエクセルで計算した値だろw >>41
>そうそう、結局こういう入力(ユーザによる操作や設定ファイルも含む)に対してこう動くようにしましたよ
>としか言えない
考え方が間違ってる
入力に対する出力が要求仕様通りになることをこういうテストケースで確認しましたよと言えればいい
21が正解かどうかは要求仕様による
テストケースを作る能力の有無の前に
要件定義がまともにできてることが必要
できてなければデスマーチ確定 >>49
だからそう言ってるじゃん
>>41にそう書いてあるだろ >>48
> お前がエクセルで計算した値だろw
何で計算するとかどうでもいい話だろ
何をする関数を作りたいのか?
作りたい関数は「何を入力とし、何を出力とするのか」
その仕様を決めてから関数を実装する。そして正しく実装されてるかテストする
お前は仕様を決めずに、関数を実装して
その関数が出力する答えが正しい!バグなんてない!って言ってんのか?
繰り返すぞ
仕様を決めてないのに関数を実装してんのか? 関数なんかフィーリングでつくるだろうふつう
関数の設計?関数仕様書みたいのをいちいち書かせるタイプのアフォなんか? >>51
ホントだ
どうでもいいなw
だから>>6でもいいんだよな? >>53
> だから>>6でもいいんだよな?
>>6には固定値が書かれてないから駄目だって言ってんだろ
理解できますか?
あ、そう。理解できない。
↓こうしろって言ってるだけなのに、理解できないのか?終わってるな
int S=sumAtoF(1,2,3,4,5,6);
int chkS=21;
if(S!=chkS)
{
エラー
} >>55
え?じゃあどうやって21って出したの?
こんなの固定値のわけないじゃん > え?じゃあどうやって21って出したの?
最初に関数を実装するんじゃやなくて
仕様を定義しましょうと言ってる
お前は仕様を決めずにいきなり関数書いて、その関数の実行結果を出力して
俺がコードにバグを入れるなんてありえない。だから21が正しい!と言ってるだけ。
テストを全くしてない >>57
それで?
どうやって21を出したの?
ここが品質のすべてを担保してるのにどうでもいいわけないだろアホか >>58
> どうやって21を出したの?
「例:1,2,3,4,5,6を引数に渡したら21を返す関数が欲しい」
という要件
最初は関数(コード)は存在しない
最初に関数(コード)を実装してはいけない
実装した関数(コード)で出してはいけない
実装する前に決める話
どうやって21を出したの?
それはその関数が欲しい人に聞け >>59
ええ?A+B+C+D+E+Fなんだけど? >>60
それは実装
最初に実装を書くなと何度もいわせるな なんか荒れてんな。
単体テストって固定された仕様に対して実装者次第で変化するロジックをテストするものだろ。
例題があまりにも単純コードだからロジックと実装が一致するなんて現象が起きるのであって、考え方はテスト仕様を満たしているかどうかが重要。
だと思うんだぜ。 >>64
> 例題があまりにも単純コードだからロジックと実装が一致するなんて現象が起きるのであって、
ロジック(実装内容)とテストコードの間違い >>65
そこじゃないよ。
あのアホは「足し算をすることで21になるかどうかわからない」から
コードを書いてそのコードの出力ログで21とでたからOKOK。
21になるかどうかわからないけどログにそう出てるからOKOKって言ってるわけだから