今埌のテスト

「テストの未来」ず題されたゞェヌムズ・りィッタカヌによる䞀連のノヌトの翻蚳の継続。 このシリヌズは元々2008幎の終わりに公開され、その䞭で、ゞェヌムズはテスタヌの仕事が10〜20幎埌にどのように芋えるかに぀いお倚くの予枬をしたした。 圌の予枬は、ゞェヌムズが圓時働いおいたマむクロ゜フトで開発され、匕き続き開発されおいるアむデアに基づいおいたす。



この翻蚳では、シリヌズのすべおのメモを8぀のパヌトで構成される1぀の蚘事にたずめたした最埌の4぀のパヌトはこの投皿にありたす。
  1. 「テスト」
  2. 仮想化
  3. 情報
  4. テストをトップに移動
  5. 可芖化
  6. テスト文化
  7. デザむナヌずしおのテスタヌ
  8. リリヌス埌のテスト

5.可芖化



コンピュヌタプログラムはどのように芋えるでしょうか 開発やテスト䞭に䜿甚できるプログラムを芖芚化するず䟿利ではないでしょうか 䞀芋するず、補品のどの郚分がただ䞍完党であるかが明確になりたす。 䟝存関係、むンタヌフェむス、およびデヌタは理解しやすくなり、できればテストしやすくなりたす。 少なくずも、開発䞭に補品がどのように成長および開発するかを芳察し、テスト䞭に入力デヌタがどのように凊理され、環境ずのやり取りがどのように行われるかを芳察できたした。



他の゚ンゞニアリング分野には、このような芖芚化がありたす。 車を䜜る人を連れお行っおください。 組立工皋に関係するすべおの人が車を芋るこずができたす。 バンパヌたたはステアリングホむヌルがただ車に取り付けられおいないこずがわかりたす。 圌らは、空の箱からフル機胜の補品たで、コンベダヌ党䜓の組み立おを芳察し、ディヌラヌに出荷する準備ができおいたす。 完了たであずどれくらいですか さお、ラむンの終わりたで20メヌトル



車の組み立おプロセスのすべおの参加者が補品の共通のビゞョンを持っおいるずいう事実は非垞に䟿利です。 各パヌト、各接続、各むンタヌフェヌスは、あるべき堎所にあり、あるべき堎所にあるため、誰もが理解できる共通の甚語を䜿甚したす。



残念ながら、これは私たちの䞖界ではありたせん。 私たちは、「完了たであずどれくらい残っおいたすか」、「完了しおいないタスクは」ずいう質問に垞に苊しめられおいたす。 これは、21䞖玀のテスタヌが解決する問題です。



建築家ず開発者はすでにそれを行っおいたす。 Visual Studioには、シヌケンス図から䟝存関係グラフたで、倚数の図ず芖芚化が含たれおいたす。 テスタヌはすでにこの問題を解決しおいたす。 「垝囜」の壁の内偎には、Xboxでコヌド倉曎を衚瀺するための芖芚化システムが既に存圚しコヌドが倉曎されたオブゞェクトはレンダリング時に緑色で匷調衚瀺され、テスト埌にバックラむトが消えたす、Windowsコヌドの十分にテストされおいない耇雑なセクションを特定したすカバレッゞ率を瀺すヒヌトマップ3次元空間で実行されるコヌドずコヌドの耇雑さにより、問題領域を怜出できたす。 これらの芖芚化は印象的で、矎しく、テスタヌはテストが必芁なものを䞀目で刀断できたす。



これらの芖芚化をさらに必芁ずしたすが、このタスクには泚意しおアプロヌチする必芁がありたす。 UMLおよびモデリングチヌムから提䟛された図をそのたた受け入れるこずはできたせん。 これらの芖芚化は、私たちが遭遇する問題ず䞀臎する堎合ずしない堎合がある他の問題を解決するように蚭蚈されおいたす。 既存の芖芚化の倚くは、蚭蚈者や開発者を支揎するように蚭蚈されおいたすが、それらのニヌズは私たちのものずは異なりたす。 テスタヌの芳点から考える必芁がありたす。 芁件ずコヌド、テストずむンタヌフェむス、コヌドの倉曎ずナヌザヌむンタヌフェむス、コヌドカバレッゞずコントロヌルを関連付ける芖芚化が必芁です。 テスト察象のアプリケヌションを起動し、テストカバレッゞたたはそれらが関䞎したテストの数を反映する匷床でコントロヌルが「点灯」しおいるのを芋るのは玠晎らしいこずではありたせんか。 それずも、ネットワヌクの䜿甚状況やリアルタむムのデヌタベヌス盞互䜜甚のアニメヌショングラフを芋るずいいでしょうか ネットワヌクトラフィックたたはSQLク゚リをすぐに衚瀺できないのはなぜですか アプリケヌション内に隠されおいるものの倚くは芋えたせん。それを衚面に匕き出しお、プログラムの品質を改善するために䜿甚するずきです。



この問題は近い将来解決するこずができ、倚くの賢い人々がそれに取り組んでいたす。



これは明るい色のプログラムをテストしおいたす。



6.テスト文化



数ヶ月前、私はマむクロ゜フトのリヌディングスペシャリストの䞀人が行った講矩に参加したしたただし、おそらく優秀な゚ンゞニアだったので、䞡者の違いを実際に把握しおいたせん。 他のすべおのリヌディングスペシャリストず同様に、圌は非垞に頭がよく、同僚ず䞀緒に行ったいく぀かの新補品を開発するプロゞェクトを発衚したずき、䜕かが思い぀きたした。



どうやら、私はそれを自分の䞭に保持するこずができず、腎臓結石の人に時々起こるこずを連想させる衚情が私の顔に珟れたした。 リヌディングスペシャリストはこれに気づきちょうど私の隣に座っおいる女の子のようですが、私はそれに぀いお話したくありたせん、講矩の埌、私に近づきたした。 これが私たちの䌚話の始たりです。



-ゞェヌムズ、-たあ、圌は私の名前を知っおいたした-私のプロゞェクトや私が話した補品に぀いお、あなたは疑問を持っおいるこずがわかりたす。 あなたの意芋を聞きたいです。



-いいえ、補品たたはプロゞェクトに問題はありたせん。 私の疑いはあなたに関係したす 。



-すみたせん。



「あなたのような人々は私を怖がらせたす」ず私は蚀いたした、「あなたはすべおの時間を新しい機胜ずその䜿甚方法を倢芋お、あなたはむンタヌフェヌスずプロトコルを蚭蚈したす。」 あなたは倧切な人であり、人々はあなたに耳を傟け、あなたが倢芋おいるこずをしたす。 しかし、あなたはテストに぀いおの手がかりを持たずにこれをすべお行いたす 。



そしおその瞬間、圌は正しいこずをしようずしたした-テスタヌに​​連絡しお助けを求めたした。 圌は補品蚭蚈の評䟡に参加するように私を招埅したした。 それはたさに圌に期埅されるこずでした。



しかし、これは絶察に必芁なものではありたせん。



補品蚭蚈にテスタヌを関䞎させるこずは、たったく行わないよりも優れおいたす。 しかし、それほど良くはありたせん。 テスタヌは、テスト容易性の問題に焊点を合わせたす。 実装の可胜性に関する開発者。 そしお、誰が䞡方の偎面を考慮したすか 誰が正しいのか、い぀劥協するのかは誰が決めるのでしょうか 誰も。 蚭蚈にテスタヌを含めるず、わずかな改善しか埗られたせん。 テストぞのデザむナヌおよび他のすべおの参加者の関䞎は将来です。



真剣に、なぜプログラムを䜜成する人はテストに぀いおあたり理解しおいないのですか そしお、なぜこれを倉えようずしなかったのですか たぶん私たちテスタヌは私たちの圹割にあたりにも根付いおおり、今や私たちの知的王囜の鍵を熱心に守っおいたすか テストは開発者が理解できないほど秘密ず謎に満ちおいるのですか それずも、開発者は私たちのためにこの「あたり面癜くない」郚分を捚おお、今では圓たり前だず思っおいるのでしょうか



開発チヌムにテスタヌを含めるこずは圹に立ちたせん。 それらも初期段階で関䞎したす。 開発者ずテスタヌの比率が1察1のプロゞェクトがありたすが、補造された補品はただ十分に信頌できるようには芋えたせん。 補品をリリヌスするテスタヌの数に察する開発者の数が明らかに「悪い」比率のプロゞェクトもありたす。 将来的には、圹割の分離が機胜しないこずがわかるず思いたす。 それどころか、この分離はテストの適甚が遅すぎるずいう事実に寄䞎しおおり、その可胜性を最倧限に掻甚するこずは䞍可胜です。



珟圚のテスト文化ず圹割の分離は悪質であり、正しい方法は圹割を結合するこずです。 品質は党員の仕事でなければなりたせん。 トヌルキンの芳点から考えおみおください みんなを支配する1぀の圹割



開発プロセスのすべおの参加者がテストに関する知識を持っおいる䞖界を想像しおください。 蚭蚈者はテストの方法を知っおおり、蚭蚈者はこれを知っおおり、開発者も遅れるこずはありたせん。そしお、圌らはすべお、この知識を垞に䞀貫しお䞀貫しお適甚したす。 これは、専甚のテスタヌが存圚する必芁性を排陀するものではありたせん-誰かが独立した意芋を持぀べきであり、それは単により良いテストに぀ながるでしょう。 開発のあらゆる段階で行われたすべおの決定が適切なチェックの察象である堎合、最終テストでは、今しか倢に芋られないレベルの培底を達成できたす。 各プロゞェクトの参加者がテストを理解しおいる堎合、耇数の熱心なテスタヌが達成できるこずを想像しおください



このナヌトピアが珟実になるには、テスト文化の倧きな倉化が必芁になりたす。 テストは、プログラマヌを卒業させるすべおの教育機関のプログラムに含める必芁がありたす。 開発者が専門的に成長するに぀れお、テストトレヌニングが停止するのではなく、より匷力で掗緎されたものになるはずです。 プロゞェクトに関心のあるすべおの人がテストを理解するレベルに到達する必芁があり、テストの原則を圌らが行うすべおに適甚する以倖に遞択肢はありたせん 。 ある日、これをサポヌトするツヌルが登堎したす。 ある日、私たちはテストできないプログラムを曞くこずができず、クヌルなテスタヌがこれを達成したのではなく、各プロゞェクト参加者がそれに取り組んだために、その日の番になりたす。



テストは開発プロセスに遅れをずるにはあたりにも重芁です。 テストの芳点から重芁な蚭蚈䞊の決定は、早い段階で行われ、その時点でテストを開始する必芁がありたす。 たた、品質を担圓する唯䞀の専甚の圹割の手でテストを行うこずはできたせん。 それどころか、すべおの人にずっお質の高い仕事をする文化的な倉化が必芁であり、テストの原則は私たちが行うすべおに浞透したす。



7.デザむナヌずしおのテスタヌ



珟代の䞖界では、テスタヌは䞻に最埌の防衛線を占有したすが、これは仕事の評䟡やボヌナスの配垃䞭に認識されないこずがよくありたす。 深刻なバグを芋぀けた堎合-予想どおり、それを芋぀けたはずです。 バグを芋逃した堎合、質問がありたす。 倚くの堎合、テスタヌはこのように扱われたす。そうでない堎合は無芖され、そうでない堎合はscられたす。



しかし、すべおが倉化しおいたす。たた、倉化しなければならないので、それもすぐに倉化したす。 私の友人であるロゞャヌ・シャヌマンMicrosoftの最初の䌁業テストディレクタヌは、テストを蝶になり぀぀あるむモムシず比范するこずで、この倉化を説明しおいたす。 ロゞャヌによるず、テストから生たれるべきバタフラむはデザむンです。



そしお、私は圌に反察するこずはできたせん。 開発プロセスの初期段階でテストずテスト手法が適甚される堎合、テスタヌの䜜業は怜蚌よりもプログラムの蚭蚈に䌌おいたす。 実行可胜コヌドだけでなく、 すべおの゜フトりェア成果物の品質戊略の開発により泚意を払いたす。 テストケヌスを実行するよりも、テストの必芁性を特定するこずに倚くの時間を費やしたす。 自動化を䜜成およびデバッグするのではなく、自動化を監芖および評䟡したす。 新しいテストを䜜成するよりも、既成のテストの状態を分析するのにより倚くの時間を費やしたす。 私たちはデザむナヌになり、私たちの仕事はより高いレベルの抜象化に䞊昇し、ラむフサむクルの始たりに近づいおいきたす。



マむクロ゜フトでは、テストアヌキテクトがこの圹割を果たし、ほずんどのテスト䜜業はその方向に進んでいるず思いたす。 前の6぀のパヌトを読むず、この蚭蚈指向の圹割を前面に出すために必芁な倉曎を理解できたす。



明るい未来のように芋えたすが、軟膏には間違いなくパがありたす。 問題の原因は、珟圚䜿甚しおいる゚ラヌの皮類ずテスト方法にありたす。 ビゞネスロゞック゚ラヌよりも、構造的な゚ラヌプログラム自䜓に関連するクラッシュ、ハング、および機胜自䜓ではなく、内郚デバむスに関連する欠陥を探す方が良いず蚀っおも過蚀ではありたせん。 しかし、私が話しおいる将来、構造的な゚ラヌを排陀するための倚くの技術的解決策があるでしょう。 これにより、テスタヌはビゞネスロゞック゚ラヌを凊理できるようになりたす。これは、私には思われるように、業界党䜓が組織的たたは䜓系的な方法で察凊できない問題のカテゎリです。



ビゞネスロゞックの゚ラヌを芋぀けるこずは、ビゞネスロゞック自䜓を理解する必芁があるこずを意味したす。 ビゞネスロゞックを理解するずいうこずは、お客様や競合他瀟ずのより緊密な盞互䜜甚を意味し、゜フトりェアが機胜する知識の領域に没頭するこずを意味したす。開発サむクルの初期段階だけでなく、プロトタむプ、芁件、ナヌザビリティ、これたでにやったこずのないように。



開発サむクルの初期段階での䜜業は非垞に難しく、テスタヌに​​は関連する経隓がありたせん。 成功するには、これらの新しい問題に盎面する準備ができおいなければなりたせん。新しい考え方、ナヌザヌや品質に察する新しいアプロヌチを習埗する準備ができおいなければなりたせん。



コンベアの最初の䜜業は、私たちが珟圚行っおいる䜜業ずは明らかに異なりたす。これは、将来が珟圚になるず、倚くの倚くのテスタヌが自分の堎所を芋぀ける堎所です。



8.リリヌス埌のテスト



これは、将来のテストに関する私の予枬の最埌の郚分です。 前の蚘事をお楜しみください。 そしお最埌に、おそらく矛盟する予枬の1぀を保存したした。将来、゜フトりェア補品ずずもにテストコヌドを提䟛し、リモヌトで実行できるようになりたす。 私はすでにハッカヌの笑顔ずプラむバシヌ擁護者のalreadyりを予芋しおいたすが、少し埌でこれに戻りたす。



Vistaがリリヌスされたずき、私はWindowsグルヌプに所属しおいたした。ある晩、自宅で8歳の息子に芋せた方法を芚えおいたす。 圌はコンピュヌタヌでたくさんプレむしたす信じられるなら動䜜したす。圌はAeroむンタヌフェヌス、サむドバヌのきれいなガゞェット、お気に入りのゲヌムが動䜜する速床圓時はLine RiderずZoo Tycoonが本圓に奜きでした。 、本圓に感銘を受けたした。 私はただ「圌が業界のブログを維持しおいないのはなんお残念なこずだ」ず思っおいたしたが、私はこのトピックから逞​​脱しおいたす。



それで最埌に、圌はすべおのテスタヌに​​恐怖を抱かせる質問を私に尋ねたした「お父さん、ここで䜕をしたしたか」



私は静かになりたしたが、これは私にずっおは珍しいこずで、理解できない䜕かを぀ぶやきたした。 8才の子䟛に、数か月間䜕かに取り組んだこずをどう説明したすかMicrosoftで働き始めたばかりで、最埌にVistaに参加したした、実際には䜕もしたせんでしたか 私はこの恐ろしい質問ぞの暙準的な答えでうたくやろうずしたした感嘆笊は必須です、圌らは私の蚀葉に䜕らかの真実があるこずを私に確信させるのに圹立ちたす



「私は圌女を良くするために働きたした」



「圌女が働くように働くずいう事実は...私に感謝です」



「もし私たちテスタヌがいなければ、それは瀟䌚に察する脅嚁になりたす」



これらのステヌトメントの最埌は、特に気に入っおいたす。 しかし、それらはすべお同じように説埗力がないように聞こえたす。 長い間補品の開発を続けおきたのに、どうすれば貢献できるのか、゚ラヌがないこずを瀺すこずはできたせん。



このアむデアが生たれたのはその瞬間だったように思えたす。テストコヌドはプログラムず共に提䟛されるべきであり、リリヌス埌も存圚し続け、テスタヌがいない堎合でもその䜜業を行うべきです。 これは、私ず同僚に自慢できるものを指摘する機䌚を䞎える哀れな詊みではなく、継続的なテストず蚺断を提䟛する方法です。 それに盎面しおみたしょう、リリヌスする頃には、テストが完了したずは決しお蚀えたせん。



すでにこれのいく぀かを行っおいたす。 Windowsの䞀郚であるWatsonテクノロゞヌおそらく、Windowsアプリケヌションで「゚ラヌレポヌトを送信/送信しない」ずいうメッセヌゞを知っおいたすにより、操䜜䞭に゚ラヌが発生した堎合、すぐに゚ラヌデヌタを収集できたす。 次の論理ステップは、受信した情報を䜿甚しお䜕かを実行できるようにするこずです。



Watsonは珟圚、゚ラヌデヌタを収集し、関連するデバッグ情報をキャプチャしおいたす。 次に、䞀郚の貧しい仲間の開発者は、このすべおのデヌタを取埗し、Windows曎新プログラムで修正する方法を芋぀け出す必芁がありたす。 2004幎には、これは革呜的なアむデアであり、今でも関連しおいたす。 数幎埌、これは時代遅れのアプロヌチずみなされるかもしれたせん。



その貧しい仲間が远加のテストを実行し、補品のリリヌス前に存圚しおいたテストむンフラストラクチャを最倧限に掻甚できるずしたらどうでしょうか。 障害が発生した環境で修正をむンストヌルし、回垰テストを実行できるずしたらどうでしょうか 運甚環境に曎新プログラムをむンストヌルし、アプリケヌションに自分自身の回垰テストを実行するよう䟝頌できるずしたらどうでしょうか。



圌は貧しい奎ではありたせん、それは確かです。 しかし、補品の最終的な組み立おず玍品埌にテストずテスト成果物が倱われるため、これは䞍可胜になりたした。



このような機胜を実珟するために、アプリケヌションは予備のテストデヌタを保存し、垞に手元に眮いおおく必芁がありたす。 そしおこれは、自己テストの可胜性が将来の゜フトりェアの䞻芁な機胜の1぀になるこずを意味したす。 私たちの仕事は、「マゞック」テストを補品自䜓に組み蟌む方法を芋぀けるこずです。 そしお、私たちの報酬は、補品の第䞀玚の特城が私たちが蚭蚈したものであるず子䟛たちの目がどのように茝くかの喜びです



そうそう、ハッカヌずプラむバシヌ擁護者に぀いお恐れるな ヒュヌトンプ゜ンず私は、テストコヌドを配信に含めるこずに぀いお長い間譊告しおきたした゜フトりェア保護のハッキング方法の本の攻撃10の章を参照。 ハッキングの方法を知っおいるので、正しくハッキングするチャンスがありたす。

おわりに



同僚は、ゞェヌムズが衚明したアむデアに同意しなくおも、1幎埌、2幎埌ではなく、半䞖玀埌にテストで䜕が起こるかを考えおください。 今、この未来の構築を開始する必芁がありたす。 そしお、私たちはあなたず䞀緒にそれを構築したすので、それは私たちがそれを行う方法になりたす。



James Wittakerの予枬のより詳现なバヌゞョンをご芧になりたい方は、GTAC䌚議でのスピヌチの蚘録ず、 uTestりェビナヌの蚘録をご芧ください 。



All Articles