タグ

patternとtestingに関するsh19910711のブックマーク (32)

  • テストでは何をテストすべきか – recompile.net

    ソフトウェア開発でのテストとは何かを単純に言うと、成果物が期待通りであるかを検証する作業といえる。こう動作してほしいという期待を入力に、成果物がその通りに動作するかを検証するのがテストである。 となると、成果物とは何で、期待とは何かが問題になるのだけれど、これが一筋縄ではない。というのも、システムは十分に複雑なので、ある部分を複数の部分に分けることもできるし、その部分をより大きな部分のパーツにすぎないとみなすこともできるからだ。 だからといって、一番大きな単位でもって期待通りにあるかどうかを検証すれば済む話かというとそういうわけでもない。というのも、大きな単位には大きな単位なりの期待が、小さな単位には小さな単位なりの期待というものが存在するからだ。 システム開発は、ひとつのものさしではかることができない。システムをつかって業務を遂行できるかという検証と、その部品であるクラスの検証では、成果

    テストでは何をテストすべきか – recompile.net
    sh19910711
    sh19910711 2025/07/06
    2012 / "成果物が期待通りであるかを検証する / となると、成果物とは何で、期待とは何かが問題になるのだけれど、これが一筋縄ではない / システム開発は、ひとつのものさしではかることができない"
  • privateメソッドのテストって書かない方がいいんだっけ?

    PHPerKaigi 2024発表資料 https://fortee.jp/phperkaigi-2024/proposal/f23f927e-2ac8-498e-a047-6376831cbd07

    privateメソッドのテストって書かない方がいいんだっけ?
    sh19910711
    sh19910711 2025/07/05
    2024 / "privateメソッドのテストは近すぎてスタブ化してるテストは遠すぎる距離感がうまく掴めてないテストになってそう / 持続可能さを意識したテストコードを書く"
  • APIテスト自動化の勘所

    Presentation slides: タワーズ・クエスト、バルテス、Postman 共催セミナー - 開発失敗につながる偏ったテストしてませんか? プロが教える当に考えるべきテストバ…

    APIテスト自動化の勘所
    sh19910711
    sh19910711 2025/07/05
    2024 / "優先順位: 頻繁に変更される部分 + 手動テストが困難または時間がかかる / テストコードは仕様や対象システムの変化に応じて腐り始める + アップデートができない、捨てられない、新しい価値に集中できない"
  • Test Doubleを使うとテストの信頼性/保守性が下がるのか? - Fly me to the Luna

    最近はユニットテストを行うテストコードにおいて、Test Doubleを多用してます。Test DoubleとはMockとStubを合わせた総称です。Test Doubleを用いると、信頼性や保守性が下がると言われることがあります。しかし、それはTest Doubleの用法を誤っているためではないかと僕は思うのです。Test Doubleの用途はユニットテストのスコープをテスト対象のクラスに限定するために用いるべきものです。実感として、Test Doubleを使っているからと言って、ユニットテストの信頼性/保守性が下がったとはあまり感じていません。 良く誤解されていますが、Test Doubleはスローテスト問題を解決するための手段ではありません。Test Doubleをうまく利用すれば、結果的にスローテスト問題を解決できます。しかし、スローテスト問題を解決するための手段ではないのです。ス

    Test Doubleを使うとテストの信頼性/保守性が下がるのか? - Fly me to the Luna
    sh19910711
    sh19910711 2025/07/05
    2011 / "Test DoubleとはMockとStubを合わせた総称 / UIのテストをしているのに、DBやファイルのセットアップが必要だとすれば、そのテストはユニットテストとしてのスコープを越えてしまっています"
  • シフトレフトがなぜ効果的なのか「抽象度」から考える

    この記事は 株式会社ログラス Productチーム Advent Calendar 2023 18日目の記事です。 はじめに ログラスの龍島(@hryushm)です。 ソフトウェア開発において、「シフトレフト」すなわち開発の早い段階でテスト計画を立て、実施していくことが全体的なコスト削減や価値提供の早期化につながるとよく言われています。 この記事では、シフトレフトによってもたらされる効果をログラスでの実例を用いて紹介した上で、なぜ効果が出るのか?を「抽象度」というキーワードから紐解いてみようと思います。 記事ではスクラム開発においてPBIを完了させる中でシフトレフトしていくことを念頭に書いていきますが、ソフトウェア開発の任意のタイミングにおいて適用できる概念だと考えています。 テスト設計を実装前にやることの有用性 まずシフトレフトによって何が起こるのか?を考えます。PBIに書かれた受け入

    シフトレフトがなぜ効果的なのか「抽象度」から考える
    sh19910711
    sh19910711 2025/06/28
    2023 / "シフトレフト: 開発の早い段階でテスト計画を立て、実施していくことが全体的なコスト削減や価値提供の早期化につながる / テスト設計と実装の関係性を抽象度から紐解く"
  • 自動テストの信頼性を高めるミューテーションテストの活用に向けて

    2024/10/18 iOS Test Night #13の登壇資料

    自動テストの信頼性を高めるミューテーションテストの活用に向けて
    sh19910711
    sh19910711 2025/04/20
    2024 / "ミューテーションテスト: テストコードの十分さを測定するための手法 / プロダクトコードに変異を入れたときにそれをテストコードで検知できるかどうか"
  • KubernetesとGaugeを活用したTDD開発事例

    XP祭り2018の発表資料です。 発表した時の資料より文字を多くしてます。

    KubernetesとGaugeを活用したTDD開発事例
    sh19910711
    sh19910711 2024/10/14
    "E2Eテストとは自動テストとして実行可能なドキュメント / Gauge: Markdown形式で記述可能 + 並列実行のサポート / 「仕様を書く」という意識を高めないと良いE2Eにはならない" '18
  • Property based testing を試してみよう - Qiita

    Property based testingとは 歴史的な背景として2000年にJohn HughesとKoen Clasessenによって 開発されたQuickCheckがProperty based testingとしてHaskellエコシステムに実装されました。 QuickCheckはプロパティ(特定の入力が与えられると出力として期待される特性) を与えることで、 テストデータをランダムに生成して、失敗するケースを見つけるHaskellで実装されたフレームワークです。 それによってテスト対象のシステムがプロパティに従っているかどうかをチェックします。 QuickCheckは単体テストだけではなく、統合テストやサンプルベースのテスト等幅広く使われています。 このテスト方法はProperty based testingとして知られるようになりました。 2020年現在は、HaskellのQ

    Property based testing を試してみよう - Qiita
    sh19910711
    sh19910711 2024/10/14
    "QuickCheck: プロパティ(特定の入力が与えられると出力として期待される特性)を与えることでテストデータをランダムに生成して失敗するケースを見つける / このテスト方法はProperty based testingとして知られるように" '20
  • PO,SMに送るテスト自動化の8原則に5箇条を添えて / scrumniigata2023

    Scrum Fest Niigata 2023

    PO,SMに送るテスト自動化の8原則に5箇条を添えて / scrumniigata2023
    sh19910711
    sh19910711 2024/10/12
    "初回リリースはあえて手動テストをしよう / いきなりテスト自動化をしようとしても、予定通り進まず間に合わないことが多い" '23
  • テスト駆動開発入門

    テスト駆動開発(TDD)の入門です。 TDDBC Tokyo 2018の基調講演資料です。 (TDDBC当日の編集や、後日のフィードバックを反映しています。そのため基調講演時から一部変更されています。)

    テスト駆動開発入門
    sh19910711
    sh19910711 2024/10/12
    "テスト: 思った通りにできたか知りたい + 問題がないか知りたい + 目的にかなっているか知りたい / 小さなステップで進める + TODOリストを作る + ユーザーの視点から設計を考える" '18
  • Spring+DDDでのアプリケーションアーキテクチャとテスト戦略 - Qiita

    GxPのやすば(@nyasba) です。 記事はグロースエクスパートナーズアドベントカレンダー 2日目の記事です 弊社が得意とする継続的な開発のためには保守性が高いアプリケーションにしていく必要があり、今自分が関わっている案件では**DDD(ドメイン駆動設計)**を採用しています。 今日はJava/SpringプロジェクトでDDDを実践する際のアプリケーションのアーキテクチャ(レイヤ構造やパッケージ構成など)とテスト戦略についてまとめてみます。 ※会社としても採用実績はありますが、あくまで個人の思想に基づく内容です。 はじめに Springで開発している案件といっても、レイヤ構成やパッケージの切り方やそれに伴うテスト戦略は様々です。弊社内でも特に標準が定められているわけではありませんので、案件によって切り方が違うのが現状です。 パッケージの切り方自体はコードを見れば理解できるものですが、

    Spring+DDDでのアプリケーションアーキテクチャとテスト戦略 - Qiita
    sh19910711
    sh19910711 2024/06/17
    "パッケージの切り方自体はコードを見れば理解できる / 何をどこのパッケージで行うべきか、どのポイントでテストコードを書くべきかという 設計思想 をうまく伝えることが非常に難しい" 2021
  • テストの正常系、異常系、準正常系について - Qiita

    テストの正常系、異常系、準正常系について ソフトウェアテストは正常系、異常系、そして準正常系のケースをカバーすることが重要です。これにより、アプリケーションが予想どおりに動作し、エラーや問題に対処できるかどうかを確認できます。 1. 正常系テスト 正常系テストは、アプリケーションが正常な状態で正しく動作するかどうかを確認します。ユーザーが期待通りの操作を行う場合の挙動をテストします。例えば、ユーザーがログインし、メールを送信するなどです。 2. 異常系テスト 異常系テストは、アプリケーションが異常な状況に遭遇したときにどのように振る舞うかを確認します。ユーザーが誤った情報を提供したり、システムエラーが発生した場合のテストです。これにより、エラーメッセージが正しく表示され、セキュリティの問題やデータ損失を防ぎます。 3. 準正常系テスト 準正常系テストは、正常系と異常系の中間に位置します。一

    テストの正常系、異常系、準正常系について - Qiita
    sh19910711
    sh19910711 2024/06/16
    "正常系テスト: 主要な機能を確認 + 品質を保証 / 異常系テスト: セキュリティと信頼性を強化 + 準正常系テスト: ユーザーエクスペリエンスを向上 + ユーザーが必要事項を入力したがパスワードが弱い場合のテスト" 2023
  • 単体テストを簡単にするためのDI - Qiita

    ##はじめに まだエンジニアに成りたての頃、3年ほど継続で改修している案件で単体テストを書いたことがあります。 創業から継ぎ足し続けているタレのような案件(?)だったため、かなりつらみのある単体テストになり一時期はテスト嫌いになりました。 昔の私に限らず、テストに対して嫌なイメージを持っている方は多いような気がします。 しかし、何年かエンジニアをやっていて、実際には単体テストが悪いのではなく、Testableでないコードが悪いのだと思うようになりました。 ##単体テストの何がつらいって? それはモックアップとかテストデータの用意とかです。それですよ。 JMockitとか使ってモックを用意する。単純なメソッドなら簡単でもstaticとかprivateとかmember変数とか...そういった面倒なモックに心を削られるんです。 あとは、工夫を凝らしたテストデータをDBに流し込んで...、まだ完成

    単体テストを簡単にするためのDI - Qiita
    sh19910711
    sh19910711 2024/06/16
    "何年かエンジニアをやっていて、実際には単体テストが悪いのではなく、Testableでないコードが悪いのだと思うようになりました / モックしないといけない依存関係があっちこっちに散らばっていることがまず問題" 2019
  • xUnit Test Patternsから学ぶ12個のユニットテストの原則 - Qiita

    エントリは、xUnit Test Patterns: Refactoring Test Codeという書籍の「Chapter5 Principles of Test Automation」の内容をベースに、12個のユニットテスト原則についてまとめていきます。この書籍は、2007年に販売されたものですが、今でも十分役に立つユニットテストに関する原則を伝えています。 ウェブでは、次のURLでも内容を見ることができます。 自動ユニットテストの原則 ここで紹介されるものは、ユニットテストで確認したい quality のリストです。ですので、直接適用する「パターン」ではありません。 「何をやるか」よりも「なぜやるのか」という観点においてまとめられています。 エントリでは、xUnit Test Patterns: Refactoring Test Codeで紹介されている12個の原則をベースに、ほ

    xUnit Test Patternsから学ぶ12個のユニットテストの原則 - Qiita
    sh19910711
    sh19910711 2024/06/16
    "xUnit Test Patterns: Refactoring Test Codeという書籍の「Chapter5 Principles of Test Automation」の内容をベース / 2007年に販売されたものですが、今でも十分役に立つユニットテストに関する原則を伝えています" 2019
  • [golang] 言語仕様から見るunittestとClean Architectue - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    [golang] 言語仕様から見るunittestとClean Architectue - Qiita
    sh19910711
    sh19910711 2024/06/16
    "Java: どんなClassもそれを継承したClassを(無理やり)作る事ができる + コードの中の依存オブジェクトをモックに差し替える事ができる / 構造体ではなくインターフェースを通した参照にしなければならない" 2020
  • UnitTestを書く上で注意すべきこと - Qiita

    ※ 時折こぼけを挟んでおります。 UnitTestを書く上で注意すべきこと 誰に向けた記事か プログラミングは基的に行える(2~3年程の経験) まだアーキテクチャについては良く分かってない つまり私 モチベーション クリーンアーキテクチャ 238p から引用 テスト容易性のための設計 システムと強く結合したテストは、システムに合わせて変化する必要がある。システムコンポーネントに対する小さな変更であっても、結合した多くのシステムが壊れたり、変更が必要になったりする。中略。共通のシステムコンポーネントを変更すると、何百や何千というテストが壊れる可能性がある。これは、脆弱なテストの問題(Fragile Tests Problem)と呼ばれている。 脆弱なテストは、システムを硬直化させるという悪影響を及ぼす。システムを少し変更しただけで大量のテストが失敗するとなると、開発者は変更するのをためらう

    UnitTestを書く上で注意すべきこと - Qiita
    sh19910711
    sh19910711 2024/06/16
    "Fragile Tests Problem: この問題に対して テストAPI を作成するのが良い解決策だとクリーンアーキテクチャでは述べられ / プロダクトコードとテストコードの価値はイコールであること" 2021
  • Go でやる mutation testing ~テストの品質を評価しよう~ - Qiita

    Mutation testing とは テストの品質を評価する手法の一つ テスト対象のプログラムの一部を機械的に書き換えたときに、テストが失敗させられるかを確認する手法 大まかな流れは以下の通りです。 プログラムを一部改変 改変されたプログラムのことを "mutant" と呼びます 1.で改変した状態でテストを実施 テストが失敗するかどうかをチェック いずれかのテストが失敗するなら、 テストが十分であるとし、OKとします 全てのテストが成功するなら、テストが不十分であるとし、NGとします このプロセスをたくさん実行し、いろいろなプログラムの改変("mutant")を試してその結果のOKの割合が高いほうが質の高いテストであると判断します。1 テストが失敗する場合に、mutation testingとしてはOKとなります。ややこしいので、この記事では以下のように表現することとします。 テストが

    Go でやる mutation testing ~テストの品質を評価しよう~ - Qiita
    sh19910711
    sh19910711 2024/06/16
    "Mutation testing: テストの品質を評価する手法の一つ + テスト対象のプログラムの一部を機械的に書き換えたときに、テストが失敗させられるかを確認する / go-mutesting: Go の mutation testing が実施できます" 2022
  • テスト自動化の8原則について - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 個人で細々と書いていたブログ記事をQiitaに移行しております。 もしかしたら、既に読んだことがある人がいるかも知れないですね ここに書くのはあくまでも私自身の解釈であり、所属する組織などとは一切関係ございません。 *むしろ違っていたりしたら教えてほしいです。 詳しくは、テスト自動化研究会の記載されているページでご確認ください。 テスト自動化の8原則 - テスト自動化研究会 テスト自動化の8原則 1. 手動テストはなくならない 自動化が優れていても、人間でしか出来ないテストはもちろんある。 例えば、ユーザビリティテスト。 自動テストで不

    テスト自動化の8原則について - Qiita
    sh19910711
    sh19910711 2024/06/16
    "手動テストはなくならない / 自動にしても、メンテしてないとかだと意味ない気がします + テストシステムの開発は継続的におこなう / テスト結果分析という新たなタスク" 2020
  • BDDとユニットテストの流派 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 1. BDDとは BDD(ビヘイビアー駆動開発) はTDDを拡張した手法です。 1つのシナリオを書き、そのシナリオを満たすように実装を進めていきます。つまり、ユニットテストの範囲は単一クラスではなく、複数の依存関係にあるクラスも含みます。 基的にビジネスマン(非エンジニア)から見たとしても理解ができるテストであり、受け入れテストとも言われます。 詳細に言うと、受け入れテスト(ATDD)はユーザー寄りで、振る舞い駆動開発(BDD)は開発者寄りと見る人もいます。 どちらかというとUIテストに使われる傾向があり、「Given-When-Th

    BDDとユニットテストの流派 - Qiita
    sh19910711
    sh19910711 2024/06/16
    "BDD: シナリオを満たすように実装 + ユニットテストの範囲は単一クラスではなく、複数の依存関係にあるクラスも含みます / ロンドンスタイルでは、実装と結合するテストを作成する傾向" 2021
  • 半自動テスト状態にならないためのコツ - Qiita

    この記事はAutify Advent Calendar 2021の22日目の記事です。 自己紹介 株式会社レコチョクでQAを担当している清崎(きよさき)と申します。 社内では独立したQAチームが組織横断として存在しており、自社サービス、toB向け、toC向けと展開しているサービスに対して、ビジネスチーム/開発チームとQAチームが協力しながらテストを実施しております。 株式会社レコチョクの紹介 当社は2001年に国内の主要レコード会社の共同出資で設立され、おかげさまで2021年で20周年を迎えました。 2002年に着うた(R)のサービスを開始し、現在はPCAndroid/iOS、ゲーム機などの多様なデバイス向けにダウンロード配信やストリーミング配信を展開しております。 他にもtoB向けの事業に対しても積極的に行っており、タワーレコード社との協業提供にて定額音楽配信サービス「TOWER RE

    半自動テスト状態にならないためのコツ - Qiita
    sh19910711
    sh19910711 2024/06/16
    "「自動テストは書いたことしかテストしない」にある通り / 書かれていないことを暗黙的に自動テストで発見するという事ではありません / 繰り返し実施するものやパターン化できるものなどシンプルなことを意識" 2021