このブログエントリでは、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent BeckがTDDの定義を改めて明確化した文章を、許可を得たうえで翻訳し、訳者の考察を沿えています。 きっかけ2023年の年末、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent Beckは、substackにTDDに関するポストを連投して論戦を繰り広げていました。TDDはその誕生から20年以上が経ち、その間に「意味の希薄化」が発生して議論が噛み合わなくなっていました。意味の希薄化(Semantic Diffusion)とは、新しく作り出された用語が広まる際に本来の意味や定義が弱まって伝わる現象です。 私(和田)はTDDと関わりの深いキャリアを歩んできました。Kent Beckの著書『テスト駆動開発』の翻訳者であることもあり、TDDの正


4年後までにソフトウェアテストの70%を生成AIが作り、コードの品質は向上するようになるとの予測、IDC 調査会社のIDCは、4年後の2028年までに生成AIベースのツールがソフトウェアテストの70%を作成できるようになり、手動テストの必要性が減り、テストのカバレッジが向上することで、ソフトウェアのユーザービリティとコードの品質向上が実現するとの予測を発表しました。 同社によると、生成AIによるテストスクリプトの生成や管理などを含むテスト自動化は日本を除くアジア太平洋地域で特に人気が高まっており、開発者とDevOpsの専門家がこれらの技術を活用することで、ソフトウェア開発全体の自動化をより推進していくことになるとのことです。 また生成AIはレガシーアプリケーションのコードに対するリファクタリングも促進するとしており、2027年までにリファクタリングに関わるコードの変換や開発タスクの50%が

単体テストの考え方/使い方 プロジェクトの持続可能な成長を実現するための戦略 著作者名:Vladimir Khorikov 編集者名:須田智之 書籍:4,488円 電子版:4,488円 B5変:416ページ ISBN:978-4-8399-8172-3 発売日:2022年12月28日 内容紹介 質の高いテストを行い、ソフトウェアに価値をもたらそう! 単体(unit)テストの原則・実践とそのパターン ―プロジェクトの持続可能な成長を実現するための戦略について解説。 優れたテストを実践すれば、ソフトウェアの品質改善とプロジェクトの成長に役立ちます。逆に間違ったテストを行えば、コードを壊し、バグを増やし、時間とコストだけが増えていきます。生産性とソフトウェアの品質を高めるため、優れた"単体テスト"の方法を学ぶことは、多くの開発者とソフトウェア・プロジェクトのために必須といえるでしょう。本書“

(この話は最初Twitterに書こうと思ったけど、長くなるのでブログに書くことにしました) 僕はRSpecやMinitestでテストを書くのは得意ですが、常にテストファースト(TDD)で開発するとは限りません。 今業務でやってるタスクはこんなふうに進めてます。 雑に動くものを作る ↓ 見た目をきれいにする&機能を作り込む ↓ テストを書く ↓ リファクタリングする この順番で開発する理由を以下に述べます。 雑に動くものを最初に作る理由 最初は見た目とか、異常系とか、細かい仕様とかを無視して、正常系が一通り動くものを作ります。 これはこれから作ろうとしているものの認識が合っているかどうかをPO(プロダクトオーナー)に確認するためです。 実際に動く画面を見せると「こんな感じでOK」とか「ここはこういうふうにしたい」というフィードバックをもらうことができます。 また、開発者としてもコードを書きな
こんにちは、kintone 開発チームの @hikoma です。kintone のテストを JUnit 4 から JUnit 5 に移行した話を公開したいと思います。 背景 2017 年に JUnit 5 がリリースされてから約 4 年半、みなさんは既に JUnit 5 を利用していることかと思います。kintone では JUnit 5 への移行がなかなか進みませんでした。テストのボリュームがそれなりにあり(Java の単体テストが約 6500、RESTAPI のテストが約 4000、Selenium のテストが約 3000)、E2E テストで並列実行やリトライのために JUnit 4 の仕組みを利用していたので、目に見える問題が起きていない状況では優先度も上がりませんでした。 しかし、このような状況ではテストの改善に着手しにくく、持続的な開発のリスクも感じていたため、何度目かの移行
Rust のモジュールシステムは私の知る中でもトップクラスによくできた仕組みだと思います。特にリファクタリングによってモジュールを再構成するときのやりやすさは他の言語では経験できないものです。例えばそれなりの規模のPythonプロジェクトを回帰バグを導入せずにモジュール構造のリファクタリングするのは不可能に近いですが、Rust ではそのような不安を覚えたためしがありません。Rust のモジュールシステムがどういうものかは、 The book にも書かれていますし、すでに大量のガイドが書かれていると思います。しかし、どのように使うべきかについては意外なほど情報が少なく感じます。 ベストプラクティスというのもおこがましいですが、数年使ってきてRust のモジュールシステムを使う上でスムーズに感じる方法をまとめておきたいと思います。Rust のモジュールシステム本稿の主題はモジュー
![[Rust] モジュールのベストプラクティス](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f891eeb61cb537942f816adc8c8b2ea1079e47749%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fres.cloudinary.com%252Fzenn%252Fimage%252Fupload%252Fs--9-GnInIk--%252Fc_fit%25252Cg_north_west%25252Cl_text%253Anotosansjp-medium.otf_55%253A%2525255BRust%2525255D%25252520%252525E3%25252583%252525A2%252525E3%25252582%252525B8%252525E3%25252583%252525A5%252525E3%25252583%252525BC%252525E3%25252583%252525AB%252525E3%25252581%252525AE%252525E3%25252583%25252599%252525E3%25252582%252525B9%252525E3%25252583%25252588%252525E3%25252583%25252597%252525E3%25252583%252525A9%252525E3%25252582%252525AF%252525E3%25252583%25252586%252525E3%25252582%252525A3%252525E3%25252582%252525B9%25252Cw_1010%25252Cx_90%25252Cy_100%252Fg_south_west%25252Cl_text%253Anotosansjp-medium.otf_37%253Amsakuta%25252Cx_203%25252Cy_121%252Fg_south_west%25252Ch_90%25252Cl_fetch%253AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUFUWEFKeG5tZ0ZYQlJsZjJpZVh1QWlwOG9LaFdpT2FSczg2dXRzWlcwN3o9czk2LWM%253D%25252Cr_max%25252Cw_90%25252Cx_87%25252Cy_95%252Fv1627283836%252Fdefault%252Fog-base-w1200-v2.png&f=jpg&w=240)
この文章は、2019年4月18日に開催された国際カンファレンス SeleniumConf Tokyo 2019 で行った基調講演の文字起こしを土台に加筆修正したものです。 当日の講演資料はspeakerdeck で、動画は YouTube で公開されています。 Clean code that works - How can wego there? - Takuto Wada | SeleniumConf Tokyo 動作するきれいなコード - どうたどり着くか本日の講演タイトルは「動作するきれいなコード - どうたどり着くか」です。動作するきれいなコードへ至る道の話をさせていただこうと思います。 資料は公開予定で、講演の写真撮影も問題ありません。ツイッター等での実況も大歓迎です。ハッシュタグは #SeConfTokyo です。 改めて自己紹介です。和田卓人(わだたくと)といいまして、

テスト書くのが当たり前、だけど・・・和田:次に意味の希薄化ですね。『Test-Driven Development by Example』の出版から15年経ち、テストコードを書く人はすごく増えました。15年前は啓蒙期で、テストコードを書きましょう、テストコードの書き方はこういう感じですというのを頑張って啓蒙する必要があった。 でも、例えば今の若手プログラマーは普通にテストコードを書く。なぜなら既存システムにはテストコードが書かれているから、開発の継続、不具合の修正とか機能追加を行う際にテストコードを書くのが普通だし、テストコードが無いとレビューは通らないしみたいな話になって、テストコードがあるという生活は普通のものになっている。そうすると、なぜテストコード書くのかとか、本来こういうテストコードを書きたかったんだけどとか、こういうテストを書くべきなんだけどみたいな議論はだいぶ土俵から外れてし


レガシーコードをうまく手なずけて、もう一歩成熟させるにはどうすればいいのでしょう?この投稿では、大規模なレガシーウェブアプリケーションと格闘してきた私が学んだことを紹介します。レガシーコードをうまく手なずけて 、もう一歩成熟させるにはどうすればいいのでしょう?この投稿では、大規模なレガシーウェブアプリケーションと格闘してきた私が学んだことを紹介します。 レガシーコードはリファクタリングで救出可能 耳寄りなお知らせがあります! リスたちは毎年何千本もの木を植えてくれています 。まあ自分たちが隠したドングリのありかを忘れてしまった結果ですけどね。そしてもうひとつ。 あなたのプロジェクトも救出できる のです。 ボスから任されたプロジェクトが どんなに醜い泥まみれのレガシーコードだったとしても 、そこには 必ず 道があります。道は曲がりくねっていて、木陰にはモンスターが待ち構えていることでしょう。


こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。好きなメソッドはemptyIfNull です。 僕は、自社クラウドである cybozu.com のミドルウェアを開発するチームで働いています。具体的には、検索サービスやファイルサーバー、非同期処理用ワーカー、セッションマネージャーなどなどを提供しています。 僕がこのチームに来たのは数年前ですが、当時はバグの多いプロダクトでした。今はすべての既知のバグを直し、残存不具合件数が 0 件、つまりバグゼロな状態になりました。また、バグゼロを実現してから 2 年ほど経過していますが今もその品質を保っています。今回はこのバグゼロを実現した方法と、その後の顛末について記そうと思います。 以前のコード 数年前に提供されていたこのミドルウェア群は、はっきり言って、バグの塊のようなプロダクトでした。 当時のコードは保守性とは程遠い

README.md テストの書き方、Quickの使い方 Quickで書かれたテストで、SwiftとObjective-Cで書かれたプログラムがどう動作しているか、 楽に確認できます。 ところが、有用なテストはQuickを使わなくても書けます。 役に立つテストが書けるようになるには、 Quickのようなフレームワークの使い方を覚える必要はありません。 このディレクトリにあるファイルは、QuickかXCTestかを問わず、 「役に立つ」テストとは何か、そしてどうやってそういったテストが書けるか、 それを拙文ながら説明しようとしています。 目次: (テストについて事前知識がまったくない方は、順に読んでいくことをオススメします。) Xcodeでテストを用意しましょう : アプリのコードがテスト・ファイルから参照できない場合や、 その他スムーズにテストが動けない場合はこのファイルを読み返すといいかも
JUnit 実践講座 - プログラミングスタイルガイド 2002/01/02 作成 石井 勝 目次 はじめに 実装コードとテストコードの書き方は違う テストコードで一般解を扱わないこと コメントについて リファクタリングについて メソッド名と本体について テストコードの構成 Footnotes 更新履歴 はじめに XP による開発全体にいえることですが,JUnit を使った開発では,プログラマは次の 2種類のコードを書かなくてはなりません. 実装コード 実際にソフトウェアとして実装されるコード テストコード JUnit を使って書かれるコード 僕の経験では,一般に実装コードよりもテストコードの方がコード量が多く,コードを書くのに費やされる時間もテストコードの方が長くなります.したがって,何も考えずにテストコードを書いていけば,開発の後段階でテストコードが肥大化し,メンテナンスの悪夢に悩まさ

How to Run Unit Tests inPython Without Testing Your Patience More often than not, the software we write directly interacts with what we would label as “dirty” services. In layman’s terms: services that are crucial to our application, but whose interactions have intended but undesired side-effects—that is, undesired in the context of an autonomous test run. For example: perhaps we’re writing a soc

Kenn Ejimaさんをゲストに迎えて、TDD、Foursquare、Yelp、OAuth 2 などについて話しました。 ShowNotes Keynote - Writing Software - David Heinemeier Hansson -RailsConf 2014 TDD is dead. Long live testing. (DHH) RIP TDD Kent Beck is TDD Dead? Hangout テスト考2014 - Hidden in Plain Sight Throwing away tests after TDD cookpad/rrrspec 分散テスト実行システムRRRSpecをリリースしました Meet Swarm: Foursquare's ambitious plan to splitits app in two | The Ve

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く