SlideShare una empresa de Scribd logo
1 de 31
单元测试必知必会 淘宝搜索中心 恨少 2010-09-06
目录 背景介绍 CppUnit & PyUnit snipMate Map-Reduce单元测试 2010-9-15 TaobaoSearch 2
敏捷软件开发( Agile software development ) 敏捷软件开发又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。 相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用。 2010-9-15 TaobaoSearch 3
软件测试三大模型 2010-9-15 TaobaoSearch 4
W模型 2010-9-15 TaobaoSearch 5
H模型 2010-9-15 TaobaoSearch 6
单元测试 在计算机编程中,单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。 单元测试的思想与方法是敏捷开发的重要组成部分。 2010-9-15 TaobaoSearch 7
单元测试的优点 	1、它是一种验证行为。 程序中的每一项功能都是测试来验证它的正确性。它为以后的开发提供支持。就算是开发后期,我们也可以轻松的增加功能或更改程序结构,而不用担心这个过程中会破坏重要的东西。而且它为代码的重构提供了保障。这样,我们就可以更自由的对程序进行改进。 	2、它是一种设计行为。  编写单元测试将使我们从调用者观察、思考。特别是先写测试(test-first),迫使我们把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。 	3、它是一种编写文档的行为。  单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。 	4、它具有回归性。  自动化的单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试。 2010-9-15 TaobaoSearch 8
单元测试的优点(我的理解) 1、有利于设计紧凑正交的接口。 2、有利于代码重构。 3、有利于提高代码质量。 4、有利于提高自动化水平。 2010-9-15 TaobaoSearch 9
不同测试效率比较 互这些图表摘自<<实用软件度量>>(Capers Jones,McGraw-Hill 1991),它列出了准备测试,执行测试,和修改缺陷所花费的时间(以一个功能点为基准). 2010-9-15 TaobaoSearch 10
测试驱动开发 测试驱动开发(Test-driven development)是现代计算机软件开发方法的一种。利用测试来驱动软件程序的设计和实现。测试驱动开始流行于20世纪90年代。测试驱动开发是极限编程中倡导的程序开发方法,方法主要是先写测试程序,然后再编码使其通过测试。测试驱动开发的目的是取得快速反馈并使用“illustrate the main line”方法来构建程序。 2010-9-15 TaobaoSearch 11
互联网软件开发特点 互联网软件开发实际是 SAAS(software as a service),即软件作为一种服务来提供。互联网软件开发明显的特点是所谓“小步快跑。 	1、软件开发的周期短,节奏快。 	2、分特性上线。先上线一些功能,然后再去改进。 	3、系统优化要大于大规模的重构,不会动不动就推翻,从头再来。 	4、对 bug的容忍度比传统的软。 总之一句话,先圈住用户才是王道。在互联网领域,敏捷开发和单元测试具有非凡的价值。 2010-9-15 TaobaoSearch 12
JUnit JUnit是一个Java语言的单元测试 框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中为最成功的一个。 JUnit同Eclipse等主流Java IDE紧密结合,易于使用。Junit最新版本是4.x,同3.x相比改进比较多。 2010-9-15 TaobaoSearch 13
xUnit单元测试一般原理 xUnit测试框架种类繁多,不过它们都遵循共同的理念。 	1、setUp和tearDown函数。用于为每个测试方法做准备工作和收尾工作。 	2、提供一系列的断言函数。 	3、fail和error。fail是由assert*函数抛出异常导致的。除此之外就都是error了。 	4、component模式构建测试树。test suite包含testcase,同时也可以被别的test suite包含。 2010-9-15 TaobaoSearch 14
C++单元测试 		C++作为一种传统的程序设计语言,缺乏快速开发的能力,但是传统软件开发引入单元测试也是大有好处的。 由Michael Feathers开发的CppUnit为广大C++程序员带来了福音。CppUnit通过宏简化了编写测试用例的过程。 iSearch源码中有一个test目录,里面正是使用CppUnit编写了大量的单元测试用例。 2010-9-15 TaobaoSearch 15
CppUnit单元测试小示例 class sample_test : public CppUnit::TestFixture {         CPPUNIT_TEST_SUITE(sample_test);           CPPUNIT_TEST(testSwap);           CPPUNIT_TEST(testFind);          CPPUNIT_TEST_SUITE_END();          public:         void setUp()         {                 m_str1 = "Hello, world";                 m_str2 = "Hi, cppunit";         }         void tearDown() {         }         void testSwap()         {                 std::string str1 = m_str1;                 std::string str2 = m_str2;                 m_str1.swap(m_str2);                 CPPUNIT_ASSERT(m_str1 == str2);                 CPPUNIT_ASSERT(m_str2 == str1);         }         protected:         std::string      m_str1;         std::string      m_str2; }; CPPUNIT_TEST_SUITE_REGISTRATION( sample_test ); 2010-9-15 TaobaoSearch 16
int main() {       //CppUnit支持多种UI,包括MFC和Qt       //对于自动化测试,还是文本UI最有用 CppUnit::TextUi::TestRunner runner;	  CppUnit::TestFactoryRegistry &registry = 			CppUnit::TestFactoryRegistry::getRegistry();  runner.addTest( registry.makeTest() );  runner.run();  	return 0; } 2010-9-15 TaobaoSearch 17
2010-9-15 TaobaoSearch 18
一个小技巧 测试用例类中的每个方法运行之前都会运行setUp和tearDown函数,有时这种方式并不好。JUnit 4.0添加BeforeClass,AfterClass两个注解来注释只运行一次的函数。 CppUnit可以在测试用例类中添加一个静态变量作为标志,确保setUp和tearDown中的工作只做一次。 2010-9-15 TaobaoSearch 19
Python单元测试 PyUnit是Python单元测试框架标准,它基于JUnit。2.1版本以上的Python 标准库都包含PyUnit。 2010-9-15 TaobaoSearch 20
Python单元测试小示例 import unittest #添加被测试模块目录所在路径 sys.path.append('../') class CheckSizeTestCase(unittest.TestCase):         def setUp(self):                 pass         def testCheckSize(self): self.assertEqual(utils.checkSize(3, 2, 0.6), True) self.assertEqual(utils.checkSize(3, 2, 0.4), False) self.assertEqual(utils.checkSize(1, 2, 0.6), True) self.assertEqual(utils.checkSize(1, 2, 0.4), False) self.assertEqual(utils.checkSize(10, 3, 4), True) self.assertEqual(utils.checkSize(10, 3, 2), False)         def tearDown(self):                 pass 2010-9-15 TaobaoSearch 21
def suite():         suite = unittest.TestSuite() suite.addTest(CheckSizeTestCase()) suite.addTest(CheckDirSizeTestCase()) suite.addTest(IsEmptyDirTestCase())         return suite; if __name__ == "__main__": unittest.main() 2010-9-15 TaobaoSearch 22
Vim神器—snipMate snipMate是一个Vim插件,用于生成代码模板。在编写单元测试用例时也小有帮助。 snipMate支持目前所有主流语言,通过snippets定义模板规则,很容易添加自定义规则。 2010-9-15 TaobaoSearch 23
PyUnit模板 snippet tc         class ${1} (unittest.TestCase):                 def setUp(self):                         ${2:pass}                 def test${3}(self):                         ${4:pass}                 def tearDown(self):                         ${5:pass} 2010-9-15 TaobaoSearch 24
CppUnit模板 snippet cu         class ${1:testClass} : public CppUnit::TestFixture         {                 CPPUNIT_TEST_SUITE(${2});                 CPPUNIT_TEST(${3});                 CPPUNIT_TEST_SUITE_END();         public:                 void setUp()                 {                 }                 void tearDown()                 {                 }                 void ${4:testMethod}()                 {                         CPPUNIT_ASSERT_EQUAL()                 }         };          //添加用例         CPPUNIT_TEST_SUITE_REGISTRATION( ${5:testClass} ); 2010-9-15 TaobaoSearch 25
Map-Reduce单元测试 		Map-Reduce的Map和Reduce函数,根据输入记录,collect输出记录,对它们分别进行测试是很容易的。 使用Mockito模拟对象测试框架做单元测试。Mockito通过verify来断言。比如测试WordCount的map函数,输入”hello hello”,collect应该会得到两个<”hello”, 1>记录,因此断言: verify(output, times(2)).collect(new Text("hello"), new IntWritable(1)); 2010-9-15 TaobaoSearch 26
Map-Reduce单元测试 public class TestMockito { 	@Test 	public void processValidRecord() throws IOException { WordCount.Mapmapper = new WordCount.Map(); OutputCollector<Text, IntWritable> output =  			mock(OutputCollector.class); 		Text value = new Text("hello hello"); 		mapper.map(null, value, output, null); 		verify(output, times(2)).collect(new Text("hello"), new IntWritable(1)); 	} } 2010-9-15 TaobaoSearch 27
2010-9-15 TaobaoSearch 28
使用MRUnit MRUnit是Cloudera为Map-Reduce提供的一个专业测试框架,功能比Mockito更为强大。MRUnit jar包已经包含在Cloudera提供的Hadoop发行版中。 2010-9-15 TaobaoSearch 29
public class TestMRunit extends TestCase { 	List<Pair<Text, IntWritable>> out = null; 	private WordCount.Mapmapper; 	private MapDriver driver; 	@Before 	public void setUp() { mapper = new WordCount.Map(); 		driver = new MapDriver(mapper); 	} 	@Test 	public void testIdentityMapper() { 		try { 			out = driver 			.withInput(new LongWritable(1), new Text(“hello world”)).run(); 		} catch (IOExceptionex) {	 		} 		List<Pair<Text, IntWritable>> expected = new ArrayList<Pair<Text, IntWritable>>(); expected.add(new Pair<Text, IntWritable>(new Text("hello"), new IntWritable(1))); expected.add(new Pair<Text, IntWritable>(new Text("world"), new IntWritable(1))); assertListEquals(expected, out); 	} } 2010-9-15 TaobaoSearch 30
Q&A 恨少 Email:henshao@taobao.com

Más contenido relacionado

La actualidad más candente

July 2015 Android Taipei - Anti-Decompiler by SUKI
July 2015 Android Taipei - Anti-Decompiler by SUKIJuly 2015 Android Taipei - Anti-Decompiler by SUKI
July 2015 Android Taipei - Anti-Decompiler by SUKISuki Huang
 
Data structure week 1
Data structure week 1Data structure week 1
Data structure week 1karmuhtam
 
One definition rule - что это такое, и как с этим жить
One definition rule - что это такое, и как с этим житьOne definition rule - что это такое, и как с этим жить
One definition rule - что это такое, и как с этим житьPlatonov Sergey
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codeAndrey Karpov
 
Objective-C Runtime overview
Objective-C Runtime overviewObjective-C Runtime overview
Objective-C Runtime overviewFantageek
 
Kirk Shoop, Reactive programming in C++
Kirk Shoop, Reactive programming in C++Kirk Shoop, Reactive programming in C++
Kirk Shoop, Reactive programming in C++Sergey Platonov
 
Architecture for Massively Parallel HDL Simulations
Architecture for Massively Parallel HDL Simulations Architecture for Massively Parallel HDL Simulations
Architecture for Massively Parallel HDL Simulations DVClub
 
Laporan ai modul 2-if b 2014-14102055-deprilana ego prakasa
Laporan ai modul 2-if b 2014-14102055-deprilana ego prakasaLaporan ai modul 2-if b 2014-14102055-deprilana ego prakasa
Laporan ai modul 2-if b 2014-14102055-deprilana ego prakasaDeprilana Ego Prakasa
 
Of complicacy of programming, or won't C# save us?
Of complicacy of programming, or won't C# save us?Of complicacy of programming, or won't C# save us?
Of complicacy of programming, or won't C# save us?PVS-Studio
 
Checking the Qt 5 Framework
Checking the Qt 5 FrameworkChecking the Qt 5 Framework
Checking the Qt 5 FrameworkAndrey Karpov
 
From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...Robert Munteanu
 
Gor Nishanov, C++ Coroutines – a negative overhead abstraction
Gor Nishanov,  C++ Coroutines – a negative overhead abstractionGor Nishanov,  C++ Coroutines – a negative overhead abstraction
Gor Nishanov, C++ Coroutines – a negative overhead abstractionSergey Platonov
 
Алексей Кутумов, Вектор с нуля
Алексей Кутумов, Вектор с нуляАлексей Кутумов, Вектор с нуля
Алексей Кутумов, Вектор с нуляSergey Platonov
 
TensorFlow local Python XLA client
TensorFlow local Python XLA clientTensorFlow local Python XLA client
TensorFlow local Python XLA clientMr. Vengineer
 
PVS-Studio 5.00, a solution for developers of modern resource-intensive appl...
PVS-Studio 5.00, a solution for developers of modern resource-intensive appl...PVS-Studio 5.00, a solution for developers of modern resource-intensive appl...
PVS-Studio 5.00, a solution for developers of modern resource-intensive appl...Andrey Karpov
 
Juan josefumeroarray14
Juan josefumeroarray14Juan josefumeroarray14
Juan josefumeroarray14Juan Fumero
 
Writing good std::future&lt;c++>
Writing good std::future&lt;c++>Writing good std::future&lt;c++>
Writing good std::future&lt;c++>Anton Bikineev
 

La actualidad más candente (20)

July 2015 Android Taipei - Anti-Decompiler by SUKI
July 2015 Android Taipei - Anti-Decompiler by SUKIJuly 2015 Android Taipei - Anti-Decompiler by SUKI
July 2015 Android Taipei - Anti-Decompiler by SUKI
 
Data structure week 1
Data structure week 1Data structure week 1
Data structure week 1
 
One definition rule - что это такое, и как с этим жить
One definition rule - что это такое, и как с этим житьOne definition rule - что это такое, и как с этим жить
One definition rule - что это такое, и как с этим жить
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ code
 
Objective-C Runtime overview
Objective-C Runtime overviewObjective-C Runtime overview
Objective-C Runtime overview
 
Kirk Shoop, Reactive programming in C++
Kirk Shoop, Reactive programming in C++Kirk Shoop, Reactive programming in C++
Kirk Shoop, Reactive programming in C++
 
Architecture for Massively Parallel HDL Simulations
Architecture for Massively Parallel HDL Simulations Architecture for Massively Parallel HDL Simulations
Architecture for Massively Parallel HDL Simulations
 
C++17 now
C++17 nowC++17 now
C++17 now
 
Laporan ai modul 2-if b 2014-14102055-deprilana ego prakasa
Laporan ai modul 2-if b 2014-14102055-deprilana ego prakasaLaporan ai modul 2-if b 2014-14102055-deprilana ego prakasa
Laporan ai modul 2-if b 2014-14102055-deprilana ego prakasa
 
Of complicacy of programming, or won't C# save us?
Of complicacy of programming, or won't C# save us?Of complicacy of programming, or won't C# save us?
Of complicacy of programming, or won't C# save us?
 
Checking the Qt 5 Framework
Checking the Qt 5 FrameworkChecking the Qt 5 Framework
Checking the Qt 5 Framework
 
Virtual Functions
Virtual FunctionsVirtual Functions
Virtual Functions
 
From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...
 
Golang dot-testing-lite
Golang dot-testing-liteGolang dot-testing-lite
Golang dot-testing-lite
 
Gor Nishanov, C++ Coroutines – a negative overhead abstraction
Gor Nishanov,  C++ Coroutines – a negative overhead abstractionGor Nishanov,  C++ Coroutines – a negative overhead abstraction
Gor Nishanov, C++ Coroutines – a negative overhead abstraction
 
Алексей Кутумов, Вектор с нуля
Алексей Кутумов, Вектор с нуляАлексей Кутумов, Вектор с нуля
Алексей Кутумов, Вектор с нуля
 
TensorFlow local Python XLA client
TensorFlow local Python XLA clientTensorFlow local Python XLA client
TensorFlow local Python XLA client
 
PVS-Studio 5.00, a solution for developers of modern resource-intensive appl...
PVS-Studio 5.00, a solution for developers of modern resource-intensive appl...PVS-Studio 5.00, a solution for developers of modern resource-intensive appl...
PVS-Studio 5.00, a solution for developers of modern resource-intensive appl...
 
Juan josefumeroarray14
Juan josefumeroarray14Juan josefumeroarray14
Juan josefumeroarray14
 
Writing good std::future&lt;c++>
Writing good std::future&lt;c++>Writing good std::future&lt;c++>
Writing good std::future&lt;c++>
 

Destacado

Nyc hadoop meetup introduction to h base
Nyc hadoop meetup   introduction to h baseNyc hadoop meetup   introduction to h base
Nyc hadoop meetup introduction to h base智杰 付
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 

Destacado (8)

Internet
InternetInternet
Internet
 
Diaporama JE
Diaporama JEDiaporama JE
Diaporama JE
 
Org change
Org changeOrg change
Org change
 
Perifèrics
PerifèricsPerifèrics
Perifèrics
 
Sales Idol
Sales IdolSales Idol
Sales Idol
 
Nyc hadoop meetup introduction to h base
Nyc hadoop meetup   introduction to h baseNyc hadoop meetup   introduction to h base
Nyc hadoop meetup introduction to h base
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 

Similar a 单元测试必知必会

Story of static code analyzer development
Story of static code analyzer developmentStory of static code analyzer development
Story of static code analyzer developmentAndrey Karpov
 
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitIntroduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitMichelangelo van Dam
 
Testes? Mas isso não aumenta o tempo de projecto? Não quero...
Testes? Mas isso não aumenta o tempo de projecto? Não quero...Testes? Mas isso não aumenta o tempo de projecto? Não quero...
Testes? Mas isso não aumenta o tempo de projecto? Não quero...Comunidade NetPonto
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[232]TensorRT를 활용한 딥러닝 Inference 최적화
[232]TensorRT를 활용한 딥러닝 Inference 최적화[232]TensorRT를 활용한 딥러닝 Inference 최적화
[232]TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
Tdd with python unittest for embedded c
Tdd with python unittest for embedded cTdd with python unittest for embedded c
Tdd with python unittest for embedded cBenux Wei
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresFrits Van Der Holst
 
Unit Testing Frameworks: A comparative study
Unit Testing Frameworks: A comparative studyUnit Testing Frameworks: A comparative study
Unit Testing Frameworks: A comparative studyIRJET Journal
 
R workshop xx -- Parallel Computing with R
R workshop xx -- Parallel Computing with R R workshop xx -- Parallel Computing with R
R workshop xx -- Parallel Computing with R Vivian S. Zhang
 
SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8Chaitanya Ganoo
 
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17LogeekNightUkraine
 
Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会Mr. Vengineer
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰KAI CHU CHUNG
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and FriendsYun Zhi Lin
 
Cross Platform App Development with C++
Cross Platform App Development with C++Cross Platform App Development with C++
Cross Platform App Development with C++Joan Puig Sanz
 

Similar a 单元测试必知必会 (20)

Story of static code analyzer development
Story of static code analyzer developmentStory of static code analyzer development
Story of static code analyzer development
 
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitIntroduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnit
 
PHPUnit testing to Zend_Test
PHPUnit testing to Zend_TestPHPUnit testing to Zend_Test
PHPUnit testing to Zend_Test
 
Testes? Mas isso não aumenta o tempo de projecto? Não quero...
Testes? Mas isso não aumenta o tempo de projecto? Não quero...Testes? Mas isso não aumenta o tempo de projecto? Não quero...
Testes? Mas isso não aumenta o tempo de projecto? Não quero...
 
Sql xp 09
Sql xp 09Sql xp 09
Sql xp 09
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[232]TensorRT를 활용한 딥러닝 Inference 최적화
[232]TensorRT를 활용한 딥러닝 Inference 최적화[232]TensorRT를 활용한 딥러닝 Inference 최적화
[232]TensorRT를 활용한 딥러닝 Inference 최적화
 
Test api
Test apiTest api
Test api
 
Tdd with python unittest for embedded c
Tdd with python unittest for embedded cTdd with python unittest for embedded c
Tdd with python unittest for embedded c
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventures
 
Unit Testing Frameworks: A comparative study
Unit Testing Frameworks: A comparative studyUnit Testing Frameworks: A comparative study
Unit Testing Frameworks: A comparative study
 
R workshop xx -- Parallel Computing with R
R workshop xx -- Parallel Computing with R R workshop xx -- Parallel Computing with R
R workshop xx -- Parallel Computing with R
 
SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8
 
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
 
report
reportreport
report
 
Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会Facebook Glow Compiler のソースコードをグダグダ語る会
Facebook Glow Compiler のソースコードをグダグダ語る会
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
 
C# 6.0 Preview
C# 6.0 PreviewC# 6.0 Preview
C# 6.0 Preview
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and Friends
 
Cross Platform App Development with C++
Cross Platform App Development with C++Cross Platform App Development with C++
Cross Platform App Development with C++
 

单元测试必知必会