「単体テストを手動で行いエビデンス取る」の破壊力
単体テストは自動化するものだと思っていたから
一瞬何を言っているのかわからなかった >>342
「ちゃんとテストしたのか?」
・自動化
「はい、ここにテストした内容が書いてあります。これを実行しました。
テストに通ったことはテストの実行結果から判断できます。
もう一回やってみろって?コマンドを実行するだけですのですぐ終わります。」
・非自動化
「はい、ここにテストした証拠のスクショがあります。手順通りに実行してOKっぽかったからチェックを入れました。
テストに通ったかどうか?手順通りにやりましたよ!スクショがあるんだから信じてください。
もう一回やってみろって?全部ですか!?何時間、いえ何日かかると思ってるんですか!」 >>344
あなたがもう一回実行すればいい
あなたもすぐにテストを実行したというエビデンスを作ることができる >>345
じゃあ、作業未完了だね
納品物にエビデンスって書いてあるじゃん >>346
実行した姿をビデオカメラに写しておけばいいだけでは?
このテスト、私が実行しましたってwww
それ以外に何が欲しいんですかねぇ エビデンスが要求される粒度のテストのためにエビデンス生成フレームワーク作っとくと便利よ もちろん1番大事なのは自動テストの性質に合わせたエビデンスの形態を定義して、客に受け入れさせる営業力だが 日曜だから市場で買ったカニの出汁を濃縮してるわ、冷凍してとっとくんだ
これがホントのカニdense >>349
テスト自動化のほうが安くなります。
手動で作業したらその分時間がかかります。
スクショとったらその分時間がかかります。
しかもそのとったスクショ、あなた全部検収するんですか?
みたいにいえばOK
金と手間がかかる問題を客に押し付ければ意見は通る UIの自動テストはスクショもログ+スクショ自動生成までやってくれるから
本当にエクセルに張り付ける作業は不要なんだよな
スクショ張り付け作業をこれやらされる新人はマジで悲惨 しまいにゃ手動でやれば、バグがあって金がかかろうとも、丁寧な作業をしてると客を騙しはじめるのだろうな ていうか自動化にエビデンス入ってねぇのかよ
客に出せるレポートなんか出んだろフツー エビデンスは手作業で取るもの。自動で撮って誰が確認するというんだ?
客はエビデンスがあることを見てるだけで内容までは確認しないものだぞ
エビデンス撮った本人が、よくわからんが、まあバグっぽくない画面で動いてるからヨシ!ってやって
やっとエビデンスの意味があるというものだろう ログが正しく動いてることを証明するエビデンスが必要
そのエビデンスが正しいことを証明するエビデンスが必要
さらにそのエビデンスが正しい・・・ >>357
ログはたんなる実行結果に過ぎないから正しく動く証明にはなることはないよ
ログを正しく動く証明にするには方法は2つ
1. ログを取った担当者が、それをみて判断する
2. ログを取った人と別の人が担当者が、それをみて判断する
どちらが判断するにしても、正しい答えを知らなければ正しく動くと証明することはできない
だから上の方で言っていた正しい答えなんか事前にわかるわけ無いだろ!それっぽい値ならそれでいいだろ!
なんてのは問題外なわけ。正しく動く証明をしてないわけだから
スクショなんかも、取ったってそれみて後から検証なんかしないでしょ?
今からスクショみてバグが表示されてないか見ますなんてしないでしょ?
あれは仕事サボってないかとかいう作業完了報告書だったり、なにか問題が
起きたときにちゃんとやったのかという責任追及をするための道具に過ぎないよ
かろうじてバグがあったという証明ができるぐらい。正しく動く証明ではなくバグが有ったという証明ね
まあつまりログとっただけでは何の証明にもならないって話
ログと正しい答えを目視で比較する vs コンピュータでログを自動的に比較する(それが自動テスト)の違いよ
人力で比較してりゃ時間もかかるしミスもある。何もいいことはないね ログって言葉が独り歩きしてるけど
基本的に自動テストって
・想定通り動いた=OK出力(グリーン)
・想定通り動いていない=NG出力(レッド)
の2観点しかない
自動テストは結果判定もしてるから、実行だけ成功=OKには絶対にならん
(そんなテストを実装してたらぶっ殺されるわ)
で、自動テストのログが当てにならないっていう人って
無意識に以下のパターンを想定してるんだよね
・想定通りに動いて無いにも関わらず、OK出力(グリーン)が出ている可能性がある
つまりテスト側の不具合を懸念して、それでバグを取りこぼす危険性を考えているわけだ
結論的に言うと、そういうのはテスト作り方の問題になるし
発生するとのは相当なレアケースになる
というかこれが頻発してるなら、自動テスト組んだプログラマはクビにしろ
正しくOK/NGが判定できない自動テストならそりゃテストになってねえ
万が一、このレアケース発生しても修正をすればいいだけの話で、クリティカルな問題に発展する事はほぼ無い
(むしろ人間によるチェックの方が、判定の曖昧さ、ミス隠し、スクショ偽造とか色々やってくるから個人的に信頼出来ん) >>361
ログ出力のテストって何?
ログの話は「ログ見て人力で目視比較してそれっぽい値ならOK」ってやつでしょ
ログに出力した後に人力比較があるんだよ >>363
ログ出力だって機能の一つなんだからテストするでしょ?
ちゃんと指定通りのフォーマットで出てるかどうか?
日時、種別、内容などなどね
しないの? するわけねえわwwwユーザと関係ないだろうがバカがwwwww 何のためのテストだよwwwwww
意味のないテストやって尺稼ぎしてんじゃねえぞ経営者目線で仕事しろ ユーザと関係ないところで一生懸命頑張っても誰も認めねえからな
売上に一ミリも寄与しないこと頑張ってどうするんだwwwwwwwww
wwwwユーザから目をそらすために関係ないこと頑張ってるんだろwwwwww
パソコンが好きなだけじゃ会社は成り立たねえんだよwwwwwwwww >>364
> ログ出力だって機能の一つなんだからテストするでしょ?
わざとかもしれないけど(笑)話がすり替わってる
ログ出力機能のテストの話じゃなくて
○○機能のテストをするとき、その機能の結果をログに出力して
その出力を目視で人力比較してテストするのはアホという話をしてる 単体テストのテストコード書くほうが100倍アホだからwwwwww
wwwwwwwそこんとこ忘れんといてよwwwwwwwwwwwwww 自動テストでも実行結果をログに出力できるわけで
コンピュータで「比較」までやるか、人力で「比較」するか
誰が「比較」するのか?が違う所なんだよね なんかよくわからないところに噛み付いてるのでスルー これの話だからな
289 自分:デフォルトの名無しさん[sage] 投稿日:2020/09/26(土) 20:50:49.34 ID:c/9EiqGf [4/8]
単体テスト(自動テスト)で正しい値と比較 vs 目視確認でそれっぽい値かどうかチェック
って話だったの忘れたのかな?w
291 返信:デフォルトの名無しさん[] 投稿日:2020/09/26(土) 20:52:18.62 ID:IgGP+BQU [29/30]
>>289
結局最後に頼れるのは人間の目だからな
何のために目が付いてるか考えろ
ログを見るためだろうが 関数の入力仕様と出力仕様が明確なら
ログ出力関数のテストは簡単
でもログ出力関数を使う処理が正しくログ出力してるかどうかのテストはそう簡単ではない
なぜならログ出力の正しさを判定するためにはログ出力以外の結果は正しいということが事前にわかってなければいけないから
つまりログ出力だけでは処理の正しさを証明することは出来ない
テストで「正しいと証明できる」という考え自体がある種の幻想 このスレ見てると一体どういう自動テストを実装してて
どういうログを流してるのか本当に気になるわ
そんな突き抜けバグ(不具合起きてるのに何故か正常終了扱いになってる状態)を抱えた自動テストばっかり使ってるの?
本当にどういう自動テストを想定してるのか分からん
まさかログに値だけ出して、後でその値が正しいのか人間がチェックしてるのか?
それ自動テストじゃなくて、ただの自動実行だよ
テストっていうならグリーン/レッド判定まで実装してなきゃ使いもんにならん > 本当にどういう自動テストを想定してるのか分からん
> まさかログに値だけ出して、後でその値が正しいのか人間がチェックしてるのか?
ログに値だけだして〜って言ってる人は、自動テストしてないよ
ログに値だけだして目視確認する手動テストでいいって言ってる
なぜなら正しい結果がわからないから
これ↓ね。こいつの言ってる意味がわからんと思うけど、意味不明だと俺も思うw
28 名前:デフォルトの名無しさん[sage] 投稿日:2020/09/23(水) 20:17:23.00 ID:cCwBtdaA [9/11]
テストと言いつつできるのは計算過程と処理結果を残すだけだと思ってるよ俺は
長年考えた結果
正しい値なんてのは実は物理的に誰も知りえないということを理解した
なのでテストで重視するのは俺は組んだコードのエビデンスの方
どんな処理書いてどんなログ出したか
自動テストは結局同じやつが作ってる以上同じ不具合入ってるだろうなって思ってるw そろそろレス古事記に構うのをやめようか…
テストはバカだという証明はできるけど、いくら指摘しても修正しない限りバカはバカのままだし エビデンスとはテストを端折らずに実行しましたと言う証拠であって
動作の正しさやテスト手順の正しさを証明する証拠ではない
エビデンスという名の作業ログ 自社開発ならエビデンスは要らんよ
しょせん対外的な作業証明でしかないからな
それよりテストコード、テスト可能なコードを書いてくれや 細かいことで揉めるから、
>>1のような提案をする空気だけは読めるバカが出世して管理職になんだな。この業界は >>378
そのとおり
バグっている場合は、そのバグの様子をスクショしてるだろうからバグがあるというエビデンスにはなるだろう
しかしバグがないというエビデンスにはならない。これは自動テストでも同じだが、大きな違いは
バグってないというスクショをとっても、正しくテストを実行したというエビデンスにはならないという点
スクショ取るだけではテストケースは書いてあっても、そのテストどおりにテストをしたという証拠にはならない
最終結果だけでなく一連の動作を動画で撮影してるならまだわかるが、間違って手順でテストしたかもしれない
つまりエビデンスというのは(手順が間違ってるかもしれないけど)ちゃんと作業しましたという意味にしかならない
どういう手順でテストを実行したかという記録が含まれていない
自動テストの場合は最終結果だけでなくどういう手順でテストを実行したかが記録されている。
必要なら再実行もできる。だからこれこそが本当のエビデンスになる。 スクショには正しい手順でテストを実行したかが記録されていないのだから
作業をしましたという報告でしかない。
バグのスクショは意味があるが、正しく動きましたというスクショは必要ない
だからこれは本来この項目をテストOKでしたとチェックリストにチェックつけるだけで十分
チェックリストにOKでしたというチェックをつければ十分なことに
スクショを必要とするのは、単に作業者の報告を信用してないという意味でしかない 単体テスト書いとけば改修しても自動で既存機能が壊れてないことが確認できる
ゆえに機能の改修を心置きなくできる
テストがないと気軽に既存機能に手を入れるわけにはいかなくなる
(あたりまえ) 自動テストがないと手動テストをしないといけない
それは膨大な作業量となる
だからバグのないコードを書け、作ったら改修はするな!と叫ぶ
バグがあったときのことまで考えてない
仕様に変更があったときのことまで考えてない
一旦書いたら終わりという前提でいるやつがいる そのほうがビジネスとしては美味しんだ
テクニカルな面で優れた手法がビジネスでも優れた手法であるとは限らない >>385
単にビジネスが下手なだけだろ?
内部は楽をして、外部に対してこんなに頑張ってるんですよーってアピールすればいいだけ
外部に頑張りをアピールするために、実際に内部でも無駄に頑張る必要はない >>382
>バグのスクショは意味があるが、正しく動きましたというスクショは必要ない
正しく動いてたと思っていたものに後から不具合が見つかった場合
前回テスト時のスクショがあると調査が効率的にできる
それは自動でも手動でも同じ
>スクショを必要とするのは、単に作業者の報告を信用してないという意味でしかない
個人への信用に依存したシステムはミスがあれば個人を責めることになるのですぐブラック化する
典型的なマネジメント能力不足の例 > 正しく動いてたと思っていたものに後から不具合が見つかった場合
> 前回テスト時のスクショがあると調査が効率的にできる
不具合があると既に分かった後の話ですよね?
スクショがあると、どう効率的に調査できるんですか? >>387
> 個人への信用に依存したシステムはミスがあれば個人を責めることになるのですぐブラック化する
だから自動テストでコードにするんですよね。他の人がテスト内容をレビューできるように
スクショだと、実際どういう手順でテストしたのかが記録されてないから
ちゃんとテストしてないだろ!って個人を責めることにつながる 手動テストで問題なのが、前やったときのテストと完全に同じ状態が作れないということ
作業の順番でも状態が変わってくるから前後にやったテストによって成功したり失敗したりする
だから改めて同じと思った手順でテストしたら失敗することがある
スクショを取っていても「お前この前ちゃんとやってなかっただろ!」と責められる >>388
自分で考えて
>>389
自動か手動かには関係ない
自動化したUIテストでスクショ取らないのかな? >>391
UIテストってわざわざ書いたってことは
それ以外には当てはまらないって自覚してるのかなw 自動化したUIのテストでスクショを撮るというのはおかしな表現で
"テスト"を自動化していれば、当然自動的にテストされるわけよ
スクショはいらない
>>391が言ってることのほんとうの意味は
UIのスクショを自動で撮っているだけで
UIのテストは人が目で見てやってる手動テストだろう?
それとも違うんか? UIのテストを人が目で見ず本当に自動化してるんか? でもいい感じにお高いツールはUIテスト時のスクショも自動で撮ってくれるからねw
ないからっていらないやいって悔し涙流さなくていいぜ 別に高くなくても取ってくれるやろw
論点はそこじゃない
取った後どうするのかだろ 高いツール使ってるんだぜ悔しいだろ
みたいな意味かな? >>395
撮ったあとどうするもこうするもお高いツールはクリックすればすぐ見れるんだよ
手動でエクセルに貼る作業とかないから ただ・・・
(実はあんまり手間減らないんだけどな) 自動化は人間が楽をするために自動化してるだけなんだからログでもスクショでも何でも良いけど、テスト結果がグリーンであってもエビデンスは人間の目で検証しないとダメだよ。自動化の利点は、手動テストやってる要員や係るリソースを他のことに回せるってだけ。 自動テストがプログラマの自己満と言われる所以はテストパターンを無限に作成できるからだよ。sumAtoFで引数を6個取るなら0,0,0,0,0,0から9,9,9,9,9,9の範囲や、マイナス値とか小数点とかnull値を含めていくらでもテストパターンが作れる。しかも再実施も簡単。手動テストじゃそうはいかないからね。 >>400
手動テストでもテストパターンは無限に作れると思うが?w >>399
> テスト結果がグリーンであってもエビデンスは人間の目で検証しないとダメだよ。
え?なんで?愛情がどうとかどうでもいい話だよw >>399
あ、初めて自動化したときだけエビデンスの検証してねってこと。次の改修では追加・変更したテストパターンのエビデンスを検証する。それ以外の既存のテストパターンは結果がグリーンであればそれでデグレとしての証明は担保できてると思うよ >>403
PGした人がテストパターンも作ってたら同じ不具合が混入する可能性があるでしょ >>402
手動テストでも無限に作れるけど人海戦術しないとテストしきれないでしょ。テストの規模とプロジェクトによってはそんなの現実的じゃない。だから自動化のが簡単。 >>400
>自動テストがプログラマの自己満と言われる所以はテストパターンを無限に作成できるからだよ。sumAtoFで引数を6個取るなら0,0,0,0,0,0から9,9,9,9,9,9の範囲や、マイナス値とか小数点とかnull値を含めていくらでもテストパターンが作れる。しかも再実施も簡単。手動テストじゃそうはいかないからね。
流石にテストパターンの洗い出しすら考えないのは頭おかしいやろ
自動テストの実装コストもタダじゃないし
というか不要なテストパターン(重複してるテストパターン)は消すぞ普通…… というかテスト自動化で無限にテストが出来るって思ってる奴もいるのかよおおおもう
あれだな、デジタル庁も作られるんだし
品質管理の観点として、テストに関してちゃんとガイドラインと共通規格決めてくれ
頭痛くなってきた >>408
理論上は可能だよねって話をしただけだよ。現場ではそんな無意味なテストしてないから発狂しないでよw
テストパターン考えるときに大丈夫だとは分かっていても不安だから盛り込むパターンも少しくらいはあるよねってこと。人間だもん。ちょっと多めにテストして安心したいよね。 無限に作るとか、藻舞ら、境界値テストを知らんのか?w
例えば、正常範囲を10〜20 と決めたら、論理的に、9, 10, 20, 21 だけでOK のはずw
-1, 0 も、9と同じ。
11, 19 も、10, 20 と同じ
100 も、21 と同じ
こういうのを論理的思考と言う。
どれとどれが、同じグループですか? と言う問題 >>405
> PGした人がテストパターンも作ってたら同じ不具合が混入する可能性があるでしょ
え?なんで?w
テストパターンってお前コードから生成すんのか?
そもそも最初に、入力決めて、出力決めて、
そうなるように作るというのに意味がわからん >>410
そうやって自動テストでもテストする値を決めるよね
無限に自動テストできるわけじゃないんだからさぁw >>411
テストパターンを基にテストコードを書くよ。
最初に入力を決めて次に出力を決めてそうなるようにテストコードを書くよ。
テストを実行したら全部グリーンでもテストコードのコーレビューをするよ。 >>413
> テストパターンを基にテストコードを書くよ。
そのテストパターンが間違っていたらどうするんだ!
まあそういう事はあるよねw テストそのものが間違ってるってこと
でもPGがテストパターンを作ると間違えるってのが意味がわからない
PGが作ってもPG以外が作っても、テストパターンを間違える可能性は変わらない
> テストを実行したら全部グリーンでもテストコードのコーレビューをするよ。
手動テストの場合どうするんだろうね。テストコードに相当するのはテスト手順なわけで
テスト手順もレビューも必要なんだが、手動テストだとテストパターンのレビューしかしてなさそうw
テストパターンはあってるけどテスト手順が間違っていて意味のないテストをしてたりしてな
テストするときは先にデータを初期化して、この手順でデータ作ってからやらないとだめじゃないですか!みたいな >>413
> 最初に入力を決めて次に出力を決めてそうなるようにテストコードを書くよ。
ここは言葉が間違ってるね
× 入力を決めて次に出力を決めてそうなるようにテストコードを書くよ。
○ 入力を与えて出力が決めたとおりになってるかを確認するテストコードを書くよ
TDDではそのあとに、テストに通るように実装コードを書く >>410
9.9999999999999999や20.000000000000001は?
境界値分析+同値分割は基本だけど
型の境界も意識しないとそのうちバグるよ >>414
>PGが作ってもPG以外が作っても、テストパターンを間違える可能性は変わらない
コードを書いた人とそれに対するテストコードを書いた人が同じなら
同じ勘違いや同じ観点不足が発生するリスクは高まるよ
例えば>>410が書いた例で整数値以外の入力という観点が欠落してれば
コードでもその対応を書かないしテストの必要性にも考えが及ばない
ただだからといって必ず違う人が書いたほうがいいというわけじゃない
低減できるリスクと作業効率とを考えて判断するもの >>414
・PG組んだ人が一番思い込みが強いから、もしかしたら他の有識者と認識が乖離しているかもしれない。まぁレビュアがしっかりしてれば大丈夫。
・手動テストの場合は、テスト条件を満たしていることが担保できるようなスクショを取得するよ。テスト条件どおりに実施してくれたかどうかは実施者を信用するしかないね。エビデンスに細工されたら誰も気づかないと思う。
ちゃんと実施してるつもりでも実際は細かい操作とか大事な操作をミスっちゃってて、それでもたまたま予想結果と一致しちゃう事もあるかもしれない。だけどそんな偶然は滅多に起きない。後でアドホックテストもするし、結合試験や統合試験で発見できればok。
・エビデンスとテスト手順とパターンを見比べて「これは何のテストをなんだ?」って思うことは稀によくあるね。
・手動テストでテストデータが必要な場合は事前準備としてそういうデータを用意してからテスト開始するよ。 >>417
> 例えば>>410が書いた例で整数値以外の入力という観点が欠落してれば
> コードでもその対応を書かないしテストの必要性にも考えが及ばない
だからそれ、コード書かない人でも
整数値以外の入力という観点が欠落することあるじゃんって言ってる
むしろコードを書かない人のほうが、テストの必要性に考えが呼ばないことのほうが多い
「数値入れたらこういう計算してくださいね」
→ 文字入れたら?え?文字入れた時?文字なんて入るの?そんなの想定外だよ set○○○系の値を設定するだけのメソッドってあるじゃん
ケース1:resultがOKならOKとする
ケース2:get○○○系メソッドを実行して値を確認する
ケース3:実際にその値の変更の影響をうける処理を実行して確認する
実はもう結合まで来てんだけどどうやって確認する? あ、やってみたらget○○○系もよくわかんなかった
値取得できたけどそれが何?
何が取れると正しいの?ってのが一連の処理の流れだと取得できるべき正しい値が本気でわからん >>421
> 実はもう結合まで来てんだけどどうやって確認する?
確認する前に結合したのが悪いって話だろ?
もうリリースしちゃったんだけどどうやってテストする?みたいな話だw >>422
> 値取得できたけどそれが何?
「値取得できた」
それがテスト
(手動で)テストしてOKだったから何?と言われてもな
意味ないと思うなら(手動で)テストしないでいいんじゃない?w >>422
> 何が取れると正しいの?
そんなに作る前からわかってる話ですよね?
作ってるなら「目的」があるはずですが
あなたは一体何を作ってるんですか? あ、あれか。教科書写経してるだけだから
自分が何を作ってるかわからないとか
んで作ってみて動かしたら・・・ゲームだった!みたいな事やってんの?w コンパイラ作ってるんだが、検査は自動でランダム構文生成とかしてやってるよ
もちろん普通の検査もやるんだけど、それだけだとパターン数が発散して検査しきれない
ランダム検査はテスト件数でいうと1000億件とかになる
不具合でるのはそのうち5件とかだったりするんだけどね >>427
だからそれを手動でやればいいんですよ! 自動化する単体テスト=関数単位のテスト
エビデンスをとる単体テスト=1個の機能のテスト。例えば入力欄1個など > エビデンスをとる単体テスト=1個の機能のテスト。例えば入力欄1個など
その"エビデンス"でどうやって入力欄1個の機能がOKだと証明するの?
入力欄1個の機能がOKであると、誰もが認られるようなエビデンスとはどんなものが知りたい
そこに入力欄の画像が1個あったって、機能が満たされてるかなんてわからんしね >>430
機能がOKだと証明するわけではない
「テスト項目の通り実行したらこの通りの画面になった」
つまり、テストを行ったという事を証明しているにすぎない
だから入力ミスや、テスト実行者の勘違いまではフォローしきれない
機能の証明ではなくテスト実行の証明だから
わざわざエビデンスに日時が入るように撮影することを要件としている
機能がOKだという証明だけであれば日時は不要だろう
実際、自動テストはテスト実行日時など重視していないはずだ
(デバッグの為に日時を保存しているにすぎない)
エビデンスに日時を入れるという行為があるかどうか
それだけでもテストの性格がわかるというものだ
テスト実行者を信用しないのであれば自動テストで十分だろう 自己満だろうがなんだろうが顧客が納得すりゃなんでも良い >>431
> テスト実行者を信用しないのであれば
気にすべき所はテスト実行者を信用するかどうかじゃなくて
ミスなくテストしたかどうかでは?
信用できる人にだって間違えることはあるんだし 画面にせっせと入力して保存ボタン
データベースに登録されてるかチェック
苦しい_(┐「ε:)_ >エビデンスに日時が入るように撮影することを要件としている
初めて聞いたわw
日付入れたところで改ざん可能なんだから日単位でファイルを上げて
履歴追えるようにしとけば十分だろ >>436
ログの位置がわかりやすいようにってだけだろそこ xUnit嫌いな人割と身近にいるわ
単体テストしない派というか >>438
仕様が決まってるテストはいいが決まっていなかったり曖昧なのは滅茶苦茶時間がかかるので嫌い テスターが仕様決めるって意味わからんw
この関数は引数の全ての値を足す関数だ
って決めるんか?w