42
Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev Характеристики качества автотестов © 2015 Алексей Баранцев Software-Testing.Ru

Оценка качества автотестов

  • Upload
    sqalab

  • View
    33.633

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Характеристикикачестваавтотестов© 2015 Алексей Баранцев

Software-Testing.Ru

Page 2: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Кто здесь?Алексей Баранцев[email protected]

http://software-testing.ru/http://selenium2.ru/

Page 3: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Как оценить качество?

Page 4: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Серия стандаров 250NN

Page 5: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Серия стандартов 25000

• ГОСТ Р ИСО/МЭК 25010– модель качества продукта– модель качества при использовании

• ГОСТ Р ИСО/МЭК 25012– модель качества данных

Page 6: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Цели моделей качества

Page 7: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

ГОСТ Р ИСО/МЭК 25010

Page 8: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Функциональная пригодность

•Функциональнаяполнота•Функциональнаякорректность•Функциональнаяцелесообразность

Page 9: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Целесообразность

Page 10: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Функциональная пригодность

•Функциональнаяполнота•Функциональнаякорректность•Функциональнаяцелесообразность

Page 11: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Пример №1@Rulepublic TemporaryFolder tempDir = new TemporaryFolder();

@Testpublic void canCreateFileWithValidName() throws IOException { String validName = "test.txt"; File f = new File(tempDir.getRoot(), validName); f.createNewFile();}

Page 12: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Пример №2@Rulepublic TemporaryFolder tempDir = new TemporaryFolder();

@Testpublic void canCreateFileWithValidName() throws IOException { String validName = "test.txt"; File f = new File(tempDir.getRoot(), validName); Assert.assertTrue(f.createNewFile());}

Page 13: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Пример №3@Rulepublic TemporaryFolder tempDir = new TemporaryFolder();

@Testpublic void canCreateFileWithValidName() throws IOException { String validName = "test.txt"; File f = new File(tempDir.getRoot(), validName); assertTrue(f.createNewFile()); assertTrue(f.exists());}

Page 14: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Пример №4@Rulepublic TemporaryFolder tempDir = new TemporaryFolder();

@Testpublic void canCreateFileWithValidName() throws IOException { String validName = "test.txt"; File f = new File(tempDir.getRoot(), validName); assertTrue(f.createNewFile()); assertTrue(f.exists()); assertEquals(1, tempDir.getRoot().listFiles().length);}

Page 15: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Функциональная пригодность

•Функциональнаяполнота•Функциональнаякорректность•Функциональнаяцелесообразность

Page 16: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Уровень производительности

• Временные характеристики•Использование ресурсов•Потенциальные возможности

Page 17: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Параллельность

Page 18: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Шаблон проектирования «Сон»

http://www.slideshare.net/orgeirIngvarsson/ui-automation-patterns-sleep

Page 19: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Уровень производительности

• Временные характеристики•Использование ресурсов•Потенциальные возможности

Page 20: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Та самая пирамида

Page 21: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Совместимость• Сосуществование•Интероперабельность

Page 22: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Изоляция тестов@ClassRulepublic static TemporaryFolder tempDir = new TemporaryFolder();

@Testpublic void canCreateFileWithValidName1() throws IOException { String validName = "test.txt"; File f = new File(tempDir.getRoot(), validName); assertTrue(f.createNewFile());}

@Testpublic void canCreateFileWithValidName2() throws IOException { String validName = "test.txt"; File f = new File(tempDir.getRoot(), validName); assertTrue(f.createNewFile());}

Page 23: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Oops…

Page 24: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Совместимость• Сосуществование•Интероперабельность

Page 25: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Failed to start up socket within 45000 ms

OpenQA.Selenium.WebDriverException: Failed to start up socket within 45000 msResult StackTrace:at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.ConnectToBrowser(TimeSpan timeToWait) at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start() at OpenQA.Selenium.Firefox.FirefoxDriver.StartClient() at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxBinary binary, FirefoxProfile profile) at OpenQA.Selenium.Firefox.FirefoxDriver..ctor()

Page 26: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Взаимодействие с баг-трекером

@Test@Bug(12345)public void testSomething() { Assert.assertTrue(someOperationWithBug());}

Page 27: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

TestNG и MantisBTpublic class AssumeBugIsFixed implements IAnnotationTransformer { public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { Bug bugAnnotation = testMethod.getAnnotation(Bug.class); if (bugAnnotation != null) { try { MantisConnectLocator mcl = new MantisConnectLocator(); MantisConnectPortType mcp = mcl.getMantisConnectPort( new URL("http://localhost/mantisbt-1.2.17/api/soap/mantisconnect.php")); IssueData issue = mcp.mc_issue_get("administrator", "root", BigInteger.valueOf(bugAnnotation.value())); String status = issue.getStatus().getName(); if (! ("closed".equals(status) || "resolved".equals(status))) { annotation.setEnabled(false); } } catch (Exception e) { e.printStackTrace(); } } }}

Page 28: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Удобство использования

• Определимость пригодности• Изучаемость• Управляемость• Защищенность от ошибки пользователя• Эстетика пользовательского интерфейса• Доступность

Page 29: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Пользовательский интерфейс

Page 30: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Доступность

Page 31: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Тоже доступность

Page 32: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Удобство использования

• Определимость пригодности• Изучаемость• Управляемость• Защищенность от ошибки пользователя• Эстетика пользовательского интерфейса• Доступность

Page 33: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Надёжность• Завершённость• Готовность•Отказоустойчивость• Восстанавливаемость

Page 34: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Позаботься о себе самdef test_delete_some_group(app, db):

if len(db.get_group_list()) == 0: app.group.create(Group(name="test"))

group = random.choice(db.get_group_list()) app.group.delete_group_by_id(group.id)

Page 35: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Эффект домино

Page 36: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Защищённость• Конфиденциальность•Целостность•Неподдельность•Отслеживаемость•Подлинность

Page 37: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Переносимость• Адаптируемость• Устанавливаемость• Взаимозаменяемость

Page 38: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Пример №6@Rulepublic TemporaryFolder tempDir = new TemporaryFolder(new File("C:/temp"));

@Testpublic void canCreateFileWithValidName() throws IOException { String validName = "test.txt"; File f = new File(tempDir.getRoot(), validName); assertTrue(f.createNewFile());}

Page 39: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Пример №7@Testpublic void deleteGroup() { driver.get(baseUrl + "/addressbook/group.php");

driver.findElement( By.xpath("//input[@value='42']")).click();

driver.findElement(By.name("delete")).click();}

Page 40: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Сопровождаемость•Модульность• Возможностьмногократного использования• Анализируемость•Модифицируемость• Тестируемость

Page 41: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Читайте хорошие книжки

Page 42: Оценка качества автотестов

Алексей Баранцев Software-Testing.Ru Selenium2.Ru facebook.com/groups/selenium.ru/ [email protected] skype:barancev

Удачной автоматизации!

Алексей Баранцев[email protected]

http://software-testing.ru/http://selenium2.ru/