SlideShare a Scribd company logo
Akka for Reactive Programming
- Akka Unit Testing
Masashi Kawaguchi / Jangsa Cho
メニュー
1. Unit Testing
a. Unit Testingとは
b. Scalaのテストフレームワーク
2. ScalaTest
a. テスト表記スタイル
b. テストケースへのタグ付け
c. fixture
d. テストケースの共有
3. Akka TestKit
Unit Testing=単体テストとは
モジュール単位、あるいは複数モジュールを組み合わせて出来ているモジュール単位
毎に対して行われるテスト。
ある値を入力したときに期待された値と、実際に返された値を、ひとつひとつチェックして
いく作業のこと。
補足:モジュール単位(1)
以下はモジュール単位のテストと呼べる。
def capitalizeFirst(str: String): String = str.head.toUpper + str.tail
capitalizeFirst(“hoge”) should equal (“Hoge”)
補足:モジュール単位(2)
以下はモジュール単位ではない。
def capitalizeFirst(str: String): String = str.head.toUpper + str.tail
def decorate(strs: List[String]): String = strs.mkString(“--->”, “&”, “<---”)
decorate(List(capitalizeFirst(“hoge”))) should equal (“--->Hoge<---”)
// capitalizeFirstとdecorateは別々に検証されるべき
Unit Testingのテストコード
単体テストコード……モジュールの呼び出し、期待値・実返り値の突き合わせの寄せ集め
……をバリバリ定義し、それを動作検証の拠り所にしながらゴリゴリ開発
メリット
1. 早期の問題検出
2. コードの変更を促進
3. 単体レベルでの正常動作の証明(e.g. 結合レベルのテストの下ごしらえ)
4. ライブラリ使用方法のマニュアル代わり
5. 設計方針の導出(※テストファーストの場合)
Scalaの有名ドコロのテストフレームワーク
● ScalaTest
● Specs2
● ScalaCheck
● JUnit (Java)
● TestNG (Java)
Playをはじめ、ScalaTestが標準になりつつある。
ScalaTest
特徴
● 多彩な表記方法/DSL
● テストケースに対するタグ付け
● fixtureによるテスト下準備の共通化
● Sharing Testsによるテスト項目のパターン化
● Selenium/Mockingフレームワーク利用のシンタックスシュガー
テストの表記スタイル
二種類に大別される
1. Spec(s)系
2. JUnit系
http://goo.gl/x7n8Uh
テストコード用DSL
● Matchersをミックスインすることで利用できる多彩な等価演算子/Assert
○ Array(1, 2) == Array(1, 2)はfalse
○ Array(1, 2) should equal(Array(1, 2))はtrue
○ “hoogge” should startWith regex (“h(o*)”)
○
○ val a = 1; a should be < 2; a should be >= 0
○
○ val file = new File(“./hoge.txt”); file should be a ‘file
○ val file = new File(“./dir”); file should be a ‘directory
○ ...
テストケースのタグ付け
● 主なメリットは、テストケースを色分けして実行することができること
● ”org.scalatest.tagobjects”に標準で用意されているタグが実装されている
○ Slow(時間のかかるテスト)
○ Network(ネットワークトラフィックが重いテスト)
○ ChromeBrowser、FirefoxBrowser、InternetExplorer(ブラウザ別のテスト@ Selenium)
○ などなど
● 独自タグも実装可能
タグの付け方 - FlatSpec
"This browser" must "is able to hold 100 or more tabs" taggedAs(Slow) in {
(1 to 100).foreach.browser.openNewTab
}
it must "download patches over HTTP correctly" taggedAs(Slow, Network) in {
val file = browser.download(“http://…”)
file.md5sum should equal “.....”
}
fixture
● 複数のテストで共通して利用される値の格納庫
● ScalaTestのテストコードの典型的な設計
例
class Example extends FlatSpec {
def fixture = new { val something = new Something }
“Something” should “be successful” in {
import fixture._
something.value should equal “something”
}
loan fixture
● 名前の通りロジックはloanパターンのそれ
● 受け取ったテストシナリオ関数に、同じデータを引き渡す仕組み
● =異なるテストケースに同じデータ(fixture)を引き渡すことができる
loan fixtureのコード例1
object TypicalData { def establish: DataType = ??? }
class Example extends FlatSpec {
def withTypicalData(testScenario: DataType => Any): Unit = {
val data = TypicalData.establish
testScenario(data)
}
}
loan fixtureのコード例2
“The data” should “contain lines, all of which start with ‘hoge’” in withTypicalData {
data =>
data.lines.foreach(_ should startWith regex “hoge.*”)
}
withFixture
● loanFixture同様、テストケースを引数に受け取る
● テストケース実行前に必ず呼び出される
● つまりFlatSpecを継承(ミックスイン)している自前のテストクラスでwithFixtureを
overrideし、中身にテストの定型部分を記載することができる!
NoArgTest版はテストケースに引数を渡すことができない = 副作用を起こす専門の
ようだ
テストデータに引数を渡したい場合は、OneArgTest版を使う
withFixtureのコード例1
trait Example1 extends FlatSpec {
override def withFixture(test: NoArgTest) = {
setupForExample1
super.withFixture(test) match { // superで親のwithFixtureを呼ぶ=スタック呼出!
case failed: Failed => failed
case other => other
}
withFixtureのコード例2
trait Example2 extends FlatSpec {
override def withFixture(test: NoArgTest) = {
setupForExample2
super.withFixture(test) match {
case failed: Failed => failed
case other => other
}
withFixtureのコード例3(完結)
class Example extends Example1 with Example2 with {
override def withFixture(test: NoArgTest) = {
super.withFixture(test) match {...}
}
“All stacked fixtures” should “be called!” in { … }
}
withFixture + loan-fixture(OneArgTest)
● 『withFixtureをスタックさせつつ、さらに定型的なテストデータをテストケースにぶち
込みたいゾ』という欲求に応える
def withFixture(test: OneArgTest) = {
val fixture = ...
withFixture(test.toNoArgTest(fixture))
}
“This test” should “succeeds” in { fixture => … }
Sharing Tests
● fixtureが投入データの使い回しだったのに対し、テストケースを使い回す方法もあ
る
● 使い回すテストをメソッドに定義
● そんな定型テストメソッドを呼び出すためのシンプルなDSLも提供されている
it should behave like patternalizedTest(arg, …)
参照:http://goo.gl/E99HwP
Selenium用DSL
● WebBrowser.scalaにほとんどの実装が搭載されている
● 正直設計が微妙……
○ find(findElement相当)をメソッドチェーンできなかったり
○ ElementがWebBrowserの内部traitなので型で苦労したり
○ 同じくQueryがsealed
○ Elementを継承したTextFieldなどを実装しているのは非常に良い。が、 Elementを具体化するメソッ
ドが遅い&WebBrowser内部でprivateメソッドとして宣言されているため使えない。パターンマッチ
つらい
● ScalaTest3.0で設計変わってるし、1つ目の文句についてはGitHubでプルリク出た
りしてるので、そのうち解決される、かも
● 生のWebDriverを使った方がベター、かも
Akka TestKit
Akkaで構築されたシステムを効率的にテストするためのモジュール
Unit Testing、Integration Testingそれぞれのレベルでのテストに対応
Unit TestingとIntegration Testingの境界
UnitTesting
Actor内部の処理の中でもActor modelを排除した部分のテスト
つまり並行並列処理のように計算順序に非決定性が内包されない部分のテストの
こと
Unit TestingとIntegration Testingの境界
Integration Testing
並行並列処理、つまり処理に非決定性が含まれるActor modelのテストのこと
要はSynchronous/AsynchronousでUnit/Integrationを分けよう、ということ
Actor内部のテスト
Actorひとつ試験する場合にも、
単体レベルで検証すべき部分、結合レベルで検証すべき部分が混在する
TestActorRef
通常ActorRefは参照先のActorを外部から隠蔽している
TestActorRefはテストを目的として、外部からActorへのアクセスを許可してい
るクラス
val testActorRef = TestActorRef[OneActor]
val actualActor = testActorRef.underlyingActor
メッセージ検証
val actorRef = TestActorRef(new OneActor)
val answer = actorRef ? PutNumber99
val Success(result: Int) = answer.value.get
result should be (99)
FSMのテスト
TestFSMRefでFSM使うことで、Actorの状態を読み書きできる
val testFSMRef = TestFSMRef(new OneFsmActor)
testFSMRef.stateName should equal(InitialState)
testFSMRef.stateData should equal("")
testFSMRef ! "next"
testFSMRef.stateName should equal(NextState)
testFSMRef.stateData should equal("next")
testFSMRef.setState(stateName = InitialState) // stateData, timeout,
stopReasonなども書き換え可能
(補足)TestKit
Actor用(Integration Testingの領域含む)のテスト用の機能が定義されている
クラス
within (1.second) { // ブロック内が1秒以内に完了するかチェック
fsmRef ! direction("do hoge")
// awaitしてあげる
fsmRef.stateName should equal ("do hoge")
// 期待したメッセージが届いたかチェック
}
(補足)TestActors
テストでよく使うだろう『やまびこ』と『リダイレクト』アクターは、TestActors
内に予め用意されている
EchoActor <- echoActorPropsで生成済み
ForwardActor <- forwardActorPropsにリダイレクト先を引数として渡せば生成
される
(補足)IntegrationTesting = Asynchronous
val echoer = ActorSystem("TestHoge").actorOf(TestActors.echoActorProps)
echoer ! "hoge"
expectMsg("hoge") // TestKit内、Actor model用のassert

More Related Content

What's hot

xUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency InjectionxUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency Injection
Takuto Wada
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)Takuya Tsuchida
 
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::UnitRuby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unithigaki
 
Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)
AyakaNishiyama
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
 
ゆもつよ博士論文説明資料公開
ゆもつよ博士論文説明資料公開ゆもつよ博士論文説明資料公開
ゆもつよ博士論文説明資料公開
Tsuyoshi Yumoto
 
モデル検査入門 #wacate
モデル検査入門 #wacateモデル検査入門 #wacate
モデル検査入門 #wacate
Kinji Akemine
 
Beyond JUnit3
Beyond JUnit3Beyond JUnit3
Beyond JUnit3
Koichi Sakata
 
Test Plugins
Test PluginsTest Plugins
Test Pluginsykhr
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
 
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation111008 silverlight square_datavalidation
111008 silverlight square_datavalidationTakayoshi Tanaka
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
Ken Morishita
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
 

What's hot (16)

xUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency InjectionxUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency Injection
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::UnitRuby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unit
 
Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)
 
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
 
Ruby test double
Ruby test doubleRuby test double
Ruby test double
 
ゆもつよ博士論文説明資料公開
ゆもつよ博士論文説明資料公開ゆもつよ博士論文説明資料公開
ゆもつよ博士論文説明資料公開
 
モデル検査入門 #wacate
モデル検査入門 #wacateモデル検査入門 #wacate
モデル検査入門 #wacate
 
Beyond JUnit3
Beyond JUnit3Beyond JUnit3
Beyond JUnit3
 
Test Plugins
Test PluginsTest Plugins
Test Plugins
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
 
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation111008 silverlight square_datavalidation
111008 silverlight square_datavalidation
 
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 

Viewers also liked

Akka入門
Akka入門Akka入門
未来につながる言語
未来につながる言語未来につながる言語
未来につながる言語
yukihiro_matz
 
エンタープライズ・クラウドと 並列・分散・非同期処理
エンタープライズ・クラウドと 並列・分散・非同期処理エンタープライズ・クラウドと 並列・分散・非同期処理
エンタープライズ・クラウドと 並列・分散・非同期処理maruyama097
 
Concurrency, Scalability & Fault-tolerance 2.0 with Akka Actors & STM
Concurrency, Scalability & Fault-tolerance 2.0 with Akka Actors & STMConcurrency, Scalability & Fault-tolerance 2.0 with Akka Actors & STM
Concurrency, Scalability & Fault-tolerance 2.0 with Akka Actors & STMMario Fusco
 
Wallopball
WallopballWallopball
Wallopball
ethelkatrina
 
Performance indicators for different levels of management
Performance indicators for different levels of managementPerformance indicators for different levels of management
Performance indicators for different levels of management
sree431
 
Week 6 project
Week 6 projectWeek 6 project
Week 6 project
samkrug
 
Collaborative Composition Histories
Collaborative Composition HistoriesCollaborative Composition Histories
Collaborative Composition Histories
mdbabin
 
Coderetreat introduction
Coderetreat introductionCoderetreat introduction
Coderetreat introduction
Vaidas Pilkauskas
 
Group 8. part a
Group 8. part aGroup 8. part a
Group 8. part a
Thanh Vinh Do
 
Simulacro pruebas saber 5ªto
Simulacro pruebas saber 5ªtoSimulacro pruebas saber 5ªto
Simulacro pruebas saber 5ªto
Juɑn Rɑmirez
 
Závěrečný úkol KPI
Závěrečný úkol KPIZávěrečný úkol KPI
Závěrečný úkol KPI
Jan Vyhnánek
 
Venture Lab Creativity: Paying Attention
Venture Lab Creativity: Paying Attention Venture Lab Creativity: Paying Attention
Venture Lab Creativity: Paying Attention
ethelkatrina
 
Croutons.org
Croutons.orgCroutons.org
Croutons.org
ethelkatrina
 
Performance indicators for different levels of management
Performance indicators for different levels of managementPerformance indicators for different levels of management
Performance indicators for different levels of management
sree431
 
Beat the Red Eye - 100+ IDEAS!
Beat the Red Eye - 100+ IDEAS!Beat the Red Eye - 100+ IDEAS!
Beat the Red Eye - 100+ IDEAS!ethelkatrina
 

Viewers also liked (20)

Akka入門
Akka入門Akka入門
Akka入門
 
未来につながる言語
未来につながる言語未来につながる言語
未来につながる言語
 
エンタープライズ・クラウドと 並列・分散・非同期処理
エンタープライズ・クラウドと 並列・分散・非同期処理エンタープライズ・クラウドと 並列・分散・非同期処理
エンタープライズ・クラウドと 並列・分散・非同期処理
 
Concurrency, Scalability & Fault-tolerance 2.0 with Akka Actors & STM
Concurrency, Scalability & Fault-tolerance 2.0 with Akka Actors & STMConcurrency, Scalability & Fault-tolerance 2.0 with Akka Actors & STM
Concurrency, Scalability & Fault-tolerance 2.0 with Akka Actors & STM
 
Comp 220 lab 3
Comp 220 lab 3Comp 220 lab 3
Comp 220 lab 3
 
Wallopball
WallopballWallopball
Wallopball
 
norhane ramdani
norhane ramdaninorhane ramdani
norhane ramdani
 
Performance indicators for different levels of management
Performance indicators for different levels of managementPerformance indicators for different levels of management
Performance indicators for different levels of management
 
Week 6 project
Week 6 projectWeek 6 project
Week 6 project
 
Collaborative Composition Histories
Collaborative Composition HistoriesCollaborative Composition Histories
Collaborative Composition Histories
 
Time management
Time managementTime management
Time management
 
Coderetreat introduction
Coderetreat introductionCoderetreat introduction
Coderetreat introduction
 
Group 8. part a
Group 8. part aGroup 8. part a
Group 8. part a
 
Simulacro pruebas saber 5ªto
Simulacro pruebas saber 5ªtoSimulacro pruebas saber 5ªto
Simulacro pruebas saber 5ªto
 
Závěrečný úkol KPI
Závěrečný úkol KPIZávěrečný úkol KPI
Závěrečný úkol KPI
 
Venture Lab Creativity: Paying Attention
Venture Lab Creativity: Paying Attention Venture Lab Creativity: Paying Attention
Venture Lab Creativity: Paying Attention
 
Croutons.org
Croutons.orgCroutons.org
Croutons.org
 
Performance indicators for different levels of management
Performance indicators for different levels of managementPerformance indicators for different levels of management
Performance indicators for different levels of management
 
Beat the Red Eye - 100+ IDEAS!
Beat the Red Eye - 100+ IDEAS!Beat the Red Eye - 100+ IDEAS!
Beat the Red Eye - 100+ IDEAS!
 
kelly marulanda
kelly marulandakelly marulanda
kelly marulanda
 

Similar to Akka Unit Testing

Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
JustSystems Corporation
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share
久司 中村
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストYohei Sato
 
Unit test in android
Unit test in androidUnit test in android
Unit test in android
Tatsuya Maki
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テスト
Toru Tamaki
 
Shizuoka.py #6 WebTestでWeb APIのテスト & Pythonメタプログラミングでテストの自動生成
Shizuoka.py #6 WebTestでWeb APIのテスト & Pythonメタプログラミングでテストの自動生成Shizuoka.py #6 WebTestでWeb APIのテスト & Pythonメタプログラミングでテストの自動生成
Shizuoka.py #6 WebTestでWeb APIのテスト & Pythonメタプログラミングでテストの自動生成
Nao Oec
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
 
Introduction to Spock
Introduction to SpockIntroduction to Spock
Introduction to Spock
Takahiro Sugiura
 
Java 並行処理の基礎update1
Java 並行処理の基礎update1Java 並行処理の基礎update1
Java 並行処理の基礎update1Kazuhiro Eguchi
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
Taiichilow Nagase
 
Erlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみたErlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみたYoichi Toyota
 
About func unit
About func unitAbout func unit
About func unitgray Space
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
Shumpei Shiraishi
 
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)fumoto kazuhiro
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
tnoda
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
onozaty
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
Tatsumi Naganuma
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
 

Similar to Akka Unit Testing (20)

Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
 
Unit test in android
Unit test in androidUnit test in android
Unit test in android
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テスト
 
Shizuoka.py #6 WebTestでWeb APIのテスト & Pythonメタプログラミングでテストの自動生成
Shizuoka.py #6 WebTestでWeb APIのテスト & Pythonメタプログラミングでテストの自動生成Shizuoka.py #6 WebTestでWeb APIのテスト & Pythonメタプログラミングでテストの自動生成
Shizuoka.py #6 WebTestでWeb APIのテスト & Pythonメタプログラミングでテストの自動生成
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
Introduction to Spock
Introduction to SpockIntroduction to Spock
Introduction to Spock
 
Java 並行処理の基礎update1
Java 並行処理の基礎update1Java 並行処理の基礎update1
Java 並行処理の基礎update1
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
 
Starting java fx
Starting java fxStarting java fx
Starting java fx
 
Erlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみたErlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみた
 
About func unit
About func unitAbout func unit
About func unit
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 

Akka Unit Testing