automation test
DESCRIPTION
TRANSCRIPT
![Page 1: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/1.jpg)
Automation Test余昭辉
2011.10
![Page 2: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/2.jpg)
I’m a…
Developer(C#, Java, Scala…) Blogger(http://yuyijq.cnblogs.com) Microsoft MVP(C#)
I like… CLR, JVM OO, Design Pattern, Clean Code Agile(TDD, Code Review, Pair
Programming, etc)
![Page 3: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/3.jpg)
Tools
![Page 4: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/4.jpg)
jUnit
Test Fixture BeforeClass, AfterClass, Before,
After, assumeThat, Group Tests Extensions
DbUnit, jsonAssert Hamcres
Matchers More expression Friendly assert result
![Page 5: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/5.jpg)
Mock
Mockito jMock easyMock MockObjects
![Page 6: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/6.jpg)
Spring test
MockHttpServletRequest MockHttpServletResponse MockHttpSession MockServletConfig MockServletContext … ModelAndViewAssert
![Page 7: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/7.jpg)
Selenium + WebDriver
driver.get(“http://www.qunar.com”) driver.findElement(By.id(“login”)).click(
); …
![Page 8: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/8.jpg)
BDD(Cucumber)
How to manage test cases? The relation between test cases and
test code. QA and Dev
![Page 9: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/9.jpg)
Principles
![Page 10: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/10.jpg)
Test is a feedback mechanism
Run fast Run after each modified Run before check-in …
![Page 11: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/11.jpg)
Test triangle
Functional
Tests
Integration Tests
Unit Tests
![Page 12: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/12.jpg)
State-based assert over behavior-based assert
assertThat(service.findById(1),is(expected))
verify(service,times(1)).findById(1);
![Page 13: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/13.jpg)
assertThat over assertXxx
Self description Different parameter type
![Page 14: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/14.jpg)
Test behavior, not methods
One behavior, one test Not one method many tests One test one assert(*)
![Page 15: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/15.jpg)
Test method name is important
Test method is document Give your intent:
testFindById is not a good name should_find_agent_by_id is better TestDox rule
![Page 16: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/16.jpg)
Test data builder
Agent agent = new AgentBuilder().build();
![Page 17: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/17.jpg)
Repeat run
Don’t modified database, transaction Prepare data itself, or write fixture
![Page 18: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/18.jpg)
Test code is as important as product code
We should extract duplicate code to method
We should use good names …
![Page 19: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/19.jpg)
Add test at:
If you want to add println to get debug info
If you find a bug, write a test first
![Page 20: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/20.jpg)
Test as singal
It’s very difficult to test Three steps:
Given When Then
Test private methods
![Page 21: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/21.jpg)
Demo
![Page 22: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/22.jpg)
Remember
Automated test can’t avoid bugs Even it can’t help you find bugs But it can avoid introduce bugs But…
![Page 23: Automation test](https://reader033.vdocuments.net/reader033/viewer/2022061118/545ba889af7959755d8b612f/html5/thumbnails/23.jpg)
Thank you