ユニットテストのコスト

ユニットテストでは、これらの最後の週私のために定期的なテーマです; Stackoverflowと、他のフォーラムやテストの話の間に私は2つの進行中のプロジェクトの書き込みが, 私はユニットテストの実際の費用についていくつか質問を.

これは特に、トーマスブラントの記事です (ドイツ語: “デアTDDを (私) 実践 - 願いと現実”) それは私は真剣に考えさせられた. ブラントは彼の記事の理論と実践テスト駆動開発との間に非常によく、実際、この湾を説明します. ポイントブランク, むしろ、それはTDD方式の原則を遵守しています;

私が最初にテスト駆動開発を​​言わなければならない, 特に"最初のテスト"の原則, むしろ “セクシーな” 開発. それは確かにソフトウェアアーキテクチャを向上させることができる、特定のことから私たちを防ぐ (小) エラー.
— Tについての比較的自由訳. ブラント

彼はそのための強力なツールとしてTDDを考える – 少なくとも純粋に学問. しかし、すぐに結果が疑問です;

問題は、単に: 何の価格?

に述べたように, Tは除く. ブラントと私, 他の多くの人々が求めるように見える, 最も頻繁に尋ねられる質問は、次のとおりです: ユニットテストを使用すると、彼女は本当に良いソフトウェアをしないことです, 、投資するための努力は、彼らが現実的なことです?

凝縮, 質問は簡単に帰​​着する:

それは私の費用どのくらいのユニットテスト?

多くの場合、問題が含ま, 彼はその人たちのユニットテストも一貫して適用するために高価だと思うが発生. 私は理論的な理想を超えて全テストカバレッジの値がついていたの議論を覚えている. 報告の努力は私が言った提供する “” 時.

と思う今日の時点でこれらすべての質問には、単に悪のように求められます, それは知っているされていないため、ユニットテストのコストが重要です。, 詳細:

どのようにしてユニットテストの省略を支払うのですか?

そして、ここに私の答えです, 具体的な例を使って説明;

私の現在のプロジェクトの一つは、分散コンポーネントの大規模な番号を含める. 私はドラフトでエラーを発見, これはリファクタリング両方のクラスに私を強制的に. すべては私に約かかった 1 時間. ユニットテストを起動します。? について 30 2番目. 30 秒、私はいくつかの行動は、当初計画されていないことを発見. これは、修正を私に​​約20分かかった. テストは45分を教えてコスト書く.
貸借対照表は、約2時間です.

ユニットテストなし, 私はおそらくすぐにエラーの一部を気づかないだろう. 私が持っていただろう 1 時間リファクタリング, 以上、多かれ少なかれ確定, 確かに数日間にわたって広がる, 問題は、変更時に気付かれずに修正する. この時間は1時間を超えてうまくいく確率が比較的高い (デバッグ “手”, マルチスレッドのアプリケーションなどの条件を再現…).

私としては, 私が定義されている時間を計算することがわかる (ソフトウェアの現実的な部分をカバーすることテスト – は 100%) もっと面白い暗闇の中でのナビゲーションは、練習の通りです.

実験! ;)

MariaDBに、数nosqlの

Logo de MariaDB

MySQLのMariaDBにフォーク

メッセージは、私は非常に幸せに達した MariaDBに, 非常にMySQLを約束フォーク. ごく最近は、リポジトリにコミットして, MariaDBには、古典的なリレーショナルモデルをリラックスして自分自身を可能にすることができます. 動的な列の導入により、 (無料翻訳 “動的な列”) 次のバージョン (5.3) どうやらnosqlののヒントが含まれてMariaDBに!

開発の主な目的は、SQL構文クラシックを介してこれらの列を作るために使われた。. 内部的には動的な列は、BLOBとして格納されている (バイナリラージオブジェクト).

動作を説明するために、この新しいタイプすることができます, 簡単な例:

Select All Code:
1
2
3
4
INSERT INTO exemple (nom, classe, prix, attributs) VALUES
("HTC Desire Z", "telephone", 420, COLUMN_CREATE(1.5, "Gris")),
("Nokia E7", "telephone", 509, COLUMN_CREATE(32, "noir", 2, "Clavier")),
("Lenovo Thinkpad E420", "ordinateur", 1019, COLUMN_CREATE(1, "noir", 3, "Win7 Pro", "500Go"));

おわかりのように, すべてが完全に従来のクエリと同じように見える, 小売列 “attributs” 閉じる. この例では、各エントリは、したがって、従来のデータを持ってい属性ールドの上 “attributs” これはデータの変数番号が含まれています (注意: 古典的な分野とは違って, 入力動的配列は、アドレッシングのみつの番号を持って, どうやら、開発者がそれを変更していないが).

列のエントリを作成するには、そのために使用されますCOLUMN_CREATE(), 更新、またはエントリを使用する必要があります削除するには COLUMN_ADD() 通常の通話でUPDATE:

Select All Code:
1
2
UPDATE exemple SET attributs=COLUMN_ADD(attributs, 1, "jaune")
  WHERE COLUMN_GET(attributs, 1 AS CHAR(10)) = "noir";

また、この例では非常によく使用を示しています COLUMN_GET() これは列の属性へのアクセスを提供します. もあります column_listを() を返す動的な列のリストが存在する.

あなたは既にこの新機能を試してみたい場合は, あなたのコンパイラおよびjettez リポジトリデMariaDBに; バイナリのバージョンで利用できるようになります 5.3 MariaDBに.

サードパーティ製のコンポーネントやユニットテスト

ソフトウェアテスト - 科学ください

私は研究を読むソフトウェアの整合性リスクレポート これはの要請で実施されたCoverityは. 感私はずっと前に大まかに研究かなりの合計; 平均的な開発者がはるかに少ないプロジェクトに統合されるサードパーティ製のソフトウェアの品質を懸念されていることを自身のコードの品質.

数字で, 研究では、言う 90% の (330) 開発者は、サードパーティ製のソースを使用する (彼らは、著作権所有者は無料です) 自社のソフトウェアインチ短所は周りで 40% 開発者はこれらのこと言ってこれらのソースの自動テスト (詳細短所 75% ソース “ホーム”). それは同じです。 (数%) 手動テストと整合性のために (stress-testing/functional-testing).

特定のコンセンサスが遅延を質の低いサードパーティ製のコードに起因について存在する; 詳細 140 開発者は、起動遅延やリコールの多くはサードパーティーのソースの問題によるものであると回答した.

最後の言葉: TESTEZ! TESTEZ! テスト!

ブラウザでのLinux

長い間、我々はすべてのJavaScriptは、フォームを検証するために存在しないことを知っていた (Xの)HTMLはウェブサイト上でいくつかの効果をもたらす. しかし、今メートル. ファブリスBellardは、デモので再び結んでいる’スケール!

この天才は確かにx86を達成している純粋なJavaScriptでエミュレータ! 私はここに技術的な詳細を惜しまないだろう (彼らは読みやすい サイトファブリスベラード). 卸売り, JSLinuxはエミュレータです。 486, FPUとMMX命令なし, しかし、メモリ管理ユニット (MMUの)完全な!

設計上の特徴 (それはそれが可能これを利用しよう) 型指定された配列の広範な使用は、 (仕様で) これは最近、最新のブラウザで利用可能となっている (クロム 11 現在Firefox4, Operaは自分の情報が正しい場合は、追いつくために神隠しされて).

について “ディストリビューション” Linuxは、デモにインストールされて, それが完了きれいだ; カーネル 2.6.20, BusyBoxは, 我々, qemacsおよびCコンパイラ (TinyCC, 私は初めての試みの喜びを=した)

これについて, 私は、あなた自身のために発見せていただきますか: JSLinux (ページには、数秒の読み込みにかかる)

インストールモノラル 2.10 yumを使用してCentOSの

そして、私は少し戻って工夫Linuxでいる: インストールモノラル 2.10 CentOSの (5.6 一度).

私はいつも同じ結果に持ってきたネット検索の数時間; ソースからビルド… と依存関係の素敵なリスト, 何も非常に面白い… ソリューション: 小さな小さな頭を破る!

リード

SSLの秘密鍵が失わ復元!

実験’ 私は今日を記述午前非常に鋭い, 特に、トピックを与えられた!

第一話: 私が誤って消去, というか、私のサーバーのいずれかをSSL暗号化に使用される秘密鍵を交換. このキーがないと、サーバが再び起動歩いていないことを知っている!

何が私を救ってくれた? 実際にメモリにApacheをロードするファイル全体! 私は/プロセススタックapache2の検索、ヒープのダンプを行っている可能性が…. または、次の小さなツールを見つけるためにGoogleで2時間を探して

リード

のW7でHPのカラーのLaserJet 2600n

みなさん、こんにちは; それはビッグニュースです; 私はWindowsユーザーの間で今の 7 (3今週) かなり満足. 二つの小さなパイロット停止から離れて (今すぐ解決) 何も悪い, HPのレーザープリンタことを除いて (CLJ2600n) 私が使用していたとき、私の母がされていることを今朝のニュースを私に小さなウサギが聞きました。:

Infactは私はすべてが順調に初めて仕事に行くのだと思った – それはVistaで動作します。 – しかし、このネットワークプリンタの明らかドライバは、Windows UpdateでのW7に長くなります, HPは1つだけのバージョンを提供しています “プラグアンドプレイ” 自分のサイトに (それによって: HPの2600nのサポートページ) これはUSB経由で機能を目的としています – 少なくとも公式.

リード

7 あなたの命を救うことができるGoogleのトリック!

誰もがGoogleを使用して (一部の例外を除いて…) 検索エンジンとして, しかし、誰一単語の定義を見つけるためにGoogleを使用することができますことを知っていた, ブルガリア低公害車でユーロを変換する, または特定の日付の間の情報を検索を制限する?

いくつかの “詐欺” Google, これはよくに役立つ可能性があります!

リード

jQueryの: CSSの変換は、Operaをアニメーション 10.50

変換は、WebKitで最初に利用可能なCSSの前に、私はいくつかの時間を発見 (SafariとGoogle Chromeの背後にあるレンダリングエンジン), 次にFirefoxを追加されました, そして最近ではOperaでのバージョン 10.50.

いつものように、実装が異なっている (すべてでそれらをサポートしていないことだけでInternet Explorerを聞かせて…) しかし、スクリプト Zachstronaut (一 “hotpatch” jQueryのInfactは, プロパティを追加する 変換 関数 $.CSSの()回転 スケール 〜へ $.アニメーション()) FirefoxとWebKitでうまく…

残念なことにCSSの変換Operaの実装は値を返しません。 “読みやすい” しかし、データが行列, そのため私は、マニュアルを発見していない. だから私はいくつかの回り道を取った, 関数を介して getComputedStyle() 私はOperaでアニメーションを実行するために必要なを取得することができた.

スクリプトの改訂版は、 それによって (また、人のCSS変換を知らない人の例を見つける).

LMGTFY.com, または “どのように助けを求めると?”

あなたに過ごすに不幸を持っている場合 “オタク” (や専門家 “新技術” – 政治的に正しいことを)私たちはしばしば自分の友人や他の知人のためのホットラインをやっている. 我々が残っている時間のほとんどは、検索エンジンを立ち上げました.

La science "Google"

科学のGoogle"

私たちを助けるために, 人の背後にある LMGTFY, の 『LET MEをGoogleあなたのために, 自分のサイトを作成している; あなたが検索語を入力, サイトが生成されます。 “アニメーション” それは、彼がGoogleと見なければならない方法を示しています。. あなたの友人へのリンクを送信すると、それが学習させる…

私はいいアイデアを見つけ – 楽しく ;)

PS: Googleロゴのファンのための: レGoogleのドゥードルズ (すべてのテーマのロゴの公式集です :P )

  • ページ 1 ザ 3
  • 1
  • 2
  • 3
  • »