Статьи

Тестирование с Python и почему это имеет смысл

Выяснить, на каком языке программировать в качестве тестера, может быть особенно сложно. Если вы спросите программистов в команде, они скажут использовать все, что они кодируют. Спросите в Интернете, и, опять же, вы, скорее всего, услышите то, с чем ваши друзья наиболее знакомы и чувствуют себя комфортно. Хуже того, вы можете услышать множество вариантов.

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

Я собираюсь сделать выбор проще, предложив Python, а затем объяснив, почему это может быть хорошим выбором. Вы также можете присоединиться к SmartBear и TreeHouse для участия в вебинаре, посвященном тому, почему Python — это язык для тестирования.

Легче учиться

Делать интересные темы забавными и откладывать разочаровывающие аспекты на потом помогает мне заинтересоваться.

Возьмите эти примеры программы, которая ничего не делает, кроме вывода строки «Hello world!»

Пример Java

class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }
}

Пример Perl

use strict;
use warnings;

print “Hello world!\n”;

Пример на Java длиной 5 строк, мы могли бы его сократить, но это усложнит чтение. Существует также много типизации, что означает больший потенциал для ошибок, которые приводят к тому, что программа либо не компилируется, либо делает плохие вещи после того, как они действительно запустятся. Говоря о компиляции, вы должны скомпилировать код в исполняемый файл, прежде чем сможете запустить программу. Компиляция на самом деле не занимает много времени, но это еще один шаг, который необходимо выполнить перед запуском кода, когда я хочу знать, как я поступил правильно в эту минуту.

Наш пример на Perl немного короче. Эти две useстроки на самом деле не требуются, поэтому наша программа может представлять собой одну единственную строку кода, но они являются хорошими сетями безопасности, которые дадут немного больше информации для определенных типов сбоев. В конце этой программы есть кое-что лишнее, обратная косая черта и ‘n’. Это просто создает новую строку после Hello World! вывод. Perl в значительной степени полагается на символы, подобные этим, чтобы добиться цели.

В отличие от Java, компиляция отсутствует, но вам необходимо изменить права доступа к файлу, чтобы сделать его исполняемым.

Сравните все это с этим примером на Python.

print "Hello world!"

Это все, что нужно сделать, только одна строка. Конечно, мы можем заключить эту строку в функцию и поместить функцию в класс, но мы не обязаны это делать. Python помогает нам обходиться без кода, если это необходимо.

Scripted

Python — это скриптовый язык. Разница в импорте между скриптовым языком и скомпилированными языками заключается в том, что вам не нужно заранее запускать компилятор для преобразования кода из строк кода во что-то, что может быть выполнено и использовано. Технически Python компилируется во время выполнения, то есть компиляция происходит при запуске программы. Если ваша программа содержит менее пяти тысяч строк кода, вы, вероятно, даже не заметите этап компиляции.

Наиболее распространенная причина для компиляции как отдельного шага — производительность — предварительно скомпилированный код работает намного быстрее, чем интерпретируемый код. Если это то, что вам нужно, вы можете предварительно скомпилировать python в байт-код, сохранив файл как файл .pyc и запустив его. Скомпилированный код будет иметь намного более быстрое время запуска, потому что это преобразование в понятный компьютеру язык уже сделано. Важно помнить, что предварительная компиляция не делает вашу программу быстрее; это просто позволяет вам пропустить это ожидание в начале.

Альтернативой компиляции является то, что называется компиляцией точно в срок. Обычно это делается с помощью установленного языка, который вы получаете на веб-сайте Python, или специальной версии языка, такой как pypy, но есть и другие, которые вы можете выбрать, если у вас есть особые потребности. При своевременной компиляции вы пишете свою программу, а затем сразу же запускаете ее, возможно, набрав `python fileName.py` в командной строке. Когда вы нажимаете кнопку ввода, компиляция запускается, а затем программа запускается. Начать немного медленнее, но это никогда не имело значения для меня, чтобы заботиться. Фактический код будет работать одинаково, независимо от того, выполняете ли вы компиляцию перед запуском программы или используете точно в срок.

Для моего использования в тестировании программного обеспечения я всегда использую компиляцию точно в срок, чтобы не увязнуть в дополнительных слоях инструментов и зависимостях среды.

Хорошая система поддержки

Я не уверен, что это из-за происхождения Python в Monty Python и симпатичных ссылок, таких как спам и яйца вместо foo и bar, или умного логотипа и брендинга, но язык развивается довольно популярно и вокруг него большое сообщество. У Теннесси есть два города, которые входят в сотню самых больших в стране, но штат не известен как технический центр как Калифорния, Массачусетс, и в некоторой степени, Техас. Несмотря на эту все еще развивающуюся техническую среду, в Теннесси есть 4 разные группы Python, которые регулярно встречаются, чтобы обсудить и представить темы, связанные с языком.

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

Для чего-то более длинного и более глубокого, чем местная встреча, есть несколько региональных и официальных конференций на выбор.

Другим аспектом сообщества Python, который в настоящее время является ценным для меня, является онлайн-сообщество. Такие сайты, как Learn Python the Hard Way и субреддиты Python, предоставляют новичкам доступ к лучшим учебным материалам, доступным в хорошем формате.

Когда я сталкиваюсь с проблемой, мне трудно пройти мимо, куда я иду, более широкое сообщество.

Бесплатный и открытый исходный код

Языки программирования, технологии и среды Microsoft имеют прямые денежные затраты. Эти инструменты полностью принадлежат Microsoft — Microsoft даже владеет языком C #. Создание новых языковых функций для C # — это в основном то, что сотрудники Microsoft могут делать, если они работают в правильной команде. Это ограничивает использование языка и наличие проблем, которые обычно означают обход проблемы вместо ее исправления и продолжения работы. с жизнью. Настройка среды разработки с несвободными инструментами также может быть проблемой. Хотя существуют бесплатные версии, полная (и немного дорогая) версия VisualStudio необходима для реальной работы.

Python on the other hand is a completely free and open source language. Just as you can download the language and work on it freely an most any environment, you can also contribute directly to the Python language development by documenting problems, suggesting new features, and even developing new functionality yourself.

Not only is price not a barrier to this technology, the culture and communities around Python are free software fans—to the most popular editors, webservers, and databases, and operating systems for python, that have the best support, are also typically free software packages.

Lots of Tooling

Not only is Python simple and easy to learn, there is also a great deal of support and tools available to extend it. Arguably the most widely use testing tool for user interfaces, WebDriver, has bindings for Python. Once you get familair with Python, adding WebDriver as a skill should not be too much of a challenge; it is basically learning a code library. That same code library has been implemented in many languages – the same functions, same rules, same parameters, to call the same low-level code to drive the browser. The result is that a Ruby/Webdriver person a Python/Webdriver person and a C#/Webdriver person can all participate in the same conversation, sharing code that is conceptually the same but is differs in implementation. That means access to two communities – the Python open source community but also anyone using Selenium/Webdriver. That is two layers of safety nets built in to one tool to help you be successful.

There are at least a dozen tools designed for unit testing in Python. The task of building unit tests is typically performed by the person that wrote the code, but understanding the language and having the testers skill set is powerful.

There are many other Python-based tools for API testing, Behavior Driven Development (BDD), and tools to test a browser quickly, or ‘headless’ When in doubt, I will usually select what seems to be the most popular tool. Once you have selected how you want to test, popularity is a decent indicator for the support network, and also for a tool that is still getting new features when needed and is also well maintained it will be.

Those are a few reasons I chose Python as the language to learn and get useful in, and why I think you should too. Maybe you chose Python; tell us how it goes – or suggest something else? Either way, I’d love to hear your thoughts.