К сожалению, нет магической формулы для разработки высококачественного программного обеспечения, но очевидно, что тестирование улучшает его качество, а автоматизация тестирования улучшает качество самого тестирования.
В данной статье мы рассмотрим один из самых популярных фреймворков для автоматизации тестирования с использованием BDD-подхода – Cucumber. Также посмотрим, как он работает и какие средства предоставляет.
Первоначально Cucumber был разработан Ruby-сообществом, но со временем был адаптирован и для других популярных языков программирования. В данной статье рассмотрим работу Cucumber на языке Java.
Подскажите, пожалуйста, как определить оптимальное количество тестов для тестирование консольных приложений, которые воспроизводят мадеафайлы (музыка, видео)?
Реквайроменты от заказчика - по одному на каждое приложение, юскейсов нет. Целью тестирование является проверка работоспособности консольных приложений, при этом кодеки, которые используются для тестирования медиафайлов, проверяются через API атоматическими тестами.
По сути, опираться при выборе тестовой стратегии можно только на хелп самих приложений.
Если тестировать все возможные комбинации опций, то, на мой взгляд, это не оптимально ни по количеству тестов, ни по времени, затрачиваемому на тестирование.
Хелп для одного из приложений выглядит следующим образом:
# use mmrplay
mmrplay -- play a file through mm-renderer
mmrplay [options...] input
-r connectpath -- parameter to pass to mmr_connect() (default NULL)
-c contextname -- name of the context to create (default "testplayer")
-o contextname -- just open that context and report its events
-v videooutput -- video output URL
-s subpictout -- subpicture output URL
-a audiooutput -- audio output URL
-f fileoutput -- file output URL
-m mode -- permission bits for the context (octal)
-t inputtype -- specify input type (default "track")
-T speed -- set speed
-P pos -- seek to pos
-C name=val -- add a context parameter
-I name=val -- add an input parameter
-A name=val -- add an output parameter to the audio output
-V name=val -- add an output parameter to the video output
-S name=val -- add an output parameter to the subpicture output
-F name=val -- add an output parameter to the file output
-D -- detailed event info
-i -- print out plugin info
-Q -- less detailed event info
-M -- detailed track metadata
-B -- don't play, just attach input and then exit
-x -- remain open until manually signalled
-R n -- if context cannot be opened or created, wait 1 second and retry up to n times
Что уж греха таить, живой пример - инстаграм: необходимо добавить комментарий. В windows7+python3.6.2+selenium+geckodriver ищу элемент (сердечко для "лайка") по XPATH:
Ищу элемент (строку для добавления комментария) по XPATH:
comment = driver.find_elements_by_xpath('//textarea[@placeholder = "Add a comment..."]')
- находит.
Соответственно, в обоих случаях возвращается массив найденных элементов (на практике в массиве всего 1 элемент), обращаюсь к нему comment[0].send_keys(comment_text) и т. д.
В целом, всё работает.
Переношу всё на debian8+python3.4+selenium+PhantomJS. Код прежний, ищу элемент (сердечко для "лайка") по XPATH: