SlideShare a Scribd company logo

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

1 of 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。
 開発者はストアドプロシージャでテストコードを記述する。
 テーブルの差し替えと戻しをサポートしてるので、テスト
  データの投入もストアドでごりごり。
 結果はメッセージとして出力される。
 テーブルの比較もできる。
 ストアドの肯定派・否定派の存在は宗教戦争になるので今
  は忘れましょう!

Recommended

Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析政雄 金森
 
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitタダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitYasuhiko Yamamoto
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストYohei Sato
 
generate_series関数使い込み
generate_series関数使い込みgenerate_series関数使い込み
generate_series関数使い込みkawarasho
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)yoyamasaki
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話Hisateru Tanaka
 

More Related Content

Similar to 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
 

Similar to 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チューニング入門 入門編
 

More from 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
 

More from 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
 

Recently uploaded

解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHub解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHubK Kinzal
 
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdfAyachika Kitazaki
 
00001_test_automation_portfolio_20240227
00001_test_automation_portfolio_2024022700001_test_automation_portfolio_20240227
00001_test_automation_portfolio_20240227ssuserf8ea02
 
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)Kanta Sasaki
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
scikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみんscikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみんtoshinori622
 
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdfHarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdfMatsushita Laboratory
 
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (8)

解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHub解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHub
 
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
 
00001_test_automation_portfolio_20240227
00001_test_automation_portfolio_2024022700001_test_automation_portfolio_20240227
00001_test_automation_portfolio_20240227
 
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
scikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみんscikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみん
 
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdfHarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
 
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
 

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分程度で何となく色々わ かります。