Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[RU] GIMME your first Autotest!

[RU] GIMME your first Autotest!

Java automation for beginners

Merkushev Kirill

April 06, 2016
Tweet

More Decks by Merkushev Kirill

Other Decks in Programming

Transcript

  1. @Test
 public void testOk() {
 //шаги 1-2
 List<String> users =

    createNumberOfUsers(100);
 registerAndGoToAnotherServiceWithPhoneToAllUsersHavingNoPhoneYet(users, randomPhone);
 //шаги 3-4
 identity = create();
 params.put(ID, identity);
 params.put(IGNORE, "1");
 params.put(NUMBER, format(random));
 callAndAfterThatCheckResponse(params, POST, responseIsOKOrMaybeNot());
 identity.update();
 
 if(identity.getName() == null) { assertTrue(identity.getName() != null);
 for(String param : params) { 
 //шаги 5-7
 params1.put(random, param);
 callAndCheckResponse(params, GET, respSpecSomethingNotExpected());
 identity.update();
 }
 assertFalse(identity.updated());
 
 //шаги 8-10
 goToNextPageAndDoLotOfWorkWithNumberOfUsersWePreviouslyRegistered(user);
 
 assertTrue(itsOk());
 assertFalse(itsNotOk());
 4 Правим код - Что При неграмотном автотестировании
  2. @Test public void shouldProvideCity() { Weather weather = new WeatherService(clientFor(CITY))

    .getWeather(CITY, REGION);
 assumeThat(«weather», weather, notNullValue()); assertThat(«city», weather.getCity(), equalTo(CITY)); } @Test
 public void testOk() {
 //шаги 1-2
 List<String> users = createNumberOfUsers(100);
 registerAndGoToAnotherServiceWithPhoneToAllUsersHavingNoPhoneYet(users, randomPhone);
 //шаги 3-4
 identity = create();
 params.put(ID, identity);
 params.put(IGNORE, "1");
 params.put(NUMBER, format(random));
 callAndAfterThatCheckResponse(params, POST, responseIsOKOrMaybeNot());
 identity.update();
 
 if(identity.getName() == null) { assertTrue(identity.getName() != null);
 for(String param : params) { 
 //шаги 5-7
 params1.put(random, param);
 callAndCheckResponse(params, GET, respSpecSomethingNotExpected());
 identity.update();
 }
 assertFalse(identity.updated());
 
 //шаги 8-10
 goToNextPageAndDoLotOfWorkWithNumberOfUsersWePreviouslyRegistered(user);
 
 assertTrue(itsOk());
 assertFalse(itsNotOk());
 5 Правим код - Что При развитом автотестировании При неграмотном автотестировании
  3. public class TestClass {
 
 private static final String DONT_MATTER

    = "string";
 
 private static TemporaryFolder classvar = new TemporaryFolder();
 
 private File instancevar;
 
 @Test
 public void shouldDo() throws Exception {
 }
 
 @Test
 public void expectWhen() throws Exception {
 }
 } 8 Правим код - Что структура класса
  4. 9 Правим код - Что public class TestClass { //

    объединение
 
 private static final String DONT_MATTER = "string";
 
 private static TemporaryFolder classvar = new TemporaryFolder();
 
 private File instancevar;
 
 @Test
 public void shouldDo() throws Exception {
 }
 
 @Test
 public void expectWhen() throws Exception {
 }
 } структура класса
  5. 10 public class TestClass {
 // постоянное значение с именем

    собственным
 private static final String DONT_MATTER = "string";
 
 private static TemporaryFolder classvar = new TemporaryFolder();
 
 private File instancevar;
 
 @Test
 public void shouldDo() throws Exception {
 }
 
 @Test
 public void expectWhen() throws Exception {
 }
 структура класса Правим код - Что
  6. 11 public class TestClass {
 
 private static final String

    DONT_MATTER = "string"; 
 // свойственно всем экземплярам
 private static TemporaryFolder classvar = new TemporaryFolder();
 
 private File instancevar;
 
 @Test
 public void shouldDo() throws Exception {
 }
 
 @Test
 public void expectWhen() throws Exception {
 }
 структура класса Правим код - Что
  7. 12 public class TestClass {
 
 private static final String

    DONT_MATTER = "string";
 
 private static TemporaryFolder classvar = new TemporaryFolder(); 
 // свойство конкретного экземпляра
 private File instancevar;
 
 @Test
 public void shouldDo() throws Exception {
 }
 
 @Test
 public void expectWhen() throws Exception {
 }
 структура класса Правим код - Что
  8. 15 public class TestClass {
 
 private static final String

    DONT_MATTER = "string";
 
 private static TemporaryFolder classvar = new TemporaryFolder();
 
 private File instancevar;
 // магия java reflection
 @Test
 public void shouldDo() throws Exception {
 }
 
 @Test
 public void expectWhen() throws Exception {
 }
 структура класса Правим код - Что
  9. 16 public class TestClass {
 
 private static final String

    DONT_MATTER = "string";
 
 private static TemporaryFolder classvar = new TemporaryFolder();
 
 private File instancevar;
 
 @Test // то что мы не контроллируем
 public void shouldDo() throws Exception { }
 
 @Test
 public void expectWhen() throws Exception {
 }
 структура класса Правим код - Что
  10. 17 public class TestClass { 
 // модификаторы доступа -

    это важно
 private static final String DONT_MATTER = "string";
 
 private static TemporaryFolder classvar = new TemporaryFolder();
 
 private File instancevar;
 
 @Test
 public void shouldDo() throws Exception {
 }
 
 @Test
 public void expectWhen() throws Exception {
 }
 структура класса Правим код - Что
  11. public class UserSteps {
 public UserSteps walkTo(String street) {}
 public

    UserSteps ordersCoffee() {} public UserSteps pays() {} public UserSteps shouldSeeCup() {} } @Test user().walkTo(«Садовая») .ordersCoffee() .pays().shouldSeeCup(); 19 проекта структура Правим код - Что ШАГАМИ В ТЕСТАХ МАНИПУЛИРУЙ
  12. 20 проекта структура Правим код - Что src /main /java

    /ru/yandex/…/*.java /resources /test /java … pom.xml
  13. 21 проекта структура Правим код - Что src /main /java

    /ru/yandex/…/*.java /resources /test /java … pom.xml
  14. 22 проекта структура Правим код - Что src /main /java

    /ru/yandex/…/*.java /resources /test /java … pom.xml src /main /java /ru/yandex/…/*.java /resources /test /java … pom.xml core commons pom.xml
  15. 23 проекта структура Правим код - Что src /main /java

    /ru/yandex/…/*.java /resources /test /java … pom.xml src /main /java /ru/yandex/…/*.java /resources /test /java … pom.xml core TESTS pom.xml
  16. 24 проекта структура Правим код - Что Технология Фича Работа

    с датой со строкой константы Авторизация Биллинг
  17. private DBResource db = new DBResource(); @ClassRule // Перед всеми/после

    всех public static TestRule beforeAll = new LogClassStart(); @Rule // Перед каждым/после каждого public ExternalResource prepare = new ExternalResource() { @Override public void before() throws Exception { db.open(); } } 27 Правим код - Как Рулы
  18. 33 Правим код - Как параметризация @RunWith(DataProviderRunner.class) public class LocalizationPageTest

    { //. . . @Test @UseDataProvider({«ru», «en», «tr»}) public void shouldLoadPageForLang(String displayLanguage) {
 user().opensPageWithLang(displayLanguage) .shouldSeeLang(displayLanguage); }
  19. 45 Получаем, запускаем - управленец Жизненный цикл clean compile test

    install deploy maven-compiler-plugin maven-surefire-plugin maven-deploy-plugin . . .