it
C# MAUI กับ Load Testing Strategy — วิธีพัฒนา

.NET MAUI Cross-platform Development

.NET MAUI เป็น Framework สร้าง Cross-platform Apps ด้วย C# จาก Codebase เดียว รันบน Android, iOS, macOS และ Windows ใช้ MVVM Pattern แยก UI ออกจาก Business Logic ทดสอบได้ง่าย
Load Testing เป็นส่วนสำคัญก่อน Release App ทดสอบว่า Backend API รองรับผู้ใช้จำนวนมากได้ วัด Response Time, Throughput หา Bottleneck แก้ไขก่อน Go-live

CI/CD Pipeline สำหรับ MAUI + Load Testing
# === GitHub Actions — MAUI Build + Load Test ===
# .github/workflows/maui-loadtest.yml
name: MAUI Build & Load Test
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build-android:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Install MAUI Workload
run: dotnet workload install maui-android
- name: Restore
run: dotnet restore
- name: Build Android
run: |
dotnet build -c Release -f net8.0-android \
/p:AndroidKeyStore=true
- name: Run Unit Tests
run: dotnet test tests/ --no-build -c Release
load-test:
runs-on: ubuntu-latest
needs: build-android
steps:
- uses: actions/checkout@v4
- name: Start API Server
run: |
docker compose -f docker-compose.test.yml up -d
sleep 10
- name: Install k6
run: |
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg \
--keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D68
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | \
sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update && sudo apt-get install k6
- name: Smoke Test
run: k6 run --vus 5 --duration 30s tests/load/smoke.js
- name: Load Test
run: k6 run tests/load/load-test.js
- name: Upload Results
uses: actions/upload-artifact@v4
with:
name: load-test-results
path: load-test-results.json
- name: Stop API Server
run: docker compose -f docker-compose.test.yml down
Best Practices
- MVVM Pattern: ใช้ MVVM แยก UI ออกจาก Logic ทดสอบ ViewModel ด้วย Unit Tests
- CommunityToolkit.Mvvm: ใช้ Source Generators ลด Boilerplate Code
- HttpClient Singleton: ใช้ HttpClient เป็น Singleton ผ่าน DI ไม่สร้างใหม่ทุกครั้ง
- Load Test Scenarios: ทำ Smoke, Load, Stress, Spike Tests ครบทุกแบบ
- Thresholds: ตั้ง Thresholds ให้ P95 < 500ms, Error Rate < 5%
- CI/CD Integration: รัน Load Test ใน CI/CD Pipeline ทุก Release
.NET MAUI คืออะไร
Framework จาก Microsoft สร้าง Cross-platform Apps ด้วย C# XAML รัน Android iOS macOS Windows จาก Codebase เดียว ต่อจาก Xamarin.Forms Performance ดีขึ้น Hot Reload .NET 8+





