Zennの「Test」のフィード
フィード

品質とは何か?を考えたときの品質エンジニアという仕事
Zennの「Test」のフィード
「品質とは何か?」社内のQAエンジニアを担当している方からの問われたときに、素直に「何だろう」となった。「バグがないこと」「テスト密度が基準値内であること」「ユーザの期待値を満たすこと」みたいな答えがパパっと浮かんできたが、どうやらそれは本質ではない。現在、ソフトウェア品質エンジニア(QAエンジニア)という職能は、コードを書かない開発者として進化を遂げつつある。本記事では、品質の概念整理から、QAという専門職の本質、そしてキャリアとしての価値までを横断的に言語化する。 ✔ 品質とは「成果の保証」である従来、品質とは「要件を満たしているかどうか」を指していた。しか...
1日前

AI が生成する大量の Python コードの品質を管理するための pyproject.toml 設定
Zennの「Test」のフィード
AI が生成する大量のコードをレビューできますか?チームで Python の開発を行うとき、ChatGPT などで作られたコードをレビューすることになることも増えてきました生成 AI によってコードは大量生産することが可能になりましたが、レビューのプロセスでその大量のコードをチェックすることができる体制は整っていますでしょうか?レビューにも AI を使う手法もありますが、次の問題があります:料金ハルシネーション による誤検知やバグの見逃しAI を使う前に、まずはアルゴリズムによるレビューの自動化を行うことが重要です 全体的な方針 最低でも Ruff は使い...
1日前

Reactテスト入門(Jest, React Testing Library,MSW)
Zennの「Test」のフィード
はじめに普段はReact.jsやNext.jsを使用していますが、テストを書いたことがなかったので自分の為の忘備録、はじめてReactでテストを書く方のためになればと思い本記事を書かせていただきました。 テストとはアプリケーションの動作を検証するものであり、品質や信頼性を高めるために行います。テストには大きく分けてStatic test,Unit test,Integration test,E2E testがあります。下記の下に行けば行くほど実装コストが高くなり、信頼性が高くなります。Static test(静的テスト)コードを実行せずにするテストのことです。以下の...
1日前

【Flutter】Interceptorを丁寧にテストするためのベストプラクティス
Zennの「Test」のフィード
はじめにdioのinterceptorの実装方法については、以前こちらの記事で解説しました。https://zenn.dev/harx/articles/6460e36ea3f6f2一方で、 Interceptor のテストを行うには少々工夫が必要です。この記事では、実践的なテスト手法とその背景にある考え方を具体的に紹介します。「どこまでテストすべきか」「何をどうモックすべきか」といった疑問を持った方の助けになれば幸いです。 記事の対象者Flutter で Dio を使ってネットワーク層を構築している方自作の Interceptor をしっかりテストしたい方d...
2日前

ローカルでsupabaseテスト環境を分離する
Zennの「Test」のフィード
はじめに本記事では、ローカル開発時にSupabaseのテスト環境を開発環境と分離する方法について解説します。テストの信頼性向上やデータ汚染防止のため、テスト専用のSupabaseインスタンスを用意する方法や、実際の構築手順、運用上の注意点をまとめます。 前提条件この記事では、ローカル開発環境にSupabase CLIがインストールされており、supabase コマンドを使用してローカル環境のSupabaseを管理していることを前提としています。Supabase CLIを使用すると、以下のような利点がありますローカル環境でSupabaseプロジェクトを構築可能マイグレー...
3日前

自分で作ったプログラムを自分でテストするって合ってるの?
Zennの「Test」のフィード
自分で作ったプログラムを自分でテストすることは、ソフトウェア開発の現場でも一般的であり、むしろ推奨されるプロセスです。主な理由は以下の通りです:単体テストは開発者自身が行うべきプログラムのテストには「単体テスト」「結合テスト」「総合テスト」などがありますが、このうち単体テスト(自分が書いたコードが仕様通りに動くかの確認)は、開発者自身が行うのが基本です。自分の実装の正しさを保証できる自分でテストすることで、実装が仕様通りに動作しているかを確認でき、バグやミスを早期に発見できます。テストコードの自動化で品質向上・効率化テストコードを書くことで、動作確認の自動化や将...
4日前

Playwright で Clerk をテストするガイド【Next.js】
Zennの「Test」のフィード
はじめに先日、Next.js の勉強会で、Clerk による認証サービスの活用を取り上げました 🔐認証は、Web アプリケーション開発において、特に重要な要素の一つでありながら、テストが複雑な部分でもあります。とはいえ、複数のページにまたがる認証フローは、手動テストだけでは不十分になりがちです。今回は、Clerk の認証機能を Playwright でテストする方法について調査したので、基礎的な内容をまとめました!時間の節約になれば、嬉しいです 🙌 Clerk とは?https://zenn.dev/b13o/articles/tutorial-clerkもし、C...
5日前

2025年最新!初心者QAエンジニアが選ぶ自動化テストツール10選
Zennの「Test」のフィード
はじめにこんにちは!kaitoです。正直、テストって最初は「ひたすらポチポチする作業でしょ?」って思ってたんですよ。でも、プロジェクトが進むにつれて、手動テストの限界を痛感しまして...。特に、ちょっとコードを修正するたびに、何十、何百ものテストケースを全部手で確認するなんて、もう無理!時間もかかるし、ミスも出るし、何より心が折れそうになるんです(笑)。そんな時に出会ったのが、「自動化テストツール」でした。最初は「難しそう...」ってビビってたんですけど、実際に使ってみたら、これがもう革命的で!一度設定すれば、あとはツールが勝手にテストしてくれるんですから。おかげで、テストにか...
5日前

モデルは磨く。レビューは学び合い。
Zennの「Test」のフィード
モデルをレビューするということレビューの場面では、つい細部に目を凝らしてしまうことがあります。テストケースであれコードであれ、「あれも、これも」とパターンや分岐を一つずつ確認していくうちに、気づけばレビュワー自身が設計をやり直しているような状態に陥る──これは多くの人にとって馴染みのある経験ではないでしょうか。私自身、テストケースや探索的テストのチャーターをレビューする際、意図せず細部に立ち入りすぎてしまったことが何度もあります。その結果、レビューに非常に時間がかかるだけでなく、深いドメイン知識や仕様の理解が求められるため、他チームや新人が入り込みづらくなるという課題も感じてい...
7日前

テストコード内のコメントに絵文字を使うとちょっと見やすい✅️
Zennの「Test」のフィード
小ネタです。ちょっと複雑なテストの挙動を説明するために、コメントをつけることがあると思います。そのコメント内に絵文字をつけるとちょっと見やすい、という話です。こちらが絵文字なし。import { UserService } from 'path/to/service'import { createMockUser } from 'path/to/testUtils'describe("UserService", () => { it("getSomeone", () => { // 論理削除されているので無視される crea...
8日前

Webアプリの期待結果をHTTPレスポンスステータスコードで考える
Zennの「Test」のフィード
テストケースの分類というと「正常系」「準正常系」「異常系」といったものがあると思いますが、私は細かい機能のテストにおいてはこれらの言葉はあまり使わずにHTTPのレスポンスステータスコードで結果を分類してテストケースを考えることが多いです。利点としては、HTTPレスポンスステータスコードは定義がはっきりしており 「何をもって"正常系"とするか?」といった解釈の食い違いが発生しないことが挙げられます。 有名どころのHTTPレスポンスステータスコードご存知の方も多いとは思いますが、主にWebアプリケーションを開発する上で比較的登場頻度の高いHTTPレスポンスステータスコードを挙げます。...
8日前

jest で test 間でオブジェクトを共有する
Zennの「Test」のフィード
jest で global-setup をいい感じに使って backend にアクセスするための client を複数の .test ファイルで共有するjestで、テストのファイルを複数に分割してシナリオを記述したい。その際、beforeAll() などで全てのファイルで同じようなオブジェクト(例えば、ネットワークリクエストを行うクライアントなど)初期化をしている。そんな経験はないでしょうか。私は以下の方法によってそれを解決しました。まず、テストが子ワーカープロセスを生成して並列実行されないようにします。 "scripts": { "test:in-b...
8日前

【新人向け】テストリストを最初に作成してレビューしてもらおう
Zennの「Test」のフィード
私は実務歴約1年の新人エンジニアです.1年ほど経つと,規模の大きい開発タスクを任されるようになってくるかと思います.本記事では,中規模以上の開発タスクを進めていく中で,「最初にテストリストの作成とレビューをしてもらったら開発がスムーズに進んだ」という体験談をまとめました. 対象読者実務経験1年未満〜3年程度開発の手戻りを防ぎたい相談する際のコミュニケーションコストを削減したい 最初にテストリストの作成とレビューをする 設定説明を簡単にするため,ECサイトの機能全般の開発を任されたと仮定しましょう.主な機能は以下とします.商品一覧機能商品追加機能商品編...
9日前

『テストの7つの原則』 〜 パート① 〜
Zennの「Test」のフィード
はじめに現在、アプリ開発者としてプロダクトの持続的な成長やユーザーへのコミットに寄与するためにも、SDLC全体を見渡して開発をすること、および、それにはテストに関する体系的な知識が必要だと考え、それを効率良く学べるJSTQB Foundation Levelの資格試験の勉強をしており、そこでのインプットを記事にしたいと思います。今回はその中でも「テストの7つの原則」の一部について記事にしたいと思います。なお今回記事は テストは欠陥があることは示せるが、欠陥がないことは示せないこちらの原則について記事にしてみようと思います。 テストは欠陥があることは示せ...
10日前

ソフトウェアテストの代表的な手法とテスト工程まとめ
Zennの「Test」のフィード
ソフトウェアテストの代表的な手法とテスト工程まとめソフトウェア開発において「テスト」は、品質を確保しバグを防ぐために欠かせない工程です。本記事では、よく使われるテスト手法とテスト工程の違い・特徴を、初心者にも分かりやすく整理します。 📝 主要用語の簡単な説明テスト手法テストをどのような観点や方法で行うか(例:ホワイトボックステスト、ブラックボックステストなど)テスト工程開発のどの段階・粒度でテストを行うか(例:単体テスト、結合テスト、システムテスト) 🛠 テスト工程の概要 テスト工程の流れ🟦 単体テスト(ユニットテスト)小さい単位(...
10日前

Angularのspecファイルを再生成するSTEP BY STEP
Zennの「Test」のフィード
Angularでは、 ng コマンドで作成したコンポーネントやサービス、Pipeには(特に設定しない限り)テスト設定用にspecファイルが自動生成されます。 ただ、長くランニングしてるプロジェクトだと、テストが通らないというのはまぁいいとはして、無理やり通すためにspecファイルを削除してしまっているというのがあったりなかったり。私が持ってる昔からのプロジェクトでもあったりなかったり。生成AIで初期ファイルは自動生成したいと思ったので、再生成するためのガイドラインを(主に私が生成AIに情報を食わせるために)まとめておきます。 STEP BY STEP 1. specファイルがな...
13日前

Flutter開発中でのSQFLite(ローカルDB)のテスト方法
Zennの「Test」のフィード
私は、Flutterにおけるローカルデータの保存には、SQFLiteパッケージを使用してデータベース操作を行う場合が殆どです。https://pub.dev/packages/sqfliteクエリの実行内容や、トランザクション処理に変更を加えた時などに、いちいち実機を立ち上げてテストするのは非常に面倒ですので、一括でテストが回せたら非常に便利です。私の備忘録として残しておきます。 サンプルコードテストには、sqfliteに加えて以下のパッケージが必要ですので、インストールしてください。https://pub.dev/packages/sqflite_common_ffi...
13日前

テストのカバレッジを楽して増やす検討
Zennの「Test」のフィード
カバレッジを増やすにはテストを増やすのが一般的でしょうか。テストを増やさずにカバレッジを増やせないか検討してみました。(既にこのような考えがあれば、すでにあるよ!って言ってください)今回考えた事:コードにちょっとした仕掛けを入れて、if文の分岐を無理やり曲げて、C0カバレッジの%を増やしたい。 同じ実行だけど違う分岐ができないかC++のコード、1~9までを全部通したい#include <stdio.h>/* ここに仕掛けを入れる予定 */int func(int i){ printf("func %d passed\n",i); return ...
14日前

Str::uuid()をモックする(固定値を返すようにする)
Zennの「Test」のフィード
結論モックは難しいので以下で対応するStr::createUuidsUsing(function () { return Uuid::fromString('eadbfeac-5258-45c2-bab7-ccb9b5ef74f9');});引用元: https://readouble.com/laravel/11.x/ja/strings.html
15日前