با پیچیدهتر شدن اپلیکیشنها، اجرای تست دستی دیگر کارآمد نیست. تست خودکار (Automated Testing) به یکی از ستونهای اصلی در چرخه توسعه نرمافزار تبدیل شده است. در این میان، ابزارهایی مثل Docker به توسعهدهندگان کمک میکنند تا محیطهای تست را سریع، ایزوله و تکرارپذیر بسازند.
در این مقاله، از مفاهیم اولیه تست خودکار و داکر شروع میکنیم و تا اجرای عملی تست اپلیکیشنهای اندروید یا وب در محیطهای کانتینریشده پیش میرویم.
چرا تست خودکار؟
تست خودکار یعنی اجرای تستها توسط اسکریپت یا نرمافزار، بدون دخالت انسان.
مزایا:
- اجرای سریعتر و دقیقتر
- کاهش خطاهای انسانی
- امکان تست در طول چرخه CI/CD
- افزایش کیفیت نهایی محصول
چرا Docker؟
Docker این امکان را فراهم میکند که برنامه را در یک محیط ایزوله اجرا کنیم؛ دقیقاً مثل یک ماشین مجازی، اما با مصرف منابع بسیار کمتر.
مزایای استفاده از Docker برای تست:
- ساخت محیط تست یکسان در تمام سیستمها
- حذف مشکل «روی سیستم من کار میکنه!»
- اجرای همزمان چند نسخه از اپلیکیشن یا سرویس
- ادغام آسان با Jenkins، GitHub Actions، GitLab CI و…
ساختار کلی تست خودکار با Docker
- نوشتن اسکریپت تست
- ساخت Dockerfile برای آمادهسازی محیط
- اجرای تستها در کانتینر
- دریافت لاگها و نتایج
- (اختیاری) اجرای تست در لوله CI/CD
مراحل گامبهگام: اجرای تست در Docker
مرحله 1: آمادهسازی اسکریپت تست
فرض کنید میخواهید یک تست ساده برای یک اپلیکیشن وب یا API انجام دهید. فایل تست شما ممکن است با ابزارهایی مثل pytest، Jest یا Selenium نوشته شده باشد.
مثال برای pytest:
# test_api.py
def test_homepage():
response = requests.get("http://localhost:8000")
assert response.status_code == 200
مرحله 2: نوشتن Dockerfile
در این مرحله، محیطی میسازیم که شامل زبان برنامهنویسی، ابزار تست و اپلیکیشن باشد.
مثال (Python + Pytest):
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["pytest", "--maxfail=1", "--disable-warnings"]
مرحله 3: اجرای تست در کانتینر
docker build -t my-app-test .
docker run --rm my-app-test
اگر همهچیز درست باشد، خروجی تستها را در ترمینال خواهید دید.
مرحله 4: اجرای تستهای پیشرفته
اگر اپلیکیشن شما نیاز به دیتابیس، سرویس خارجی یا محیط خاصی دارد، میتوانید از docker-compose استفاده کنید.
مثال:
version: '3'
services:
web:
build: .
ports:
- "8000:8000"
tests:
build:
context: .
dockerfile: Dockerfile.tests
depends_on:
- web
مرحله 5: ادغام با CI/CD
برای تست خودکار در زمان هر Commit، میتوانید در پلتفرمهایی مثل GitHub Actions این تست را اجرا کنید.
نمونه ساده فایل .github/workflows/test.yml:
name: Run Tests
on:
push:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build and run tests
run: |
docker build -t my-app-test .
docker run --rm my-app-test
اجرای تست اپلیکیشن اندروید با Docker
برای تست اپلیکیشنهای اندروید، ابزارهایی مثل android-emulator, Appium, Firebase Test Lab, یا سرویسهای ابری اختصاصی بهتر هستند. ولی برای تستهای Back-End اپ اندروید یا لایههای API، Docker بهترین انتخاب است.
مزایا و معایب تست در Docker
مزایا:
- تکرارپذیری بالا
- حذف وابستگی به سیستم میزبان
- اجرا در محیط CI/CD
- سرعت در اجرای چند تست همزمان
معایب:
- نیاز به یادگیری مفاهیم کانتینر
- دشوار بودن اجرای UI Tests سنگین (مگر با تنظیمات خاص)
- در شبیهسازی سختافزار محدودتر از ماشین واقعی
جمعبندی
تست خودکار اپلیکیشنها با استفاده از Docker یک روش مدرن، قابل اطمینان و مقیاسپذیر است. اگر به دنبال افزایش سرعت توسعه، کاهش خطا و داشتن محیطی پایدار هستید، ترکیب Docker + تست خودکار + CI/CD، دقیقا همان چیزیست که نیاز دارید.
پلتفرم ما نیز در تلاش است بهزودی با ارائه محیطی داکریشده و قابل تنظیم، فرآیند تست اپلیکیشنهای اندروید و iOS را بیش از پیش ساده و حرفهای کند.

