Recap Series
- Session 02: AWS Compliance with Terraform
- Session 03: Beginner to Builder: An Awesome Cloud Journey
- Session 04: Team-First Serverless Engineering with Laravel and Bref
- Session 05: Event Opening: AWS Community Day Hong Kong 2025
- Session 06: Agent-to-Agent: Building Interoperable AI on AWS
- Session 07: Utilize Another Telemetry Data for Faster Improvement with AI Agent
- Session 08: Graduating from Vibe Coding: Spec-Driven Development with Kiro
- Session 09: Automated Testing using MCP and AI Agents
- Session 10: Modernizing Telecom Security: ML Powered Approach
- Session 11: Rethinking GenAI Agent: RAG and MCP
- Session 12: Disaster and Emergency Response with TAK and AWS
- Session 13: Rethinking Serverless Application Workflows from a Testing Perspective
- Session 14: Practical AWS FinOps for Cloud Success
Yugto 1: Mga Kinakailangan
Pangkalahatang-ideya ng Architecture
- Batch processing workflow na gumagamit ng AWS Lambda at Step Functions.
- Tatlong state na magkakasunod sa isang tuwid na linya.
- May mga unit test para sa bawat Lambda function, ngunit manual ang testing sa Step Functions workflow.
Mga Layunin sa Testing
- I-automate ang testing ng Step Functions workflow.
- Tiyaking tumutugma ang mga input at output value sa mga inaasahang value.
- Isama ang mga test sa CI/CD pipeline gamit ang GitHub Actions.
- Iwasang mag-deploy sa isang tunay na AWS environment para sa testing.
Yugto 2: Plano
Mga Tool at Teknolohiya
- Step Functions Local: Para sa lokal na pagpapatakbo at testing ng Step Functions.
- GitHub Actions: Para sa pag-automate ng CI/CD workflow.
- Localstack o katulad nito: Upang lokal na i-simulate ang AWS Lambda.
GitHub Actions Workflow
- Mag-set up ng workflow upang magpatakbo ng mga test sa tuwing may push o pull request.
- Gamitin ang Step Functions Local Docker image para sa lokal na testing environment.
- Gamitin ang Localstack para sa simulation ng Lambda.
- https://www.localstack.cloud/
- I-import ang Step Functions definition at lokal na patakbuhin ang workflow.
- I-verify ang mga input at output value ng bawat state.
Mga Hakbang sa Workflow
- [ 1 ] Simulan ang mga Container:
- I-pull at simulan ang Step Functions Local Docker image.
- I-set up ang Localstack para sa simulation ng Lambda.
- [ 2 ] I-import ang Step Functions Definition:
- I-import ang state machine definition sa lokal na environment.
- [ 3 ] Patakbuhin ang Workflow:
- I-trigger ang Step Functions workflow gamit ang lokal na endpoint.
- [ 4 ] I-validate ang mga Resulta:
- Ihambing ang mga input at output value sa mga inaasahang value.
- [ 5 ] Iulat ang mga Resulta:
- Bumuo ng report o status na nagsasaad kung pumasa o nabigo ang test.
Paano I-test ang Serverless Architecture?
Panimula
- Nagbibigay ang serverless architecture ng mahahalagang benepisyo at nagbibigay-daan sa mabilis na paghahatid ng halaga sa mga customer.
- Nakatuon dito ang pagtalakay sa pananaw ng testing, sa halip na sa performance o gastos ng system.
Bakit Natin Kailangan ang Testing?
- Tinutulungan tayo ng testing na maunawaan, mahulaan, at makontrol ang gawi ng system.
- Nagbibigay-daan ito upang matukoy at masukat natin ang mga panganib sa system.
- Tinutulungan tayo ng pagsusulat ng mga test na mas maunawaan ang mga kinakailangan.
- Tinitiyak ng testing na mauulit at maipaliliwanag ang mga resulta.
- Pangunahing layunin ng testing na bawasan ang mga hindi pa natutukoy na panganib.
Mga Uri ng Test
- Mga Unit Test: Sinusuri ang mga indibidwal na component o function nang hiwalay.
- Mga Integration Test: Sinusuri ang interaksiyon ng pinagsamang mga component.
- Mga Logic Test: Tinitiyak ang kawastuhan ng business logic.
- Mga Workflow Test: Sinusuri ang end-to-end na daloy ng isang proseso o workflow.
- Mga API Test: Sinusuri ang functionality at reliability ng mga API.
Rekomendasyon
- Mahalagang malaman ang iba't ibang uri ng test pati ang kani-kanilang gamit at layunin.
- Makakatulong ang pag-unawa sa mga uri ng test na ito sa pagdisenyo ng mga mabisang estratehiya sa testing para sa mga serverless architecture.
Paghiwalayin ang Processing para sa Mas Madaling Testing
Mahahalagang Punto
- Mga Unit na Madaling I-test: Mas madaling maunawaan ang mga unit na madaling i-test.
- Kalinawan ng System: Kapag dinisenyo ang isang system na may magkakahiwalay at masusuring unit, likas nitong ipinakikita kung ano, kailan, at bakit nito ginagawa ang isang bagay.
- Pag-iwas sa Pagiging Kumplikado: Kung mahirap i-test ang isang bagay, malamang na napakaraming responsibilidad at lohika ang nakasentro sa iisang lugar.
Paghahambing ng mga Halimbawa
- Hindi Angkop na Architecture: Isang Lambda function ang kumukuha ng data mula sa ibang mga server at nagpoproseso/nag-iimbak nito sa DynamoDB.
- Tamang Architecture: Magkahiwalay na Lambda function para sa bawat operasyon (pagkuha ng data at pagproseso/pag-iimbak ng data).
Mga Benepisyo ng Paghihiwalay
- Mas madaling i-test nang hiwalay ang bawat bahagi.
- Kapag nagkaroon ng error, mas madaling matukoy ang eksaktong lokasyon ng problema.
- Binabawasan ang oras mula sa paglitaw ng error hanggang sa pagtukoy at pag-aayos nito.
Pangkalahatang Prinsipyo
- Paghahati ng mga Method: Nalalapat sa iba't ibang programming language ang parehong prinsipyo ng paghahati ng mga method (hal., Python, Ruby, at Go).
- Maliliit na Unit: Tukuyin kung ano ang itinuturing mong maliliit at masusuring unit, at ilapat nang naaayon ang prinsipyong ito ng paghahati.
Pananaw ng Testing sa Pagdisenyo ng System
- Pagtukoy sa Mahihinang Bahagi: Mula sa pananaw ng testing, madaling matukoy ang mahihinang bahagi, gaya ng pagkakaroon ng napakaraming responsibilidad sa iisang lugar.
- Pagbawas sa Oras ng Pagtukoy ng Error: Nakakatulong ang mataas na testability na bawasan ang oras mula sa paglitaw ng error hanggang sa pagtukoy at pag-aayos nito, katulad ng pagpapaikli sa development cycle.
- Mabilis na Paghahatid: Nakatutulong ang mataas na testability sa mas mabilis na paghahatid ng system.
Mahahalagang Dapat Isaalang-alang sa Pagbuo ng Serverless Architecture mula sa Pananaw ng Testing
- Paghiwalayin ang Processing: Mas madaling maunawaan ang mga unit na madaling i-test. Nakakatulong ang paghihiwalay ng mga proseso na matukoy ang mahihinang bahagi at mabawasan ang oras ng pagtukoy ng error.
- Pag-iwas sa Pagiging Kumplikado: Nagiging mahirap ang testing kapag nakasentro sa iisang lugar ang responsibilidad at lohika. Paghiwalayin ang mga proseso upang gawing mas simple ang testing at troubleshooting.
- Mataas na Testability: Nakatutulong sa mas mabilis na paghahatid ng system at mas maiikling development cycle.
Pangwakas na Layunin
- Ang pangunahing layunin ng mga engineer ay maghatid ng halaga sa mga user.
- Laging isaisip ang halaga para sa user upang matiyak ang matagumpay na mga resulta.
- Hinihikayat ang talakayan at collaboration upang magbahagi ng mga insight at mapahusay ang mga kasanayan sa testing.
