「ブラックボックステスト」を含む日記 RSS

はてなキーワード: ブラックボックステストとは

2024-06-28

anond:20240628132620

正解が「数学的」に決まるところ。たとえば「1■1=2 のときに ■を答えなさい」というときに競プロは■を答えるだろうし、それを早く答えて悦に入るだろう。

それもいいけど、いちど数学的に答えが決まっちゃう問題ライブラリにまとめられて、一般的コーダはなにも考えなくてもインポートして処理できちゃうわけ。上の例えだとふつーのプログラマなら「枯れたライブラリインポートして、正しく答えが出ると確信できるなら『答えは正しいとか考えなくても』それを使って対処する」ので、データの振る舞いとか気にしないで済む。たとえば SQL なんて、実行時計画という「アルゴリズムを常に指定するなら不要な」話題があるのだけど、データ量によって適切なアルゴリズムが変化するから仕方ないし、概ね RDB は賢いのでヒューマン考慮するのは問題がある場合だけなのだ。よって、競技プログラマが生産性を確実に上げるという根拠はない。

もちろん、アルゴリズム知識を身につけるのは大切だし、クヌース先生も書いてたけど分散処理アルゴリズムフロンテイアだろうよ。というか、暗号分野やセキュリティ領域や、条件が過酷場合宇宙線の影響下とか、メモリの少ないエッジコンピューティングとか)だと、アルゴリズム研究や追求は大切なのは今も同じだ。でも、競技プログラマが新規アルゴリズムを開発したり、セキュリティに向上したという話は聞いたことがないが、レッドコーダ諸君は自前で創造して使われた実績はあるのだろうか?

ついでに聞いてみたいのだが、競技プログラマたちは「マルチスレッドコードで早く書こうとしないのはなぜ?」「そもそも競技プログラミングで使うコードは便利なスニペッツがあるけどそれってチートでは?」「ときどき正規表現で解く問題があるけど、そのとき計算量は無視してない?」という矛盾を抱えているのてはないか?と思うのだが如何か。

究極的には競技プログラミングに必要知識というのは、産業用途要求される知識の一部でしかないのが問題なんだと思うよ。ほら、アレだよ、むかし話題になった「数学だけデキる人向けの東工入試をやったら、英語ができなくて卒業できなかった」という童話に近いんだよ。競技プログラムってインとアウトしか見てないブラックボックステストから、ここだけしか計算機科学の知識が無いというヤバ人材の育成しかなってないのだろうな。

それで、結語として「答えのある問題に特化した競技プログラマー」のヤバい理由として、列挙していくと

ということは、競技プログラマーは考えても良いのではないか

2024-05-29

anond:20240529164045

言ってないことを言ったことにするのやめてもらっていいすか?

いかブラックボックステストをするために、マニュアルテストデータ作成する

これが俺がずっと言ってることね

anond:20240529163634

わかってないのはお前だろ

ホールドアウト分割を繰り返してるんだよ交差検証ってのは

テストデータブラックボックステストってのはそれとは別で、マニュアルアノテーションしてテストデータを作んの

低能にもこの説明でわかったか

2024-04-12

anond:20240411165709

人体解剖はSSDの中見るようなもんだからやめた方がいい。一般の人はアルバム見ながらインプット確認して、そのとき何考えたか聞きながらアウトプット確認する。ブラックボックステストだね。

2023-07-13

anond:20230713123053

テストって自動テストのことだよね?

DBはともかくAPIはそこまでしなくていい派だな。

APIについては提供側がテストすることであって、利用側がテストするのは結合テストとかブラックボックステストフェーズでいい。

自動テストAPIテストやりだすと開発規模が膨らむに連れてテストの実行時間が開発のリードタイムに影響してくる。

2023-01-03

anond:20230102211702

フェミニストの言ってることが支離滅裂から行動だけでブラックボックステストしてみたら統一教会と同じだったって話よね

統一教会扱いされたくないならよく分からんことばっか喚いてないで行動で示せよ

2022-06-19

意外にネイティブに通じなかった英語

ブラックボックステスト

ブラックボックステスト (英: black-box testing)は、内部構造動作を覗き見することなく、アプリケーション機能を調べるソフトウェアテスト手法のこと。アプリケーションを見えない箱として扱い、入力と結果の整合性確認する。このテスト方法は、ソフトウェアテストのすべてのレベル単体テスト統合テストシステムテスト、受け入れテスト)に適用できる。仕様ベーステストと呼ばれることもある[1]。

ブラックボックス飛行機に付いてるやつ?」という反応が多かった。

ドッグフーディング

ドッグフーディング (英: dogfooding) または「自社のドッグフードを食べる」「ドッグフードする」(Eating your own dog food、Drinking your own champagneとも言う)は、コンピュータ業界において、自社製品を開発して利用する組織の習慣で[1]、組織が実際の使用法で日々自分たち製品を利用しながら製品テストを行うことである日本語では単に「ドッグフード」ということもある。そのため、ドッグフーディング品質管理として機能し、開発者自身による製品の自信を表す証言広告となる[2][3]。尚、日本企業では自社実践(じしゃじっせん)という言葉が相当する意味言葉として使われている。

ドイツ人インド人の同僚がそれぞれ1人ずつ知ってた。

2020-12-23

anond:20201221231321

計算ロジックが複雑かつ特定オブジェクトに密に関わっている場合、元記事に引かれている例でいえば麻雀の点数計算のようなものとかあるいは準数値演算や組み合わせアルゴリズムが関わってくるようなメソッドだと、振る舞いを見るブラックボックステストではなく、ロジックを調べるホワイトボックステスト必要になる。

そういう場合、たとえ別モジュールに切り出してもテストしたい部分の複雑さは変わらず、やっぱりプライベートの部分をテストしたいということになる。

モジュールに分ければプライベートメソッドテストする必要はないはずだという想定は、プライベートメソッドテストができない言語テストライブラリの欠陥に対する言い逃れじゃない?

2020-12-20

プライベートメソッドテストすべきか

「すべきでない」というのがたぶん多数派

テストすべきでない理由としてだいたい次の理由があげられる。

プライベートメソッド関数テストする必要は無いと考えていますプライベートメソッドは、実装の詳細であるからです。

多くの場合、そのクラスパブリックメソッド経由でプライベートメソッドテストも同時に行えます

プライベートメソッドのテストは書かないもの? - t-wadaのブログ

ほとんどの場合プライベート メソッドテストする必要はありません。 プライベート メソッド実装の詳細です。

プライベート メソッドがある場合は、パブリック メソッドを見つけて、そのメソッドに対してテスト記述します。

単体テストを記述するためのベスト プラクティス - .NET | Microsoft Docs

プライベートメソッドテストするな」と強く主張されるのは、ケント・ベックの影響もあるかもしれない。

例えばtwitterで、パブリックメソッドにだけテストを書き、テスト必要なほどプライベートメソッドが複雑ならそれを別のオブジェクトに切り出す必要があると発言している(twitter/kentbeck)ように、プライベートメソッドテストに強く反対している。

またベックの書いたSUnit(xUnitの源流にあたる)には「ひとつテストひとつオブジェクトで表し、それによってテスト独立性を高める」というアイディアが使われている(そのアイディアを実現するためにとても複雑な設計をしている Simple Smalltalk Testing: With Patterns)。テスト自身ひとつオブジェクトとして独立しているなら、テスト対象となるオブジェクトプライベートメソッドテストできないのは当然のことになる。

しかし「プライベートメソッドテストがしたい(したくなることがある)」と感じる人も相当数いる。

そう感じる人にとってはむしろここからが本題で、

問題になる。

テストファーストで開発するなら手を動かしながら軽い気持ちで書きたい。

例えそのクラスがprivateメソッド依存関係があっても。

コンストラクタインジェクションされたクラスのprivate メソッドでもテストファーストしたい - Qiita

privateなルーチンの自動テストは面倒だ。実際にコーディングするとき最初publicにしておいてテストしてうまく動いていそうならprivateにするのだけど、この「いそう」がくせ者。いっそのことすべてpublicにしたくなる。

私は元々メソッドはprivateにしない主義なのでメソッド場合問題ないのだけれど、ファイル内の「関数」が問題になる。和了計算だと和了形判定とか符計算とか和了役判定とか単体でテストしたい内部関数が山ほどある。(twitter/koba0367)

private メソッドテストすべきか問題原則論だけだと袋小路に入りがちだから、private メソッドテストしたくなる具体的な場面について議論したほうがいいと思う。

自分レビューでよく見る例としては、複数の public メソッドの重複部分を private メソッド抽出した結果、濃い private メソッドと薄い public メソッドが一対多関係になる場合が挙げられる。設計としては間違っていないし、わざわざ public メソッド経由でテストする意義があるかというと微妙。(twitter/ts7i)

きれいなインターフェースを作ろうとすればするほどpublicメソッドじゃない部分に複雑性を追いやることになり、壊れた時に手戻りが大きすぎると思ったら、プライベートバックドア開けてでもテスト書くようにしてます (twitter/mizchi)

しかプライベートメソッドに対するテストを書こうとすると大概リフレクションなどで可視性の制限をすり抜けるとかメソッド可視性を変更するといった回りくどさやコストの導入が必要になるので、じゃあプライベートに対するテストはそうしたコストに見合うのかが問題になる。

伊藤さんの答えは「原則書かないほうがいいという大前提のうえで、どうしてもというときは、"これはテストのためにpublic"にしているというコメントの上でpublicにする」だった。

自分は「テスタビリティのためにメソッドをpublicにする」っていう"実プログラム挙動を変えること"の方が、「privateなメソッドテストコードのみsendで叩く」よりも怖いって思ってることに気がついた。(twitter/highwide)


メソッドプライベートパブリックかという話とそれをテストするかどうかは別問題だろという意見もある。

単体テストホワイトボックステストだとするなら、publicかprivateかでテストの有無が変わるのは明らかにおかしいだろ。ややこしいロジックはprivateに隠蔽すべきだが、そこがテストできないなんて。 (twitter/kmaebashi)

private メソッドテストするかどうか? まず最初に言っておきたいのは public/private は抽象設計問題であって、テストすべきかどうかとは当然無関係だろうということ。(twitter/qeigoi)

特定言語の貧弱な機能思考制限を受けて誤った結論を出している典型的な例。

"テストを書くべき"と"上位層から可視性"は直交する概念

https://b.hatena.ne.jp/entry/4684049296462116226/comment/megumin1

テスト粒度メソッドアクセス権は独立したものなので、「プライベートメソッドテストすべきか否か」という切り方自体ナンセンスではあるのだが、現実問題としてはアクセス権がテストに影響するので難しい。(twitter/AoiMoe)

private メソッドテストはすべきかどうかというより、「できるべき」であって、それができないというのも、ある種、言語機能テストインピーダンスミスマッチと言えるのではないだろうか、と思っている。(twitter/aetos382)


プライベートメソッドテストがしやす言語での意見

RustやGoではプライベートメソッドに対するテスト簡単にできる。

そのためかプライベートメソッドテストすることに対して拒否反応があまりないようだ。

Rustのテストファイル内とtests/以下の2箇所に書ける。

テストには開発用のホワイトボックステスト仕様確認用のブラックボックステストがあり、前者をファイル内に、後者をtests/に書けば良い。

例えば度々議論になるプライベート関数テストについてはもちろんホワイトボックステスト。(twitter/blackenedgold)

Rustではプライベートに対して何の手間もなくテストが書ける。

概念的にはプライベートに対するテストは外部コードではなく内部コードの一部として見るべきなのだろう。

Rust入門を兼ねてプロジェクト・オイラーの問題を解く - 再帰の反復blog

Rustでprivateなメソッドテストを書きたいなら、そのメソッドのすぐ隣に書けば内部アクセスになるから普通に書けるよ、ってのは目からウロコだった。できるだけ近いところにテストを書こうっていう文化と相まって最高。(twitter/kuy)

Rustみたいに単体テストは同ファイルに書ければいいのに

assertionチックにprivateメソッドのすぐ下にテスト書きたい

ドキュメントにもなるし (twitter/takaya_tim)

Rust のようにユニットテストプロダクションに混ぜる方式はおれもいいと思ってて、テストプロダクションを分離することで private 関数テストができない問題があるけど(テストしたければクラスを分けよ/メソッドを公開せよ/テスト必要なし、に分かれるよね)、そもそもこの議論不要になるよね (twitter/nunulk)


go言語だとプライベートメソッドテスト普通にやりますね。(twitter/mattn_jp)

昨日「private method の単体テストは書くか否か」という話題がちょいとあったのだが、わしは当然書く感じの昨今を送ってきたもんで何で書かんのやくらいに思ってたんだけど、Go だと private なやつのテストが書きやすいってのがデカそう。(twitter/pankona)

golangのテスト書いてたけど、テストプログラム名前空間(パッケージ)が、対象プログラムと一緒で、そのためプライベートメソッドでもテストできるの良い感じ (twitter/74th)

Goテストコードテスト対象と同じパッケージにすればエクスポートしてない関数でもなんでもテストコードから参照できるんだけど、これってプライベートメソッドテストすべきか議論するよりテスト書けと言われているようで好き。(twitter/plan9user)

プライベートメソッドテストするか?」とは別にドキュメントソースコードと同じファイルに書いていい(文芸プログラミング)なら、単体テストテスト対象と同じファイルに書いてもいいのでは?」というのも論点になるかもしれない。

2020-05-31

anond:20200531073246

ここまで読んでやっとコードレビュー感が違うのがわかった。

結局、上流工程コードを書いてはいけないの延長線上だったのか。

自分イメージしているコードレビューはそれぞれが対等な開発者でお互いにコードレビューしあうイメージだったけれど、たぶん、この増田会社だとレビューする人とコードを書く人は完全に分かれていて、レビューする人はコードを書いてはいけないわけね。

そしたら、「自分はわかりにくいと思うけど...でも自分コード書かないしな」になるな。

個人的にはその状態だったらコードのものに口出しするレビューという行為が越権という感じがする。

しろこちらが用意したブラックボックステストをすべてクリアできればOkというのが妥当

...まあ、会社によって業務内容は違うんだろうけれどさ。

2016-09-28

ホワイトボックステストブラックボックステスト

彼ら自身自分が何をしているか分かっていない。

私にとって身近な存在になるほど単盲検に限りなく近い。

2016-06-19

全てのRubyエンジニアはだいたい糞である

汎用系のエンジニアからRubyエンジニアとして転職して1年。

コボラー(笑)なんて言われることも多いが、この1年で出会ったRubyエンジニアは全て糞だった。

その特徴はだいたいこの3つだ。

1.テストを甘く見ている

やれテスト自動化だ、やれテスト駆動開発だの口だけ達者なエンジニアの多いこと。

そもそもブラックボックステストホワイトボックステストを分かっていない奴が多すぎ。

テストコードカバレージが100%だったとしても実際の打鍵結果でエラーは弾けることが多いのにリリースしてしまう。

そもそもテストケース表を若いうちに書く習慣が無いからだ。

ドキュメント揶揄し机上デバッグも行わない、こんな状態で「アジャイルですから」とかドヤ顔でいってしまRubyエンジニアは糞である

2.パフォーマンスを考えない

Rubyエンジニアパフォーマンスを考えない。

どのメソッドがどれくらいの負荷なのか意識せず実装を行う。

便利だから、ただそれだけの理由なのである

そもそも自分が行おうとしているソートが何ソートなのか知っているのか?計算回数を考慮した上での実装か?

便利なメソッドがたくさんあるのは知っている。

ただ、中身くらいは知っておこうよ。

eachで回してばかりだから複雑なループ対応もできない。

新人に教えたらバカにされたけど、まずフローチャート書くようにしようぜ。

3.外部ライブラリに対する絶対的根拠の無い信頼

Gemに対する絶対的な信頼感、あれなんなの?

Githubで公開されてましたんで導入しました」じゃねーよ。

結局他のGemバッティングしているじゃねーか。

得体の知れないコードをたくさん詰め込んだプログラムをよく動かせるな。

そんで都合の悪いところだけコードを読んでオーバーライドする。

影響範囲を全く調査せず、Gem絶対神話を唱える。あれなんなの?



いや、Rubyが便利なのは認めるよ。俺だってPLIとかCOBOLより書いてて楽しいよ。

インデント合わなくてコンパイルエラーとかないしな。

でもあまりにもRubyエンジニア糞すぎだろ。

エンジニアもどき量産言語だね。どれか1つでも当てはまった奴は小学校からやり直せ。

日本の将来が心配だわ。


追記

意見がたくさんもらえて喜ばしい。

文化の違いという意見もあったが、「よくわからないけどなんかうまくいく」コードだとデバッグも大変だし不具合も起きやすい。

それで納品するのはプロとしておかしい。

主語が大きい

「だいたい」とあるだろう。全てのだいたいだ。

フローチャート

ロジックを整理するツールとしては優秀。

精神論に聞こえるかもしれないが、フローチャート書いて育ったエンジニアは頭の中でロジックの組み立てと凡その演算回数が計算できるようになるよ。

カバレージが100%だったとしても実際の打鍵結果でエラーは弾ける

あー、ここは誤タイピングだわ。

自動テストカバレージ100%です、そして画面数回触ってリリースしますーっていう奴が多いってこった。

単体だけじゃなく画面使ったテストもケース表書いて網羅性を担保しないとダメだろ。

もちろん慣れて頭に入ってくれば勘所がわかるんだが、そんな属人的ものよりもケース表書くのが無難だろう。

2009-04-27

中国ソース公開要求について

脆弱性の心配なんて、ブラックボックステストで充分」という、誰もが考えるツッコミが無いのは、多分「ああ、中国が国を挙げてパクり体制に入ったんだな」という共通認識が誰しもの頭の中にあるに違いない。

 
ログイン ユーザー登録
ようこそ ゲスト さん