Test Engineering Notes
3.81K subscribers
177 photos
2 videos
647 links
Україномовний канал про технічні аспекти тестування, розподілені системи, блокчейн.

Консультації з автоматизації, менторинг, тестові співбесіди - @al8xr
Download Telegram
Python crash course для новачків

#python #beginner

Для тих, хто "входить" в Python не з повного нуля, маю дуже корисний ресурс.
Beginner Python cheat sheet - це цілий PDF з усіма базовими аспектами синтаксису, тестування, бібліотеками та навіть трошки фреймворком Django. Може стати у пригоді коли ви будете готуватися до співбесіди.

Взагалі це компіляція понять з книги Python Crash Course. Для книги є навіть окрема сторінка з усіма ресурсами, завданнями та іншим.

А поки, я шукаю (та знаходжу) книги з Python для рівня intermediate. (Де б було щось, окрім базового синтаксису)
Може у вас є рекомендації?
👍17🔥41👏1
Візуалізуємо виконання коду - без реєстрації та смс

#python #learning #junior

Всім привіт.

Коли ти вчиш свою першу мову програмування буває складно зрозуміти, що відбувається "під капотом" того чи іншого шматка коду. Авжеж можна (та й треба) дебажити.

Але я пропоную поглянути на інший спосіб візуалізації коду - це PythonTutor.
Підтримується не тільки Python, але й Java, JS (трохи куцо, але маємо те шо маємо).
Цей сайт буде корисним усім менторам та тим людям, що викладають мови програмування.
👍142
Які є інструменти для автоматизації в ...

#testing #python #java #tools

Доброго ранку.
Коли ми тільки знайомимось з автоматизацією, або ж переходимо з однієї мови програмування в іншу - постає багато питань.
- Яку бібліотеку для ассертів взяти в мові Х?
- Які є альтернативи бібліотеці репортів у мові У?
- Чи є BDD інструмент для мови …?
- Та інше …

Авжеж можна запитати в каналі чи в чатах тест інженерів. Але мені допомагають списки типу awesome-X. У них хтось дуже добрий вже зібрав купу інструментів та виклав у публічний доступ.

Які списки використовую я сам:
- awesome-test-automation від atinfo. Є для багатьох мов програмування - у тому числі - Java, Python, JS.
- awesome-python-testing - лист інструментів для Python.
- java-testing-toolbox - набір прикладів з книги “30 Testing Tools & Libraries Every Java Developer Must Know”. (Знайшов цього тижня, але виглядає непогано для початківців).

Для інших технологій та мов програмування, можна пошукати списки awesome списки на GitHub.
👍314🔥2
Приховане перетворення даних в grpcui та k6

#testing #api #tools #python

Ситуація
Для одного з наших gRPC сервісів нам потрібно відправити hash у форматі HEX. Але коли я намагався відправити запит за допомогою grpcui або ж у скрипті навантаження k6 - сервер повертав помилку, що такий хеш не знайдений в нашій базі.

Задача
Треба було розібратись, у чому причина перетворення даних - та де криється проблема. Бо сервіс точно працював правильно.
Значить проблема в роботі інтрументів ...

Рішення
Як виявилося - обидва інструменти очікують вхідні дані в base64. Потім вони декодують ці дані та надсилають результат на сервер.
В Python з base64 працювати дуже легко. То ж у нагоді стане наступний скрипт.

import base64


def from_b64_to_hex(input):
binary_data = base64.b64decode(input)
return binary_data.hex()


def from_hex_to_b64(input):
binary_data = bytes.fromhex(input)
return base64.b64encode(binary_data).decode()


base64_string = "LxTKPCw9jAv1U8Xm6lxjhtGlnoZzNPc6I="
hex_string = "2f14ca3c2c3d880653b15e6ea5c6386d1a59e867334f73a2"

assert hex_string == from_b64_to_hex(base64_string)
assert base64_string == from_hex_to_b64(hex_string)


І ще одне

Крім цього скрипта, можна скористатись також безкоштовним онлайн конвертером.
17👍4
Python Big O: the time complexities of different data structures in Python

#python #algo

Для тих, кому було цікаво розібратись яка складність (за часом виконання) в структурах даних Python.
👍14
50 shades of Fibonacci

#coding #interview #python

Одна з найчастіших задач, яку дають на перевірку навичок програмування автоматизатора на співбесіді - це обчислення послідовності Фібоначчі.

Для тих, хто забув - це послідовність типу 0, 1, 1, 2, 3, 5, 8, 13, 21, ..., що описується формулою:
F(n) = F(n-1) + F(n-2), де F(0) = 0 та F(1) = 1.

Виявляється, одну й ту саму задачу можна вирішити по-різному. Кожне рішення покаже ваш рівень розуміння задачі, мови програмування та тестування негативних кейсів.

Перед тим, як дивитись приклади - пропоную самим спробувати написати код.

1. Простий та наївний підхід - обчислюємо так, як написано у формулі (з рекурсією):
def fib(n: int) -> int:
return fib(n-1) + fib(n-2)


Але тут можна легко отримати RecursionError: maximum recursion depth exceeded

2. Покращуємо код, додаючі перевірку базових кейсів:
def fib(n: int) -> int:
if n < 2:
return n
return fib(n-1) + fib(n-2)


3. Можна також застосувати техніку мемоїзації (тобто замість обчислень знову й знову - запам'ятовуємо проміжні результати):
from typing import Dict

memo: Dict[int, int] = {0: 0, 1: 1}
def fib(n: int) -> int:
if n not in memo:
memo[n] = fib(n - 1) + fib(n - 2)
return memo[n]


4. Мемоїзація також є "вбудована" в сам Python:
from functools import lru_cache

@lru_cache(maxsize=None)
def fib(n: int) -> int:
if n < 2:
return n
return fib(n - 1) + fib(n - 2)


5. Замість рекурсії - можна вирішити задачу з циклом:
def fib(n: int) -> int:
if n == 0:
return n
last: int = 0
next: int = 1
for _ in range(1, n):
last, next = next, last + next
return next


P.S. Можна ще обчислити за допомогою генераторів, але цей спосіб розберемо в наступних нотатках.
👍35❤‍🔥41🥴1