SlideShare ist ein Scribd-Unternehmen logo
1 von 9
SQL Server 単体テスト
フレームワーク tSQLt
の紹介。
@KatsuYuzu lightning talk宜しくお願い致します。 #clrh78
自己紹介
 Twitter:@KatsuYuzu
 Hatena:http://katsuyuzu.hatenablog.jp/
 仕事:札幌のSIerで3人体制の研究職チーム。
    RIAやスマートフォンアプリなど。
 開発:VB.NET、C#、Silverlight
 趣味:
    ゆず
        ゆずが好きと言ってくれる人は多いけど、ゆずっ子は中々居ない。
    ゲーム
        ポケモン, ファイアーエムブレム, ヴァルキリープロファイル,
         FFCC
    ウルティマオンライン
        9年くらい?プレイ時間は概算でも1万時間を余裕で超えた。1万5
         千も超えてそう。メンテタイムからメンテタイムまで1日20数時
         間プレイしていたことも(白目
tSQLtとは
 tSQLt とは SQL Serverにおける単体テスト用のオープン
  ソースフレームワーク。
 実体はSQL CLR。
 開発者はストアドプロシージャでテストコードを記述する。
 テーブルの差し替えと戻しをサポートしてるので、テスト
  データの投入もストアドでごりごり。
ALTER PROCEDURE
  AcceleratorTests.[test ready for experimentation if 2 particles]
AS
BEGIN
  --Assemble: Fake the Particle table to make sure
  --          it is empty and has no constraints
  EXEC tSQLt.FakeTable 'Accelerator.Particle';
  INSERT INTO Accelerator.Particle (Id) VALUES (1);
  INSERT INTO Accelerator.Particle (Id) VALUES (2);

  DECLARE @Ready BIT;

  --Act: Call the IsExperimentReady function
  SELECT @Ready = Accelerator.IsExperimentReady();

  --Assert: Check that 1 is returned from IsExperimentReady
  EXEC tSQLt.AssertEquals 1, @Ready;

END;
tSQLtとは
 tSQLt とは SQL Serverにおける単体テスト用のオープン
  ソースフレームワーク。
 実体はSQL CLR。
 開発者はストアドプロシージャでテストコードを記述する。
 テーブルの差し替えと戻しをサポートしてるので、テスト
  データの投入もストアドでごりごり。
 結果はメッセージとして出力される。
[AcceleratorTests].[test ready for experimentation if 2 particles] failed: Expected: <1> but was: <0>

+----------------------+
|Test Execution Summary|
+----------------------+

|No|Test Case Name                                                                                            |Result |
+--+----------------------------------------------------------------------------------------------------------+-------+
|1 |[AcceleratorTests].[test a particle is included only if it fits inside the boundaries of the rectangle]   |Success|
|2 |[AcceleratorTests].[test a particle within the rectangle is returned with an Id, Point Location and Value]|Success|
|3 |[AcceleratorTests].[test a particle within the rectangle is returned]                                     |Success|
|4 |[AcceleratorTests].[test email is not sent if we detected something other than higgs-boson]               |Success|
|5 |[AcceleratorTests].[test email is sent if we detected a higgs-boson]                                      |Success|
|6 |[AcceleratorTests].[test foreign key is not violated if Particle color is in Color table]                 |Success|
|7 |[AcceleratorTests].[test foreign key violated if Particle color is not in Color table]                    |Success|
|8 |[AcceleratorTests].[test no particles are in a rectangle when there are no particles in the table]        |Success|
|9 |[AcceleratorTests].[test status message includes the number of particles]                                 |Success|
|10|[AcceleratorTests].[test we are not ready for experimentation if there is only 1 particle]                |Success|
|11|[AcceleratorTests].[test ready for experimentation if 2 particles]                                        |Failure|
-------------------------------------------------------------------------------
Msg 50000, Level 16, State 10, Line 1
Test Case Summary: 11 test case(s) executed, 10 succeeded, 1 failed, 0 errored.
-------------------------------------------------------------------------------
tSQLtとは
 tSQLt とは SQL Serverにおける単体テスト用のオープン
  ソースフレームワーク。
 実体はSQL CLR。
 開発者はストアドプロシージャでテストコードを記述する。
 テーブルの差し替えと戻しをサポートしてるので、テスト
  データの投入もストアドでごりごり。
 結果はメッセージとして出力される。
 テーブルの比較もできる。
EXEC tSQLt.AssertEqualsTable 'expected', 'actual';


failed: unexpected/missing resultset rows!
|_m_|col1|col2|col3|
+---+----+----+----+
|< |2    |B   |b   |
|< |3    |C   |c   |
|= |1    |A   |a   |
|> |3    |X   |c   |
tSQLtとは
 tSQLt とは SQL Serverにおける単体テスト用のオープン
  ソースフレームワーク。
 実体はSQL CLR。
 開発者はストアドプロシージャでテストコードを記述する。
 テーブルの差し替えと戻しをサポートしてるので、テスト
  データの投入もストアドでごりごり。
 結果はメッセージとして出力される。
 テーブルの比較もできる。
 ストアドの肯定派・否定派の存在は宗教戦争になるので今
  は忘れましょう!
メリット、デメリット
 メリット
   DBファイルのコピーを行わず出来るので、テスト記述→テス
    ト実行のサイクルを短く出来る。
   MSTestとの連携も可能(ライブラリ作ってみた)
     出力をXMLにカスタマイズ可能。
     テストストアドを.NETから呼び出す。
     パースしてLINQで処理って解析。
     MSTestでアサート。
          連携によって更に手軽。継続的インテグレーションにも使える。
メリット、デメリット
 メリット
   DBファイルのコピーを行わず出来るので、テスト記述→テス
    ト実行のサイクルを短く出来る。
   MSTestとの連携も可能(ライブラリ作ってみた)
     出力をXMLにカスタマイズ可能。
     テストストアドを.NETから呼び出す。
     パースしてLINQで処理って解析。
     MSTestでアサート。
          連携によって更に手軽。継続的インテグレーションにも使える。

 デメリット
   SQL書きたくないよ?
まとめ
 tSQLt とは SQL Serverにおける単体テスト用のオープン
  ソースフレームワーク。
 ストアドプロシージャでテストコードを記述する。
 テーブルの差し替え、比較も可能。
 XML出力によってMSTestとも連携できる。


 Quick Start
    http://tsqlt.org/user-guide/quick-start/
    tSQLt自体がシンプルで、Webサイトのガイドもわかりやすい
     ので、SQL Serverの環境があれば10分程度で何となく色々わ
     かります。

Weitere ähnliche Inhalte

Ähnlich wie SQL Server 単体テストフレームワーク tSQLt の紹介 #clrh78

世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extensionToshi Harada
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extensionToshi Harada
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jpyoyamasaki
 
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-歩 柴田
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)Satoshi Yamada
 
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -歩 柴田
 
R's anti sparseness
R's anti sparsenessR's anti sparseness
R's anti sparsenessybenjo
 
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyoyoyamasaki
 
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15歩 柴田
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQLyoku0825
 
PostgreSQL13を検証してみた
PostgreSQL13を検証してみたPostgreSQL13を検証してみた
PostgreSQL13を検証してみたNaoya Takeuchi
 
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)Noriyoshi Shinoda
 
実行統計による実践的SQLチューニング
実行統計による実践的SQLチューニング実行統計による実践的SQLチューニング
実行統計による実践的SQLチューニング健一 三原
 
Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121Kosuke Kida
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫Insight Technology, Inc.
 
PostgreSQL 9.5 の新機能
PostgreSQL 9.5 の新機能PostgreSQL 9.5 の新機能
PostgreSQL 9.5 の新機能Shigetaka Yachi
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)Takuya Tsuchida
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編Miki Shimogai
 

Ähnlich wie SQL Server 単体テストフレームワーク tSQLt の紹介 #clrh78 (20)

世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jp
 
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
 
Rubykansai 81
Rubykansai 81Rubykansai 81
Rubykansai 81
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
 
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
 
R's anti sparseness
R's anti sparsenessR's anti sparseness
R's anti sparseness
 
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
 
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQL
 
PostgreSQL13を検証してみた
PostgreSQL13を検証してみたPostgreSQL13を検証してみた
PostgreSQL13を検証してみた
 
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
 
実行統計による実践的SQLチューニング
実行統計による実践的SQLチューニング実行統計による実践的SQLチューニング
実行統計による実践的SQLチューニング
 
Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
 
PostgreSQL 9.5 の新機能
PostgreSQL 9.5 の新機能PostgreSQL 9.5 の新機能
PostgreSQL 9.5 の新機能
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
 

Mehr von Katsuya Shimizu

20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazugKatsuya Shimizu
 
20180616 業務システムをAppServiceで運用しよう #きたあず #jazug
20180616 業務システムをAppServiceで運用しよう #きたあず #jazug20180616 業務システムをAppServiceで運用しよう #きたあず #jazug
20180616 業務システムをAppServiceで運用しよう #きたあず #jazugKatsuya Shimizu
 
ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99Katsuya Shimizu
 
.NETで始めるプログラミング
.NETで始めるプログラミング.NETで始めるプログラミング
.NETで始めるプログラミングKatsuya Shimizu
 
Azureからアプリに通知してみよう #jazug #win8dev_jp #wpdev_jp
Azureからアプリに通知してみよう #jazug #win8dev_jp #wpdev_jpAzureからアプリに通知してみよう #jazug #win8dev_jp #wpdev_jp
Azureからアプリに通知してみよう #jazug #win8dev_jp #wpdev_jpKatsuya Shimizu
 
クロスプラットフォーム開発雑感 #pronamaclrhsapporocpp
クロスプラットフォーム開発雑感 #pronamaclrhsapporocppクロスプラットフォーム開発雑感 #pronamaclrhsapporocpp
クロスプラットフォーム開発雑感 #pronamaclrhsapporocppKatsuya Shimizu
 
XAMLで作るWindows ストアアプリ #CLRH89
XAMLで作るWindows ストアアプリ #CLRH89XAMLで作るWindows ストアアプリ #CLRH89
XAMLで作るWindows ストアアプリ #CLRH89Katsuya Shimizu
 

Mehr von Katsuya Shimizu (7)

20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
 
20180616 業務システムをAppServiceで運用しよう #きたあず #jazug
20180616 業務システムをAppServiceで運用しよう #きたあず #jazug20180616 業務システムをAppServiceで運用しよう #きたあず #jazug
20180616 業務システムをAppServiceで運用しよう #きたあず #jazug
 
ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99
 
.NETで始めるプログラミング
.NETで始めるプログラミング.NETで始めるプログラミング
.NETで始めるプログラミング
 
Azureからアプリに通知してみよう #jazug #win8dev_jp #wpdev_jp
Azureからアプリに通知してみよう #jazug #win8dev_jp #wpdev_jpAzureからアプリに通知してみよう #jazug #win8dev_jp #wpdev_jp
Azureからアプリに通知してみよう #jazug #win8dev_jp #wpdev_jp
 
クロスプラットフォーム開発雑感 #pronamaclrhsapporocpp
クロスプラットフォーム開発雑感 #pronamaclrhsapporocppクロスプラットフォーム開発雑感 #pronamaclrhsapporocpp
クロスプラットフォーム開発雑感 #pronamaclrhsapporocpp
 
XAMLで作るWindows ストアアプリ #CLRH89
XAMLで作るWindows ストアアプリ #CLRH89XAMLで作るWindows ストアアプリ #CLRH89
XAMLで作るWindows ストアアプリ #CLRH89
 

Kürzlich hochgeladen

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Kürzlich hochgeladen (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

SQL Server 単体テストフレームワーク tSQLt の紹介 #clrh78

  • 1. SQL Server 単体テスト フレームワーク tSQLt の紹介。 @KatsuYuzu lightning talk宜しくお願い致します。 #clrh78
  • 2. 自己紹介  Twitter:@KatsuYuzu  Hatena:http://katsuyuzu.hatenablog.jp/  仕事:札幌のSIerで3人体制の研究職チーム。  RIAやスマートフォンアプリなど。  開発:VB.NET、C#、Silverlight  趣味:  ゆず  ゆずが好きと言ってくれる人は多いけど、ゆずっ子は中々居ない。  ゲーム  ポケモン, ファイアーエムブレム, ヴァルキリープロファイル, FFCC  ウルティマオンライン  9年くらい?プレイ時間は概算でも1万時間を余裕で超えた。1万5 千も超えてそう。メンテタイムからメンテタイムまで1日20数時 間プレイしていたことも(白目
  • 3. tSQLtとは  tSQLt とは SQL Serverにおける単体テスト用のオープン ソースフレームワーク。  実体はSQL CLR。  開発者はストアドプロシージャでテストコードを記述する。  テーブルの差し替えと戻しをサポートしてるので、テスト データの投入もストアドでごりごり。 ALTER PROCEDURE AcceleratorTests.[test ready for experimentation if 2 particles] AS BEGIN --Assemble: Fake the Particle table to make sure -- it is empty and has no constraints EXEC tSQLt.FakeTable 'Accelerator.Particle'; INSERT INTO Accelerator.Particle (Id) VALUES (1); INSERT INTO Accelerator.Particle (Id) VALUES (2); DECLARE @Ready BIT; --Act: Call the IsExperimentReady function SELECT @Ready = Accelerator.IsExperimentReady(); --Assert: Check that 1 is returned from IsExperimentReady EXEC tSQLt.AssertEquals 1, @Ready; END;
  • 4. tSQLtとは  tSQLt とは SQL Serverにおける単体テスト用のオープン ソースフレームワーク。  実体はSQL CLR。  開発者はストアドプロシージャでテストコードを記述する。  テーブルの差し替えと戻しをサポートしてるので、テスト データの投入もストアドでごりごり。  結果はメッセージとして出力される。 [AcceleratorTests].[test ready for experimentation if 2 particles] failed: Expected: <1> but was: <0> +----------------------+ |Test Execution Summary| +----------------------+ |No|Test Case Name |Result | +--+----------------------------------------------------------------------------------------------------------+-------+ |1 |[AcceleratorTests].[test a particle is included only if it fits inside the boundaries of the rectangle] |Success| |2 |[AcceleratorTests].[test a particle within the rectangle is returned with an Id, Point Location and Value]|Success| |3 |[AcceleratorTests].[test a particle within the rectangle is returned] |Success| |4 |[AcceleratorTests].[test email is not sent if we detected something other than higgs-boson] |Success| |5 |[AcceleratorTests].[test email is sent if we detected a higgs-boson] |Success| |6 |[AcceleratorTests].[test foreign key is not violated if Particle color is in Color table] |Success| |7 |[AcceleratorTests].[test foreign key violated if Particle color is not in Color table] |Success| |8 |[AcceleratorTests].[test no particles are in a rectangle when there are no particles in the table] |Success| |9 |[AcceleratorTests].[test status message includes the number of particles] |Success| |10|[AcceleratorTests].[test we are not ready for experimentation if there is only 1 particle] |Success| |11|[AcceleratorTests].[test ready for experimentation if 2 particles] |Failure| ------------------------------------------------------------------------------- Msg 50000, Level 16, State 10, Line 1 Test Case Summary: 11 test case(s) executed, 10 succeeded, 1 failed, 0 errored. -------------------------------------------------------------------------------
  • 5. tSQLtとは  tSQLt とは SQL Serverにおける単体テスト用のオープン ソースフレームワーク。  実体はSQL CLR。  開発者はストアドプロシージャでテストコードを記述する。  テーブルの差し替えと戻しをサポートしてるので、テスト データの投入もストアドでごりごり。  結果はメッセージとして出力される。  テーブルの比較もできる。 EXEC tSQLt.AssertEqualsTable 'expected', 'actual'; failed: unexpected/missing resultset rows! |_m_|col1|col2|col3| +---+----+----+----+ |< |2 |B |b | |< |3 |C |c | |= |1 |A |a | |> |3 |X |c |
  • 6. tSQLtとは  tSQLt とは SQL Serverにおける単体テスト用のオープン ソースフレームワーク。  実体はSQL CLR。  開発者はストアドプロシージャでテストコードを記述する。  テーブルの差し替えと戻しをサポートしてるので、テスト データの投入もストアドでごりごり。  結果はメッセージとして出力される。  テーブルの比較もできる。  ストアドの肯定派・否定派の存在は宗教戦争になるので今 は忘れましょう!
  • 7. メリット、デメリット  メリット  DBファイルのコピーを行わず出来るので、テスト記述→テス ト実行のサイクルを短く出来る。  MSTestとの連携も可能(ライブラリ作ってみた)  出力をXMLにカスタマイズ可能。  テストストアドを.NETから呼び出す。  パースしてLINQで処理って解析。  MSTestでアサート。  連携によって更に手軽。継続的インテグレーションにも使える。
  • 8. メリット、デメリット  メリット  DBファイルのコピーを行わず出来るので、テスト記述→テス ト実行のサイクルを短く出来る。  MSTestとの連携も可能(ライブラリ作ってみた)  出力をXMLにカスタマイズ可能。  テストストアドを.NETから呼び出す。  パースしてLINQで処理って解析。  MSTestでアサート。  連携によって更に手軽。継続的インテグレーションにも使える。  デメリット  SQL書きたくないよ?
  • 9. まとめ  tSQLt とは SQL Serverにおける単体テスト用のオープン ソースフレームワーク。  ストアドプロシージャでテストコードを記述する。  テーブルの差し替え、比較も可能。  XML出力によってMSTestとも連携できる。  Quick Start  http://tsqlt.org/user-guide/quick-start/  tSQLt自体がシンプルで、Webサイトのガイドもわかりやすい ので、SQL Serverの環境があれば10分程度で何となく色々わ かります。