Перейти к содержимому

Автоматизация функционального тестирования
онлайн, начало 3 июля
Автоматизатор мобильных приложений
онлайн, начало 8 июля
Тестирование безопасности
онлайн, начало 8 июля
Автоматизация тестов для REST API при помощи Postman
онлайн, начало 9 июля

Публикации SergeyQA

20 публикаций создано SergeyQA (учитываются публикации только с 06 июля 2019)


#170028 Одна такая мегаглавная проблема Selenium Webdriver, Selenium - отстой?

Отправлено автор: SergeyQA 11 декабря 2018 - 16:26 в Про тестирование обо всём подряд

Коллеги, всем здравствуйте!
Слишком много времени потерял на решение проблемы. Увидел, что тема очень похожая и решил напиать.
Проблема такая: вебдрайвер не может найти на странице элемент, если функция отрабатывает не в первый раз. 
Поясню.
Есть страница интернет магазина с категориями товаров: https://www.auchan.r.../kosmetika.html
На этой странице есть подкатегории. Мне нужно кликнуть любую из них (я кликаю первую для простоты). http://joxi.ru/52aBL6lt47xo7A
Далее идет оформление заказа.
Есть тест с набором тесткейсов. Первый тесткейс проходит успешно. То есть я захожу в категорию и кликаю первую попавшуюся подкатегорию.
После оформления заказа на дом, мне нужно сделать заказ в магазин - это второй тесткейс.
Так вот на втором тесткейсе драйвер не может найти подкатегорию! Сценарии абсолютно идентичны до перехода на чекаут! Локатор тот же самый.
Я уже перепробовал все, что можно. И по CSS искал, и по XPATH,  и find_elements, и  find_element,  и waint.until(presence_of_element_located, и даже искал все, а потом кликал рандомный - все работает в первый раз, но отваливается по таймауту во второй раз (если wait использовать) или сразу падает с эсепшеном, что не может найти элемент (если использовать find_element)...
Если принудительно обновить страницу, то сразу же элемент находится. Но при этом, на странице подкатегории он уже не может перейти в карточку товара. Если обновить, то найдет.. и так до конца сценария! 
Хочу заметить, что иногда (1 раз из 20 может), элемент все же находится и во второй раз.
Вот один из примеров кода:

self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div[class="category__item-title"] a'))).click()

webdriver chrome 2.45 (пробовал откатывать до версий 2.44, 2.43, 2.42 - все тоже самое)
chrome  71.0.3578.80 (Официальная сборка), (64 бит)
python 3.5

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




#169883 Запуcк сценария по крону ubuntu

Отправлено автор: SergeyQA 03 декабря 2018 - 16:54 в JMeter - Тестирование производительности

Коллеги, проблема решена!
В кроне правильно писать так:
*/1 * * * * cd /home/sergey/Рабочий\ стол/apache-jmeter-5.0/bin && ./jmeter -n -t /home/sergey/arom/AROM_cases/Order_to_shop1004_authorization_preprod1_new.jmx > /home/sergey/file_test.log 2>&1

Первое - это надо было обязательно перейти в папку с Jmeter, а уже оттуда его запускать.
Второе - в конце строки прописать перенаправление (если я правильно понял) 2>&1

Ура!
Всем большое спасибо за помощь! 




#169880 Запуcк сценария по крону ubuntu

Отправлено автор: SergeyQA 03 декабря 2018 - 16:32 в JMeter - Тестирование производительности

Я весьма слабо в этом разбираюсь и подсказать мне в этом некому на работе (ну точнее некогда, наверно). Прошу вашей помощи.
Вот что я взял из системного лога.
 

Dec  3 19:18:46 sergey-MS-7758 kernel: [17484.648846] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:18:50 sergey-MS-7758 kernel: [17488.653030] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:18:54 sergey-MS-7758 kernel: [17492.653666] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:18:58 sergey-MS-7758 kernel: [17496.657560] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:19:01 sergey-MS-7758 cron[835]: (sergey) RELOAD (crontabs/sergey)
Dec  3 19:19:01 sergey-MS-7758 CRON[27650]: (sergey) CMD (./jmeter -n -t /home/sergey/arom/AROM_cases/Order_to_shop1004_authorization_preprod1_new.jmx  > /home/sergey/file_test.log >/dev/null 2>&1)
Dec  3 19:19:02 sergey-MS-7758 kernel: [17500.661939] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:19:06 sergey-MS-7758 kernel: [17504.665111] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:19:10 sergey-MS-7758 kernel: [17508.665926] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:19:10 sergey-MS-7758 systemd[1]: supervisor.service: Service hold-off time over, scheduling restart.
Dec  3 19:19:10 sergey-MS-7758 systemd[1]: Stopped Supervisor process control system for UNIX.
Dec  3 19:19:10 sergey-MS-7758 systemd[1]: Started Supervisor process control system for UNIX.
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]: Traceback (most recent call last):
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/bin/supervisord", line 5, in <module>
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     from pkg_resources import load_entry_point
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     @_call_aside
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     f(*args, **kwargs)
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     working_set = WorkingSet._build_master()
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 635, in _build_master
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     ws.require(__requires__)
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 943, in require
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     needed = self.resolve(parse_requirements(requirements))
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 829, in resolve
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     raise DistributionNotFound(req, requirers)
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]: pkg_resources.DistributionNotFound: The 'supervisor==3.2.0' distribution was not found and is required by the application
Dec  3 19:19:10 sergey-MS-7758 systemd[1]: supervisor.service: Main process exited, code=exited, status=1/FAILURE
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]: Traceback (most recent call last):
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/bin/supervisorctl", line 5, in <module>
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     from pkg_resources import load_entry_point
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     @_call_aside
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     f(*args, **kwargs)
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     working_set = WorkingSet._build_master()
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 635, in _build_master
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     ws.require(__requires__)
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 943, in require
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     needed = self.resolve(parse_requirements(requirements))
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 829, in resolve
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     raise DistributionNotFound(req, requirers)
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]: pkg_resources.DistributionNotFound: The 'supervisor==3.2.0' distribution was not found and is required by the application
Dec  3 19:19:11 sergey-MS-7758 systemd[1]: supervisor.service: Control process exited, code=exited status=1
Dec  3 19:19:11 sergey-MS-7758 systemd[1]: supervisor.service: Unit entered failed state.
Dec  3 19:19:11 sergey-MS-7758 systemd[1]: supervisor.service: Failed with result 'exit-code'.
Dec  3 19:19:14 sergey-MS-7758 kernel: [17512.670071] intel_pstate: Turbo disabled by BIOS or unavailable on processor

Могу приложить скриншот дерева, если это поможет. Файл сбросить не могу, боюсь попасть под "разглашение". 
http://joxi.ru/L21GZEoF8MGvqr
Никаких графиков внутри нет. Есть только авторизация на сервере ну и дальше пользовательская авторизация на сайте, добавление товара в корзину, выбор магазина на чекауте и оформление заказа.
Напомню, что вручную в клиентском приложении все ок, в консоли вручную тоже все ок, а по крону увы..




#169761 Запуcк сценария по крону ubuntu

Отправлено автор: SergeyQA 28 ноября 2018 - 11:24 в JMeter - Тестирование производительности

Возможно это поможет локализовать причину:
Дело в том, что скрипт selenium на python у меня тоже не запускается на локальной машине по крону. А вот тот же крон, но с настройками в коде скрипта, чтобы скрипт запускался на виртуальной машине (использую selenium server) - это работает, скрипт запускается. 
Может какие-то права?..




#169760 Запуcк сценария по крону ubuntu

Отправлено автор: SergeyQA 28 ноября 2018 - 11:19 в JMeter - Тестирование производительности

Начнем с простого: командный процессор никогда не ищет исполняемый файл в текущей папке, он его ищет в path. Так что укажите путь явно, перед jmeter в команде крона поставьте ./

Это должно решить проблему странной версии jmeter (где-то в путях лежит старый jmeter)

Ну и упреждающий вопрос. Это крон пользователя или системный?

Попробовал ./jmeter - нет результатов.
Крон пользовательский.




#169757 Запуcк сценария по крону ubuntu

Отправлено автор: SergeyQA 28 ноября 2018 - 11:07 в JMeter - Тестирование производительности

я не хочу быть "тем самым" парнем, но крон вам не нужен

 

вам нужен ЦИ сервер типа Дженкинса, и на нём уже запускайте свой тест

 

ну и конечно Джейметер вам не нужен тоже, так как тест не нагрузочный а функциональный. просто напишите его на любой библиотечке типа REST Assured

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




#169756 Запуcк сценария по крону ubuntu

Отправлено автор: SergeyQA 28 ноября 2018 - 11:06 в JMeter - Тестирование производительности

Ну хорошо, а от какого юзера вы запускаете руками jmeter? А когда крон запускается?

Возможно, надо явно указать крону этого юзера?

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

Юзер один и тот же.
Других юзеров нет.
Нет необходимости тестировать само формирование заказа. Задача - создавать заказы каждый час. Мне просто нужны заказы в ночное время. 




#169739 Запуcк сценария по крону ubuntu

Отправлено автор: SergeyQA 28 ноября 2018 - 08:57 в JMeter - Тестирование производительности

Как вы проверяете что заказ создался?

Надо добавлять какой-нить ассерт в ответе от сервера при отправке запроса на создание, у вас это есть в самом тесте? Что возвращает сервер если заказ не создался?

Вы проверили вариант если что-то некорректно в запросе на создание?

Я могу убедиться в корректности сценария путем проверки сформировавшегося заказа в административной панели.
Когда я запускаю сценарий в GUI или вручную в консоли в режиме noGUI, то вижу что заказы создались в админке.
Когда запускаю по крону, заказы не формируются (в админке нет записи о заказе).




#169695 Запуcк сценария по крону ubuntu

Отправлено автор: SergeyQA 26 ноября 2018 - 15:38 в JMeter - Тестирование производительности

Здравствуйте!
Столкнулся с проблемой. Есть задача запускать сценарий по крону (создание заказа).
Научился запускать из консоли в режиме nonGUI. Все работает, заказ создается.
Но по крону не хочет создавать заказ. Весь инет перерыл, но только зарылся, как мне кажется.
Запуск по крону произвожу на локальной машине. Никаких удаленных серверов и тому подобное. Простой крон.

 

* * * * * cd /home/TESTNAME/apache-jmeter-5.0/bin && jmeter -n -t /home/TESTNAME/Order_to_shop1004_authorization_preprod1_new.jmx -l /home/file_test.log

В логе вижу следующее:
 

Creating summariser <summary>
Created the tree successfully using /home/TESTNAME/Order_to_shop1004_authorization_preprod1_new.jmx
Starting the test @ Mon Nov 26 18:04:02 MSK 2018 (1543244642178)
Waiting for possible shutdown message on port 4455
summary +      1 in     1s =    1,7/s Avg:   578 Min:   578 Max:   578 Err:     0 (0,00%) Active: 1 Started: 1 Finished: 0
summary +      6 in     2s =    4,0/s Avg:   241 Min:    62 Max:   567 Err:     0 (0,00%) Active: 0 Started: 1 Finished: 1
summary =      7 in   2,1s =    3,3/s Avg:   289 Min:    62 Max:   578 Err:     0 (0,00%)
Tidying up ...    @ Mon Nov 26 18:04:04 MSK 2018 (1543244644889)
... end of run

Заказ по сценарию не создается... 
Jmeter GUI закрыт. Никаких графиков в сценарии нет.
Ubuntu 16.04
Jmeter 5.0 GUI
jmeter в консоли имеет версию 2.11.20151206 (что-то мне подсказывает, что здесь что-то не так)
Подскажите кто чем может!




#169153 Simple data writer при консольном запуске Jmeter (NonGUI)

Отправлено автор: SergeyQA 26 октября 2018 - 19:59 в Тестирование производительности

Всем доброго времени суток!
У меня есть задача написать сценарий авторизации и дальнейших действий по оформлению заказов с записью номеров заказов в файл со страницы success page.
С этой задачей я успешно справился: сценарий работает, заказы оформляются, номера заказов выцепляю экстрактором и записываю файл.
Но теперь мне необходимо это автоматизировать.
В задумке поставить на крон запуск сценария в NonGUI режиме. 
В самом простом варианте у меня получается это сделать, сценарий запускается. 
Но я столкнулся с двумя проблемами.
1. При консольном запуске, файл (Simple data writer) с  заказами создается, но туда ничего не записывается (в админке сайта вижу, что заказы создаются). Нужно чтобы номера заказов были в файле.
2. Необходимо, чтобы при каждом запуске имя файла с записанными номерами всегда менялось (новый запуск - новый файл с заказами). Например, первый - file_order1.csv, второй file_order2.csv

Так я запускаю свой сценарий в NonGUI режиме: jmeter -n -t /home/Order_to_home_authorization_test.jmx -l /home/file_test.jtl

Подскажите, как можно решить мои вопросы? Может есть какие-то альтернативы?
Я бы мог написать этот сценарий на питоне, но уже много чего завязано на сценарии в Jmeter, к тому же на это потребуется время.
Заранее спасибо!


 




#166336 Что лучше использовать для тестирования REST сервисов?

Отправлено автор: SergeyQA 25 мая 2018 - 09:12 в Автоматизированное тестирование

Коллеги, всем привет! Дабы не плодиться темами, напишу сюда свой вопрос, ибо тема вроде подходит)
Пишу автотесты для API мобильного приложения на Питоне.
Не было проблем ни с одним из методов, пока дело не дошло до метода PUT.
Всю голову поломал, все наверно перепробовал. К сути.
Есть метод добавления товара в корзину. В постмене все работает замечательно. 
Как верно написать метод на питоне с помощью библиотеки requests (ну или другой).

Вот моя функция.

 

    def add_product_to_cart(self, product_id):
        url = 'url_method/' + str(product_id)
        headers = {"access_token": access_token}
        body= {"qty": 1} #кол-во добавляемых товаров

        r = requests.put(url, data=body, headers=headers).json()
        print(r)

В разных вариациях запроса, играясь с headers и body, в ответе я получаю две вещи: либо исключение, что ожидается json, но в ответе не json (действительно, ответ приходит в виде html), либо то, что не  получен авторизационный токен (этот ответ приходит в формате json).
Уточню, что body нужно передавать в виде x-www-form-urlencoded
Пример запроса в постмане (к сожалению не могу все показать, попаду под неразглашение) 
http://joxi.ru/xAeBRKMtppQwKr
 http://joxi.ru/brRKk9ZcJJjXem
Как правильно написать код, чтобы токен все же передался? 
Подскажите, пожалуйста! 

 




#164766 Парсинг XML

Отправлено автор: SergeyQA 09 февраля 2018 - 15:06 в Автоматизированное тестирование

Ребят, всем спасибо за помощь!
Получилось. Использовал lxml библиотеку. Потратил полдня, но добился того результата, которого хотел.
Вот что вышло:

# -*- coding: utf-8 -*-
from lxml import etree


file_msk_path = open('D:\Download\makecont_0.xml', 'rb').read()
def parseXML(xmlFile):
    """
    Парсинг XML
    """
    root = etree.fromstring(file_msk_path)
    tag_offer = root.findall('.//offer')

    #Поиск дочернего тега oldprice в родительском теге offer
    for child in tag_offer:
        for i in child.getchildren():
            if i.tag == 'oldprice' in i.tag:  # Если в offer есть тег oldprice,
                price = float(i.text)
                oldprice = float(child.getchildren()[1].text)
                sales = (price/oldprice)*100 - 100  # то сравнивать значение тега price и oldprice (отношение в %)
                if sales < 5:
                    print('Offer ID: ' + child.get('id'), '=>', 'Новая цена', i.text,', ',
                          'Старая цена', child.getchildren()[1].text, ', ''Скидка: ', str(round(sales, 1)) + "%")

if __name__ == "__main__":
        parseXML(file_msk_path)

Вывод:
 

Offer ID: 15926 => Новая цена 13100.00 ,  Старая цена 12980.00 , Скидка:  0.9%
Offer ID: 15970 => Новая цена 400.00 ,  Старая цена 390.00 , Скидка:  2.6%
Offer ID: 16000 => Новая цена 1040.00 ,  Старая цена 1020.00 , Скидка:  2.0%
Offer ID: 25748 => Новая цена 2535.00 ,  Старая цена 2449.00 , Скидка:  3.5%



#164725 Парсинг XML

Отправлено автор: SergeyQA 08 февраля 2018 - 12:29 в Автоматизированное тестирование

minidom весьма прожорливая до памяти библиотека и, имхо, не очень удобная. Попробуйте lxml

Обойдите дерево тэгов, если внутри корневых тэгов встречается тэг oldprice, ищите там price и делайте нужную проверку.

Спасибо, посмотрю в эту сторону!




#164716 Парсинг XML

Отправлено автор: SergeyQA 07 февраля 2018 - 19:57 в Автоматизированное тестирование

Идеологически, вам надо вычленять список офферов, из него дропать все что не имеет oldprice и с тем что осталось уже работать.

Да, в том и вопрос. Я не знаю как сделать проверку на наличие тега oldprice в теге offer. Технически не понимаю как это сделать. То есть типа как пройтись циклом по списку надо, но только для дочерних тегов тега offer.


         
    




#164711 Парсинг XML

Отправлено автор: SergeyQA 07 февраля 2018 - 14:31 в Автоматизированное тестирование

Всем привет! Очень удачно сразу попалась тема парсинга xml)
У меня такой вопрос к коллегам по Python и библиотекам парсинга XML. 
Потребовалось написать скрипт, который проходится по файлу и сравнивает две цены у всех товаров - новую и старую (price и oldprice). Моя задача понять, что эти цены  отличаются минимум на 5%. Если отличие меньше, то это ошибка, потому что тег oldprice, в таком случае, выводиться в фид не должен.
Порылся на просторах интернета на тему библиотек xml питона. Приглянулась стандартная xml.minidom.
Что сделал. Я смог получить атрибут цены и получил два списка каждой цены.
Но элементы этих списков нельзя сравнивать, т.к. oldprice встречается не у каждого товара (примерно у трети товаров).
То есть, по хорошему, мне нужно проверять для каждого товара, наличие в нем дочернего товара oldprice. И если таковой имеется, то сравнить цену  price и oldprice (или создать два списка и потом их сравнить поэлементно).

Я застрял на том, то не знаю как мне понять, есть ли тег oldprice в <offer></offer>. Как можно это реализовать? Есть какие-то методы, которые выдают вложенные теги? Или типа того..
Буду рад любым ответам, но хорошо бы найти решение в рамках одной библиотеки, которую я использую.

Пример XML:
 

<offer available="true" id="580">
        <url></url>
        <oldprice>13870.00</oldprice>
        <price>13801.00</price>
        <currencyId>RUR</currencyId>
        <categoryId type="Own">14102</categoryId>
        <picture></picture>
        <delivery>true</delivery>
        <local_delivery_cost>650</local_delivery_cost>
        <param name="Условия доставки">A</param>
        <name>Бассейн каркасный INTEX 56942</name>
        <description>&amp;nbsp;Реальный цвет может отличаться от представленного на сайте, ввиду различных настроек монитора.</description>
        <vendor></vendor>
        <delivery-condition>A</delivery-condition>
        <country_of_origin>Китай</country_of_origin>
      </offer>
      <offer available="true" id="585">
        <url></url>
        <price>453.00</price>
        <currencyId>RUR</currencyId>
        <categoryId type="Own">14102</categoryId>
        <picture></picture>
        <delivery>true</delivery>
        <local_delivery_cost>650</local_delivery_cost>
        <param name="Условия доставки">A</param>
        <name>Тент для бассейна INTEX 366*366см</name>
        <description>Защитное покрытие для каркасного бассейна 366х25см. Материалы: полимерные материалы. Реальный цвет может отличаться от представленного на сайте, ввиду различных настроек монитора.</description>
        <vendor></vendor>
        <delivery-condition>A</delivery-condition>
        <country_of_origin>Китай</country_of_origin>
      </offer>

Пример моего кода:
 

from xml.dom import minidom
xml_path = minidom.parse('../exemple.xml')

price_list = xml_path.getElementsByTagName('price') #получаю словарь из price
price_items_list = []
for price in price_list:
    price_items_list.append(price.childNodes[0].nodeValue) #добавляю в изначально пустой список значения тега price

oldprice_list = xml_path.getElementsByTagName('oldprice')
oldprise_item_list = []
for oldprice1 in oldprice_list:
    oldprise_item_list.append(oldprice1.childNodes[0].nodeValue)

print(price_items_list) #['13801.00', '453.00', '621.00', '1561.00', '117.00', '14701.00',...] 
print(oldprise_item_list) #['13801.00', '453.00', '600.00', '1561.00', '2500.00', '14701.00',...]







#164639 Немного философски о багах и ошибках

Отправлено автор: SergeyQA 04 февраля 2018 - 12:22 в Про тестирование обо всём подряд

Как вариант "unresolved" - нерешенный.

Мне нравится! Надо предложить вариант.




#164636 Немного философски о багах и ошибках

Отправлено автор: SergeyQA 03 февраля 2018 - 19:10 в Про тестирование обо всём подряд

А вы уверенны, что вам нужно отличать эту задачу от задач которые висят на разработчике и за которые он еще не брался совсем?

http://blog.shumoos.com/archives/324

Спасибо за статью!
Да, нам нужно различать. Как минимум для внутренней метрики. 




#164632 Немного философски о багах и ошибках

Отправлено автор: SergeyQA 03 февраля 2018 - 08:43 в Про тестирование обо всём подряд

Это то, что в английском варианте называется "Reopened"?

Думаю, что не совсем так. Reopened - это когда баг воспроизвелся после того, как задача получила статус Closed (или, возможно, Canceled).
В моем случае задача просто не прошла тест и я ее вернул разработчику.
То есть у задачи были такие статусы: .... "В работе" (на разработчике) -> Тестирование (на тестировщике, задача не прошла тест) ->*НУЖНЫЙ СТАТУС* (на разработчике) - "В работе" (на разработчике) ... 




#164630 Немного философски о багах и ошибках

Отправлено автор: SergeyQA 02 февраля 2018 - 18:01 в Про тестирование обо всём подряд

Ребят, всем привет!
В моей компании переходят на новую багтрекинговую систему. Мы пытаемся придумать название статусу задачи, которая не прошла тест и возвращена разработчику. При этом разработчик к ней не приступил и занимается другими делами. 
Требование: 1. слово на русском. 2. Одно слово (допускается предлог). 3. Статус задачи подразумевает, что задача не в работе, но находится у разработчика.
Например, "Доработка", "Отладка" не подходят, т.к. в настоящий момент времени задача не в работе. Пока самый подходящий вариант - это "Возвращена". Но мне слух режет немного.
Поделитесь опытом или предложите вариант. Спасибо   :smile:




#164629 Мудрость тестировщика

Отправлено автор: SergeyQA 02 февраля 2018 - 17:54 в Про тестирование обо всём подряд

Здорово)





Яндекс.Метрика
Реклама на портале