it

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

c maui load testing strategy
C# MAUI กับ Load Testing Strategy — วิธีพัฒนา

.NET MAUI Cross-platform Development

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

.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

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

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+

XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง