はじめに この記事はシェルスクリプト&PowerShell Advent Calendar 2024の12日目として書かれています。 概要 BatsはBash用のテストフレームワークです。 何らかのプログラミング言語で書くまででもない簡単なスクリプトを書こうと思った際に、とはいえテストが欲しいと思って見つけたのがBatsでした。 今回は簡単なBatsのテストコードの紹介をします。 書いたコードはここに置いています。 今回使用したbatsコマンドはHomebrewで入れており、バージョンは1.11.0です。 シンプルなテストコード Batsのテストコードはシェルスクリプトとは別のファイルに書き、batsコマンドでそのファイルを実行することでテストを実行できます。 テストケースは@test "test case name" のように書けます。 #!/usr/bin/env bats @test
このブログエントリでは、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent BeckがTDDの定義を改めて明確化した文章を、許可を得たうえで翻訳し、訳者の考察を沿えています。 きっかけ 2023年の年末、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent Beckは、substackにTDDに関するポストを連投して論戦を繰り広げていました。TDDはその誕生から20年以上が経ち、その間に「意味の希薄化」が発生して議論が噛み合わなくなっていました。意味の希薄化(Semantic Diffusion)とは、新しく作り出された用語が広まる際に本来の意味や定義が弱まって伝わる現象です。 私(和田)はTDDと関わりの深いキャリアを歩んできました。Kent Beckの著書『テスト駆動開発』の翻訳者であることもあり、TDDの正
保守しやすく変化に強いソフトウェアを支える柱 自動テストとテスト駆動開発、その全体像 ~Software Design 2022年3月号「そろそろはじめるテスト駆動開発」より 今回、Software Design 2022年3月号 第2特集「そろそろはじめるテスト駆動開発 JavaScriptでテストファーストに挑戦」の第1章「保守しやすく変化に強いソフトウェアを支える柱 自動テストとテスト駆動開発、その全体像」を本サイトに掲載します。第2章以降については、本誌『Software Design 2022年3月号』電子版(Gihyo Digital Publishing、Amazon Kindle)をご購読いただければ幸いです。 第1章では、混同されることの多い自動テスト関係の概念を、自動テスト、テストファースト、テスト駆動開発の3つの段階に分け、それぞれの効果や注意点を説明します。ソフ
JUnit 5.8.1 Java 17.0.1 IntelliJ IDEA 2021.2.3 JUnit5での @MethodSource のおさらい JUnit5にはパラメタライズドテスト用の @ParameterizedTest があり、様々な方法でパラメーターを与えられます。 その中でもパラメーターにある程度柔軟性が欲しい場合によく使うのが @MethodSource で、テストメソッドのパラメーターを生成できます。 import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.a
駅メモチームでエンジニアをしている id:Eadaeda です。シバンは #!/usr/bin/envを使う派です。 皆さんはシェルスクリプト書いてますか? 環境構築、開発、テスト、ビルド、デプロイなどなど、一連の作業を自動化するための手段として時々出番があるんじゃないでしょうか。 ところでそのシェルスクリプト、テスト書いてますか? シェルスクリプトのテスト 「シェルスクリプトのテスト〜?」って感じですよね。殆どの場合、一度書いてしまえばあんまり壊れることはないし別に…って感じですよね。わかります。実際開発環境のためにdocker compose upするだけのスクリプトなら雑でもいいですよね。 でも、重要な役割をもつスクリプトならどうでしょう。例えばアプリケーションのエントリーポイントや、リリースビルド・デプロイのためのスクリプトなどが思いつきます。 こういうのはテストである程度保証され
目次 目次 はじめに(本記事の見どころなど) テストについて話し合わなくてはならない テストの目的 「うまくいかないかもしれないものは何ですか?」 なぜテストをするのですか? この場合に限り…… テスト駆動開発 〜テストについて語る前に説明が必要です〜 テストについて話しましょう なぜすべてのテストを自動化しないの? テストカバレッジは有用な指標ですか? 「テストをシフトレフトする」とはどういう意味ですか? いつ、どこでテストすべきですか? 十分なテストとはどれくらいですか? おわりに はじめに(本記事の見どころなど) 今回は著者本人の許可をもらった上で、「テストについて話し合わなくてはならない」(原題は「We need to talk about testing」)を翻訳したので紹介します。 dannorth.net 本記事はDaniel Terhorst-North(Dan North
こんにちは、今回からコラムを書かせていただく和田(t_wada)と申します。 現代のソフトウェア開発の対象領域は、広く複雑で不確実なものになりました。この連載では、自動テスト(Automated Test)に関わるトピックを中心に、ソフトウェア開発の荒野を生き抜いていくためのプログラミングやソフトウェアエンジニアリングの考え方を書いていきたいと考えています。 初回のテーマは、学習や調査が目的のテストコードを書くテクニック「学習用テスト」(Learning Test)です。では、よろしくお願いします。 二兎を追わない プログラミングのコツに、「一度に2つ以上のものを相手にしないこと」があります。 未知の技術を使って問題を解決するコードを書こうとするとき、私たちは2つのものと同時に戦うことになります。未知の技術そのものと、その技術を使った問題解決の2つです。2つ以上のものを同時に取り扱おう
世界中のITエンジニアが悩まされている原因不明でテストが失敗する「フレイキーテスト」問題。対策の最新動向をJenkins作者の川口氏が解説(前編)。DevOps Days Tokyo 2022 世界中のITエンジニアが悩まされている問題の1つに、テストが原因不明で失敗する、いわゆる「フレイキーテスト」があります。 フレイキーテストは、リトライすると成功することもあるし、失敗する原因を調べようとしてもなかなか分かりません。GoogleやFacebookやGitHub、Spotifyといった先進的な企業でさえもフレイキーテストには悩まされています。 このフレイキーテストにどう立ち向かうべきなのか、Jenkinsの作者として知られる川口耕介氏がその最新動向を伝えるセッション「Flaky test対策の最新動向」を、4月21日、22日の2日間行われたイベント「DevOps Days Tokyo 2
この記事では、変更に強いテストケースの書き方について自分なりに考えてみようと思います。 きっかけはデザインパターン きっかけとなったのはこの本です。めちゃくちゃ面白い上にわかりやすいので、とってもおすすめです。 booth.pm この本がとても面白くて、デザインパターンに興味を持ったのですが、そもそもデザインパターンはソースコードの保守性を高めるために作られたもの(多分)ということを知りました。 そして私は、それをソフトウェアテストにおいても活かせるのではないか?と考えました。 ※デザインパターンについては学習中なので、誤りを含む可能性があります。あらかじめご了承ください。詳しく知りたい方はQiitaのブログなどを参照ください。 活かせそうだと思ったデザインパターン observer pattern このパターンは、「オブジェクトが追加されたり削除されたときに、別のオブジェクトに何らかの通
はじめに このエントリは、ソフトウェアテスト #2 Advent Calendarの6目の記事として書いています。 qiita.com モチベーション:JaSST'18 Tokyo 振り返り JaSST' 18 Tokyo のクロージングパネルでは、実は当初予定していたモノから内容を少し変更してお届けした[1]。GoogleのJohn Miccoさんによる基調講演の際に、Googleのような「アジャイルの導入も100%のテストの自動化も、もう当たり前」という考えと、JaSSTの参加者の多くの「アジャイルの導入もテストの自動化も道半ば、もしくはこれから検討する」との現実の間に、大きなギャップを感じたからだ。 このブログエントリでは「アジャイルやテスト自動化は当たり前」と考えている人たちが、次の自動化としてどのようなことを考えているのか、なぜアジャイルやテスト自動化はもう当たり前なのかについて
UIテストの所要時間を10分の1にする試み、Raspberry Piのクラスタで並列実行。ソフトウェア品質シンポジウム2018 開発現場の多くでテストの自動化が進む中で、テスト時間を短縮することはビルドとテストの待ち時間を減らし、開発効率を高める上で重要なポイントになってきています。 そうしたなかで時間がかかっていたUIテストの所要時間を短縮する手段としてRaspberry Piをクラスタ化する手法を紹介するのが、レバテック株式会社 折田武己氏です。 本記事では、9月12日から14日のあいだ東洋大学で開催された「ソフトウェア品質シンポジウム」(日本科学技術連盟主催)での折田氏のセッション「UIテストの所要時間を10分の1に短縮する取り組み~ラズベリーパイのクラスターで並列実行~」の内容をダイジェストで紹介します。 単体テストはさくさく終わるのにUIテストは時間がかかる レバテック株式会社
Web技術の標準を策定するWorld Wide Web Consortium(W3C)のBrowser Testing and Toolsワーキンググループは、「WebDriver」が6月5日付けで勧告に到達したことを発表しました。 WebDriverは、Webブラウザを外部から操作することを可能にし、Webアプリケーションのテストなどの自動化を実現する技術です。 主要なWebブラウザにはすでにこのWebDriverの機能が用意されています。Seleniumに代表されるWebブラウザ自動化ライブラリを利用することで、WebDriverを用いてWebアプリケーションのUIテストなどを自動化することが可能です。 SeleniumからW3Cへ もともとWebブラウザには外部から操作を行うAPIなどはなく、WebページやWebアプリケーションをWebブラウザで表示した際に画面が正常に表示されている
こんにちは、しんどーです。 気づいたら入社8ヶ月くらい経ってました。 さて、待望のJUnit 5のGA版が今年9月にリリースされました! この記事ではJUnit 5の概要と新機能の一部をご紹介したいと思います。 全部User Guideに書いてあるとか言わない JUnit 5とは JUnitとは、言わずと知れたJavaのテスティングフレームワークであり、 デファクトスタンダードの地位にあります。ですが現行のJUnit 4系の最初の メジャーバージョンリリースはすでに10年ほど前であり、保守性の低下が問題に なっていました。 そこでJUnitの刷新を目指すべく、JUnit 5プロジェクトが立ち上げられました。 Junit 5の特徴を簡単に述べると、 API・アーキテクチャの全面的再設計 マルチモジュール構成 Java 8のラムダ式を利用したAPI といったことが挙げられます。 JUnit 5
Spring Bootのテストについて書く。 spring-boot-starter-testを使用するとコントローラのJUnitテストも可能になる。 テストやコードインスペクションレポートのMaven設定は以下を参照。 blog.pepese.com テスト対象アプリ 以下の記事で紹介した入門アプリをテスト対象とする。 blog.pepese.com テストの作成 以下を作成する。 com.pepese.sample.service.HelloServiceTest コントローラへDIされるサービスクラスのテスト com.pepese.sample.controller.HelloControllerTest コントローラのテスト サービスのテスト(com.pepese.sample.service.HelloServiceTest) ポイントは以下。 @RunWith(SpringRu
マイクロソフト、AIでソフトウェアのバグや脆弱性を探る「Microsoft Security Risk Detection」を発表 バグや脆弱性を発見する有名な手法のひとつに「Fuzzing Test」があります。Fuzzing Testとは、検査対象のソフトウェアに問題を引き起こしそうなデータ(これが「Fuzz」と呼ばれる)を大量に送り込み、その応答や挙動を監視する、というものです。 これまでFuzzing Testは一般にセキュリティテストの専門家などがテストデータを作成し、実行し、その挙動を監視する作業を行ってきました。また、すでに一部のリスク検出サービスではこうした作業にAIの利用も始まっているとのこと。 Microsoft Security Risk Detectionは、AIを使ってこうした作業を自動化し、クラウドによって大量に実行すると、マイクロソフトリサーチのDavid M
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く