Какие базовые навыки должен знать автоматизатор?


(Mykhailo Poliarush) #1

Хочеться узнать, есть ли какие-то общие навыки или предметы, которыми должен владеть автоматизатор. На мой взгляд, каждый автоматизатор тестирования ПО должен знать/уметь: 

  • программировать (не важно на каком языке)
  • алгоритмы
  • ООП
  • SQL
  • скриптинг под Windows/Unix системы
Что можно еще добавить или возможно удалить из списка?

Стек технологій для тестувальника
Необходимые инструменты и технологии для начинающего тестировщика-автоматизиатора
(elsid) #2

Зачем тестировщику ООП? Нет, конечно, писать скрипты по принципам ООП - это круто. Но без этого можно прекрасно обойтись.

SQL - не это зависит от нужд проекта. Но как обязательное условие это ставить не нужно.

кросплатформенный скриптинг - опять таки зависит от нужд проекта. Никогда не сталкивался с таковым, где это было бы нужно.

алгоритмы - какую область знаний влаживать в это понятие? умение писать блоксхемы? знание видов сортировки? что-то другое? ИМХО - тестировщику не нужно.


(Mykhailo Poliarush) #3

>>Зачем тестировщику ООП? Нет, конечно, писать скрипты по принципам ООП - это круто. Но без этого можно прекрасно обойтись.

Скриптинг, тоже может быть, но всегда, когда я сталкивался с серьезной автоматизацией она была реализована по принципах ООП.

>>SQL - не это зависит от нужд проекта. Но как обязательное условие это ставить не нужно.

Наверное - это ограничивается моим опытом. Во всех проектах автоматизации, где я участвовал, нужен был SQL так, как почти везде используется 3х уровневая модель: клиент, база данных, сервер

>> кросплатформенный скриптинг - опять таки зависит от нужд проекта. Никогда не сталкивался с таковым, где это было бы нужно.

Все выше перечисленное можно поддать сомнению, так как различность проектов очень большая. Я с этим не спорю. Хочется вывести общие знаменатели, которые есть у всех. На счет скриптинга, то мне тоже всегда нужны были знания, как минимум для того, чтобы что-то запустить в определенное время с какими-то параметрами, например: запустить какой-то приложение через консоль; собрать ошибки и перенаправить их в файл; посмотреть, как прошла задача и т.д.

>> алгоритмы - какую область знаний влаживать в это понятие? умение писать блоксхемы? знание видов сортировки? что-то другое? ИМХО - тестировщику не нужно

Мы говорим о том, что нужно автоматизатору. Алгоритмы нужно знать, как минимум для того, что бы делать правильные циклы и ветвления, при этом обеспечивать краткость, читаемость и маштабируемость. Т.е. понимание дает аналитический склад ума.  


(elsid) #4

>> Скриптинг, тоже может быть, но всегда, когда я сталкивался с серьезной автоматизацией она была реализована по принципах ООП.

Здесь опять таки речь идет о серьезной долгоиграющей автоматизации (такое попадается редко, особенно в аутсорсинге)

 

>> Все выше перечисленное можно поддать сомнению, так как различность проектов очень большая. Я с этим не спорю. Хочется вывести общие знаменатели, которые есть у всех. На счет скриптинга, то мне тоже всегда нужны были знания, как минимум для того, чтобы что-то запустить в определенное время с какими-то параметрами...

Если в понятие скриптинга влаживать умение пользоваться командной строкой или шелом - тогда согласен.

 

>> Мы говорим о том, что нужно автоматизатору. Алгоритмы нужно знать, как минимум для того, что бы делать правильные циклы и ветвления, при этом обеспечивать краткость, читаемость и маштабируемость. Т.е. понимание дает аналитический склад ума. 

Если в понятие алгоритмизации влаживать умение пользоваться инструментами интегрированой среды разработки автоматизированого тестирования (что без труда можно подсмотреть в инете или в соответствующей книге) и присутствие здравого смысла - тогда согласен.


(Mykhailo Poliarush) #5

>>Здесь опять таки речь идет о серьезной долгоиграющей автоматизации (такое попадается редко, особенно в аутсорсинге)

Может быть, только у меня такой статистики нету, к сожалению.


(elsid) #6

Моя позиция основана на исключительно на моем небольшом опыте и опыте некоторых братьев тестировщиков, с которыми эту тему приходилось обсуждать.

Например, только 1 из 4 проектов, которые были связаны у меня с автоматизацией, имел высокий уровень тестов (то есть были задействованы принципы ООП). На других все было "Ab hoc et ab hac" (и всем было все равно, всех устраивало).


(Mykhailo Poliarush) #7

Я рад за тебя и твоих братьев. :) Надо бы действильено собрать статистику и посмотреть, какие будут результаты.


(elsid) #8

А с какими тебе приходилось сталкиваться уровнями автоматизации? Какова твоя статистика?


(Mykhailo Poliarush) #9

Собственно у меня не супер огромный опыт, но статистика такова. 5 проектов и в 2х было ООП


(Mykhailo Poliarush) #10

Елизабет Хендриксон сделала небольшое изучения требуемых навыков на рынке США для тестеровщиков и получила следующие данные

The bottom line is that our numbers indicate approximately 80% of the job ads you’d find if searching for jobs in Software QA or Test are asking for programming skills.
SQL or relational database skills (84) 
Java, including J2EE and EJBs (52)
Perl (44)
Python (39)
C/C++ (30)
Shell Scripting (27) note: an additional 4 mentioned batch files.
JavaScript (24)
C# (23)
.NET including VB.NET and ASP.NET but not C# (19)
Ruby (9)

Статья тут http://testobsessed.com/2010/10/20/testers-code/

Да, 80% процентов это не мало. Мне интересно какова же потребность в странных СНГ?


(Максим Таран) #11

Всё зависит от уровня приложения. Если мы говорим об GUI тестиованиия, то, как правило, тестировщикам достаточно знать комманды средства автоматизации, чтобы описать действия пользователя (хотя, конечно, и тут куча подводных камней). У нас, например на работе мы пишем тесты на низком уровне (SOAP, MQ), поэтому иногда приходится писать полноценные приложения для тестирования, и вот тут-то уже надор знания посерьёзней. :) А без SQL, как правило, никак.


(Mykhailo Poliarush) #12

Конечно, всегда все будет зависит от чего-то. Везде будет своя специфика. Хочется обобщить и понять общую картину.
Тут речь больше идет о автоматизаторах, которые создают автоматизацию, а не специлистов, которые используют уже текущую автоматизаацию.


(Максим Таран) #13

Ну так и я про них. :)


(Андрій) #14

Нужны знания в области (теории) тестирования - общих думаю достаточно


(qaleader) #15

Нужны знания самих инструментов автоматизации, их возможностей, проблем с которыми можно столкнутся. Если это web, то например знания selenium webdriver, если desktop то - Test Complete.


(Дмитрий Жарий) #16

Не знаю, как это правильно назвать, но кроме «программировать» я бы еще добавил «делать сложные вещи – простыми».
Ну, пример довольно внушительного фреймворка для C# + WebDriver.
Там и технологии хорошие заюзаны, и архитектура своя, но вот код в некоторых местах…

https://github.com/athrunsun/csharp-automaton/blob/master/Keyword/AddAgendaItem.cs

Хотя, должен подчеркнуть, что таким образом автор реализовал Кейворд, который в итоге будет выглядеть в самом тесте покрасивее

        if (PageObject.PageObjectProvider.Builder.EventDetails.FormPages.AgendaPage.CreateAgendaItem.IsPresent)
        {
            PageObject.PageObjectProvider.Builder.EventDetails.FormPages.AgendaPage.CreateAgendaItem_Click();
        }
        else if(PageObject.PageObjectProvider.Builder.EventDetails.FormPages.AgendaPage.AddAgendaItem.IsPresent)
        {
            PageObject.PageObjectProvider.Builder.EventDetails.FormPages.AgendaPage.AddAgendaItem_Click();
        }
        else if (PageObject.PageObjectProvider.Builder.EventDetails.FormPages.AgendaPage.CreateActivities.IsPresent)

(Mykhailo Poliarush) #17

я бы наввал это "рефакторинг и оптимизация кода"

да представленный пример действательно очень показательный


(ArtemIljin) #18

Тогда почему пишем SQL? Пишите тогда БД. А то получается ООП - мы должны знать, а вот по БД - только SQL.


(Mykhailo Poliarush) #19

кстати я вынес тему с интересными проектами в интернете в отдельный топик

можно кидать туда ссылки и потом на них ссылаться.


(Андрій) #20

Я считаю,что сначало должен идти навик проектирования а уж потом рефакторинг + оптимизация - так как они относятся уже к существующему коду. А добротное проектирование нужно с самого начала, когда еще ничего нет - только идея.