「単体テストを手動で行いエビデンス取る」の破壊力
単体テストは自動化するものだと思っていたから
一瞬何を言っているのかわからなかった >>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 俺は常に自分でテストコードを書きながら仕事をしているから、いまいち単体テスト専用のテスターという存在がよくわからん。
新人教育目的で自分の成果物に対して不足しているテストコードを修正する形で書かせることはあるけど、基本的には実装する時にはテスト仕様もできてるしなぁ...。 >>444
用語を知らないから、単体テスト=1画面のテストとか1アプリのテスト思ってるやつが居るんだよw
単体のexeファイルをテストするのが単体テスト
はぁ〜〜〜〜ばか〜〜〜 小さい関数を心がければテストコードが必要なほど複雑なコードって書かなくない?
テストコードを書くと必ずデータ用意しなきゃならないけどそのデータを間違って入力する確率のほうが高い >>445
俺さ、まさにリアルタイムでスマホアプリ開発しててテストコードを書いてるんだけど、お前、頭大丈夫?
iOS、android、Windows対応のアプリ作ってるけど、こんなこと言う奴初めてみたよ。
JavaとかでJUnitとか聞いたことない?
C#でプロジェクトファイルを作るとき、Unit testというテンプレート見たことない?
お前、Windows開発すらしたことないだろ。
俺は別に1画面がどうのこうの言ってないし、そもそもexe単体とか論外だわ。
まず、単体テストについてググれカス。 >>447
日本語圏内で言う単位テストは普通は画面、帳票、バッチ、ようは要件定義に書いた機能ごとのテストだよ
xUnitとかJUnitのようなもののことを言いたい場合には、ユニットテスト、あるいは自動テストと言ったほうがいい
日本ではユニットテスト≠単位テスト 1からのやり取りを見てもそんなこと言えるの?
あと、ググるとまっさきに出るのが「単体(ユニットテスト)とは」なのだが。
そして、俺もその認識なのだが。 >>447
おまえは文章が読めないんだなw
おまえも馬鹿の一人だわw >>446
どれだけ小さい関数を作っても、テスト担当者にテスト仕様書を書いてもらないわないと
自分じゃ、テストできないアホがいる。
ログに出力してそれっぽい値ならOKとかいってるアホがいる >>450
そういうことか!
うん、俺も馬鹿だったわ。
いや、本当にすまぬ...すまぬ。 ん?割とガチで単体テストを機能毎のテストとして扱う会社は多いのか?
基本情報技術者試験や応用情報技術者試験の単体テストに関わる問題とか見ると、明らかにユニットテストの意味の問題があるように見えるのだが...。
そうなると、自動化もクソも無くね?
それ以前に、>>448の言うことは本当なのか気になる。
本当なら>>448の言う単体テストについて紹介している文献とかあると思うのだが...ソースがほしい。 >>454
大企業で仕事したらわかるよ
だからエビデンス取るんやで >>455
まず、ユニットテストと単体テストを区別するというのが本当なのか怪しいが、区別しているのなら、もちろん、そのユニットテストもやってるよね? 更に聞くと、このスレはあなたが方の言う単体テストとユニットテスト...どっちについて扱うスレだと思う? テストの分類と自動化するしなは別のベクトルだ
単体テストといったら自動化と連想するのはそのあたりの区別がついてないのだろうな
役割の分割をしないでGODクラス作ってそうなタイプ >>457
手動で行ってエビデンス取るって言ってるんだからユニットテストでないことは明らかだと思う このスレでユニットテストの話をしてる人は社会経験のない木偶の坊だと思ってる まぁ、責務が曖昧なGodクラスのユニットテストなんて自動化しようがないからな。
些細な変更ですぐに仕様が変わるし。
ユニットテストで不合格になるのではなく、
ユニットテストができないから不合格になるパターンだな。
でも、恐ろしい事を思いついてしまったよ。
もしも、常に神クラスを書いていてユニットテストができない企業がいたとする。
そして、その企業があまりにもユニットテストができないからユニットテストの意味を曲解することにしていたとしたら...やばいね。
まぁ、いいや。仕事だ。しばらく席を離れるよ。 >>454
> 基本情報技術者試験や応用情報技術者試験の単体テストに関わる問題とか見ると、明らかにユニットテストの意味の問題があるように見えるのだが...。
だからそういう世間一般の用語すら知らんのだよ
そして基本情報技術者試験は意味がないとか行ってたりするw ペーパーテストと現場のギャップぐらいは認識しとかないとだめでしょ
それこそ実務経験を疑われる 世間的には現場の定義が優先されるからなー
試験勉強でこう習いましたなんて現場では通用せんぞ ヤクザにそれは法律違反ですと言っても意味ないだろ
警察に金庫から8000万盗めば良いと言っても通用しないだろ
社会とは現場が常に優先されるものなんだよ
鳥はお空を飛びますと本に書いてあったとしても
ペンギンは鳥だから空を飛べば良いと言ってもペンギンの現場では通用しないんです >>467
現場の定義の殆どは試験勉強の定義と一致してるんだが?
違うのは現場ではベンダー定義の用語が追加で使われるぐらいのもん
試験の定義を否定するようなものはない
だから今、試験での単体テストの定義と現場が違ってる=
え?お前の会社って単体テストって画面のテストのこと言ってのプププ
って話をしてるんだろw >>448
何を「単体」と見なすかに違いがあるだけ
面接でユニットテストは単体テストとは全然違います!ってずっと主張してたやつがいたけど
その文化を共有してない会社だと単にヤバいやつ認定されるだけだからやめたほうがいい あいつマジで理想郷にでも住んでるのか?
わかってて煽ってるのかと思ってたけど・・・
単体テストと言われてxUnitのテストの結果なんてもっていったら
上位会社様にバカにされるぞ
バカにされる程度で済めばいいけど他の人に代えてくれってすぐ営業に電話されるよ
商流の末端企業は上位会社様にあわせるしかないんだよ 現場のベテラン「情報処理技術者試験なんて意味がない」
おまえら「↑みたいな奴がいるから情報処理技術者試験がもっと普及したほうがいい」
現場のベテラン「現場が正。↑は経験積め。やはり情報処理技術者試験は意味がない」
このループが無限に続くだけ
無限ループって怖いね IPAのいう単体テストがユニットテストのことだからな
これが違っていたら、もう常識がわかってないとしか言えないw >>472
どこの現場のベテランがいってんの?w
現場のベテランというか、ちゃんと情報技術を学んでいる人は
単体テスト=ユニットテストになってる
英語と日本語の違いでしかないからね 上流なのな下流のチェックしない会社とかどこの没落企業だよ。気持ち悪い。 国家資格すら取れない三流エンジニアは言うことが違いますね。
国家資格なんておやつ感覚で取るもの。なんで国家資格ごときで必死なんだ。
基本情報技術者試験くらい取れよ。そうすれば単体テストとユニットテストは違うなんて恥ずかしいことは言わなくなるから。 あ、これ大企業の話な。
大企業の話を妄想で持ち出す馬鹿がいるから警告しとくわ。
あと、権威主義に陥るのやめろ。 ふむ。さすが正しいことを言ってるな
https://www.fe-siken.com/kakomon/16_aki/q53.html
モジュール単体テストに関する記述として,最も適切なものはどれか。
単体テストは、プログラムがモジュール単位で正常に動作するかを確かめるテスト工程です。
プログラムの内部設計書に基づいてホワイトボックステストを実施し、要求性能を満たしているかの確認を行います。
間違い 通常はコーディングを行ったプログラマではなく,専任のテスト要員がテストケースを作成し,実行する。
→正解 単体テストは、コーディングを行ったプログラマ自身が実施します。
間違い モジュール間インタフェースは,モジュール単体ではテストできないので,単体テストの対象外となる。
→ 正解 実際にモジュールの結合を行うのは結合テストですが、モジュール仕様書に記述されたインタフェースが適切に実装されているかの検証は単体テストの対象です。
間違い モジュール設計書は,正しいことが検証済みであるので,テスト結果に問題があるときは,テストケース又はモジュールに誤りがある。
→ 正解 モジュール設計書が誤っている可能性もあります。
正しい モジュール設計書を見ながら,原則としてすべてのロジックパスを一度は通るようなテストケースによって,検証を行う。
→ 正しい。単体テストでは、プログラムの内部構造に基づいて、内部仕様がモジュール仕様書通りに作成されているかを検証します。 >>476
気にしすぎでしょwww大企業ですまんなwwwww >>470
良いこと言うね!
自然言語は文脈依存だから同じ語句であっても文脈に応じて意味が変わるからね
それを理解せずに自分の定義でしか言葉を解釈しない人はコミュニケーション能力が不足してるってことになるよね IPAって経産省の手先団体だろ、なんでそんなところを頼ってるんだwww
職員がお仕事中に児童ポルノダウンロードしてウイルス感染したところじゃねえかwwwww
wwwwお前らwwwwwマジかwwwwww >>480
文脈を明らかにしろ。どの会社での話なのか、世間一般の話なのかはっきり区別しろ
俺は世間一般の定義の話をしている
それ以外なら特定の会社名を言うようにw >>478
>要求性能を満たしているかの確認を行います。
ここでの「要求性能」ってどういう意味?
間違いじゃなくて一般的な使われ方? >>484
文脈を察しろ常に俺が正しいと考えていただきたい 俺が言ってることが正しくなるように解釈することを心がければ
俺の文脈を知ることができます、俺が中心です 児童ポルノウイルス団体を頼りにするとはwwwww
お前らも所詮経産省の掌の上で弄ばれてるだけかwwwww >>485
性能は性質と能力のことなので
・要求される性質がありますか
・要求される能力がありますか
ってことを確認するってことじゃろう
一般的に伝わると考えて差し支えない >>485
「プログラムの内部設計書に基づいてホワイトボックステストを実施し」と書いてあるだろ >>485
単体テストは内部設計におけるテストだから、内部設計がある程度まともかどうかって意味では。
そのある程度のラインはテスト仕様次第だが。 プログラムの内部設計書に基づいてテストするんだから
プログラムの内部設計書に書いてあることが要求 ○○に基づいてテストを実施すると書いてあるわけで
そこで○○に書いてないことを確認するわけがないのは当たり前の話 それはそう
「満たしている」の主語は「プログラムが」
テストの確認を行うのはテストレビューだからね
単体テストの説明としてふさわしくない >>492
内部設計がある程度まともかどうかをどうやってテストするのかわからないけど
それって単体テストとは一般的には呼ばなくない?
>>493
ひっかかるのは「要求」じゃなく「性能」のほう
時間効率・資源効率的ないわゆるパフォーマンスの意味ではなさそうだし
機能+非機能要求全部込みの「性質+能力」の意味だとすると単体の範囲を超える
それにホワイトボックスでもなくなる >>495
テストレビューは、テストが妥当かどうかは判断するレビューであって
プログラムの内部設計に基づいたテストのことじゃない
プログラムの内部設計に基づいたテスト・・・になってるかどうかを判断するのがテストレビュー >>496
> ひっかかるのは「要求」じゃなく「性能」のほう
内部設計にパフォーマンスが書いてあれば
そのとおりかテストするのも単体テスト 訂正
内部設計に性能が書いてあれば
そのとおりかテストするのも単体テスト
正しく動いていても、性能を満たしていない例なんて
いくらでもある。遅い。メモリ消費量が多い >>496
> 内部設計がある程度まともかどうかをどうやってテストするのかわからないけど
> それって単体テストとは一般的には呼ばなくない?
内部設計をテストするのが単体テストなんだけど。逆に、何をテストするものだと思っているんだ?
>>478の基本情報技術者試験の解説にコーディングを行ったプログラマ自身がテストしますって書いてあるでしょう?
単体テストをやったことある人なら、これを見たときにピンとくる。
というか、具体例を考えればいいんだよ。
Stackというコンテナライブラリを貴方が作ったとして、そのStackライブラリが絶対大丈夫であることを保証するためには何をする?って話。 画面、ウェブ業界なら1ページ
これより小さい単位を知らんでしょう
関数を自分で作ることをしない
ボタンをクリックとかしたらフレームワークが
関数を呼び出すから、その関数の中身を書くだけ
その結果は画面に表示されるから
どうやってテストするのかわからない
見て判断するしかないじゃないか!
と言っている webかー。
そもそも、それ、単体テストではなくUIテストでは? 誤って送信してしまった...
UIテストって言葉は俺らローカルかもしれないのに...。まぁ、言い訳を考えさせてくれ。 >>502
UIテストだからエビデンス(スクショ)でテスト
とかいうわけのわからない理屈が出てくるw
スクショ見て、よくわからんけどちゃんと動いてるっぽいなヨシッ!
これがテストw