Giới Thiệu AI Agent Đồng Hành: Tối Ưu Hóa Quy Trình Nghiệm Thu & Đảm Bảo Chất Lượng Phần Mềm
AI Agent đồng hành là các hệ thống AI tự động có khả năng thực hiện các tác vụ kiểm thử và đảm bảo chất lượng phần mềm (QA) một cách thông minh, giúp tối ưu hóa đáng kể quy trình nghiệp vụ. Bài viết về AI agent QA này sẽ giúp bạn hiểu rõ cách các tác nhân AI này hoạt động, lợi ích chúng mang lại, và làm thế nào để tích hợp chúng vào quy trình phát triển phần mềm của bạn. Trong bối cảnh phát triển phần mềm ngày càng nhanh chóng và phức tạp, việc đảm bảo chất lượng (QA) trở thành một thách thức lớn, đòi hỏi sự chính xác, tốc độ và khả năng thích ứng cao. Các giải pháp truyền thống thường tốn kém về thời gian và nguồn lực, đồng thời dễ mắc lỗi con người. Đây chính là lúc AI agent QA phát huy vai trò tối ưu của mình.

AI Agent QA là gì và tại sao nó lại quan trọng?
AI Agent QA là các chương trình máy tính thông minh sử dụng trí tuệ nhân tạo để tự động hóa, hỗ trợ và nâng cao các hoạt động kiểm thử và đảm bảo chất lượng phần mềm, từ việc tạo test case, thực thi kiểm thử, phân tích kết quả đến báo cáo lỗi. Sự quan trọng của AI agent QA nằm ở khả năng tăng tốc độ, độ chính xác và hiệu quả của quy trình QA, giảm thiểu chi phí và giải phóng nguồn lực con người cho các nhiệm vụ phức tạp hơn. Theo một nghiên cứu gần đây từ Forrester, các doanh nghiệp áp dụng AI trong QA có thể giảm 30-50% thời gian chu kỳ kiểm thử và giảm tới 40% chi phí liên quan đến lỗi phần mềm. Điều này đặc biệt có ý nghĩa trong các quy trình phát triển Agile và DevOps, nơi tốc độ và sự liên tục là yếu tố sống còn.

Các AI agent QA được thiết kế để học hỏi từ dữ liệu, thích nghi với các thay đổi và đưa ra quyết định thông minh mà không cần sự can thiệp liên tục của con người. Chúng có thể phân tích hàng triệu dòng mã, dự đoán các điểm yếu tiềm ẩn, và thậm chí tự động sửa chữa một số loại lỗi nhất định. Ví dụ, một AI agent có thể học cách người dùng tương tác với ứng dụng, sau đó tạo ra các kịch bản kiểm thử mô phỏng hành vi đó, giúp phát hiện các lỗi mà kịch bản kiểm thử thủ công có thể bỏ sót. Khả năng này không chỉ giúp cải thiện chất lượng sản phẩm mà còn nâng cao trải nghiệm người dùng cuối.
Một trong những ứng dụng nổi bật của AI agent QA là trong kiểm thử hồi quy (regression testing). Thay vì phải chạy lại hàng trăm hoặc hàng nghìn test case thủ công mỗi khi có thay đổi nhỏ, AI agent có thể tự động xác định những phần nào của ứng dụng bị ảnh hưởng bởi thay đổi và chỉ chạy các test case liên quan, tiết kiệm hàng giờ làm việc. Dữ liệu từ Capgemini cho thấy, việc tự động hóa kiểm thử hồi quy bằng AI có thể giảm thời gian kiểm thử từ vài ngày xuống chỉ còn vài giờ, đồng thời tăng độ bao phủ kiểm thử lên đến 90%.
Hơn nữa, AI agent QA còn đóng vai trò quan trọng trong việc phân tích nguyên nhân gốc rễ (root cause analysis) của các lỗi. Khi một lỗi được phát hiện, AI có thể quét qua nhật ký hệ thống, mã nguồn và các thay đổi gần đây để pinpoint chính xác nguyên nhân, giúp developer sửa lỗi nhanh hơn. Điều này không chỉ đẩy nhanh quá trình sửa lỗi mà còn cung cấp thông tin chi tiết để ngăn chặn các lỗi tương tự xảy ra trong tương lai. Sự kết hợp giữa tốc độ, độ chính xác và khả năng học hỏi đã biến AI agent QA trở thành một công cụ không thể thiếu trong bộ công cụ của bất kỳ đội ngũ phát triển phần mềm hiện đại nào.
Hướng dẫn triển khai AI Agent QA trong quy trình của bạn
Việc triển khai AI agent QA đòi hỏi một kế hoạch rõ ràng và từng bước để đảm bảo tích hợp hiệu quả vào quy trình phát triển hiện có. Đầu tiên và quan trọng nhất, hãy bắt đầu với một dự án thử nghiệm nhỏ để đánh giá hiệu quả và điều chỉnh chiến lược. Xác định các khu vực có thể hưởng lợi nhiều nhất từ tự động hóa AI, chẳng hạn như kiểm thử hồi quy, kiểm thử hiệu năng, hoặc phân tích nhật ký lỗi. Mục tiêu là để AI agent QA có thể tự động hóa một phần đáng kể các tác vụ lặp đi lặp lại và tốn thời gian.

Bước 1: Lựa chọn công cụ và nền tảng phù hợp. Có nhiều công cụ và framework AI agent QA trên thị trường, từ các giải pháp mã nguồn mở đến các nền tảng thương mại. Các lựa chọn phổ biến bao gồm Selenium kết hợp với các thư viện AI/ML như scikit-learn hay TensorFlow để phân tích dữ liệu kiểm thử, hoặc các nền tảng chuyên biệt như Applitools, Testim.io sử dụng AI để kiểm thử giao diện người dùng (UI) và tự động tạo test case. Việc lựa chọn phụ thuộc vào ngôn ngữ lập trình, kiến trúc ứng dụng và ngân sách của bạn.
# Ví dụ cơ bản về việc sử dụng một thư viện AI để phân tích kết quả kiểm thử
# Giả sử chúng ta có một tập dữ liệu lỗi và đặc điểm test case
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# Dữ liệu mẫu (trong thực tế sẽ phức tạp hơn)
data = {
'test_case_id': ['TC001', 'TC002', 'TC003', 'TC004', 'TC005'],
'module': ['Login', 'Cart', 'Login', 'Checkout', 'Cart'],
'severity': [1, 3, 2, 4, 1],
'is_bug': [0, 1, 0, 1, 0] # 1 nếu có lỗi, 0 nếu không
}
df = pd.DataFrame(data)
# Chọn các đặc trưng và nhãn
X = df[['severity']] # Ví dụ đơn giản, thực tế sẽ có nhiều đặc trưng hơn như 'module', 'test_type'
y = df['is_bug']
# Chia dữ liệu thành tập huấn luyện và tập kiểm tra
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Huấn luyện mô hình Random Forest
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# Dự đoán trên tập kiểm tra
y_pred = model.predict(X_test)
print(f"Độ chính xác của mô hình: {accuracy_score(y_test, y_pred):.2f}")
# Output: Độ chính xác của mô hình: 0.67 (ví dụ, với tập dữ liệu nhỏ này)
# Mô hình này có thể được mở rộng để dự đoán xác suất lỗi dựa trên các đặc trưng của test case.
Bước 2: Chuẩn bị dữ liệu kiểm thử chất lượng. AI agent học hỏi từ dữ liệu, vì vậy chất lượng của dữ liệu kiểm thử đầu vào là cực kỳ quan trọng. Đảm bảo rằng bạn có một kho lưu trữ các test case, nhật ký lỗi, và kết quả kiểm thử trước đây được ghi chép rõ ràng và có cấu trúc. Dữ liệu này sẽ được sử dụng để huấn luyện AI agent nhận diện các mẫu (patterns), dự đoán lỗi tiềm ẩn và tạo ra các kịch bản kiểm thử mới. Một bộ dữ liệu càng phong phú và chính xác, AI agent càng hoạt động hiệu quả.
Bước 3: Tích hợp vào CI/CD Pipeline. Để tối đa hóa lợi ích, AI agent QA cần được tích hợp liền mạch vào quy trình Tích hợp Liên tục/Triển khai Liên tục (CI/CD) của bạn. Điều này cho phép kiểm thử tự động được kích hoạt ngay lập tức sau mỗi lần commit mã nguồn mới, cung cấp phản hồi nhanh chóng cho các nhà phát triển. Một kịch bản phổ biến là khi mã được đẩy lên repository (ví dụ: GitHub), một webhook sẽ kích hoạt AI agent để chạy các kiểm thử liên quan, sau đó báo cáo kết quả trở lại cho nhóm thông qua các công cụ như Slack hoặc Jira.
# Ví dụ về một phần của kịch bản CI/CD sử dụng GitHub Actions để chạy kiểm thử tự động
# .github/workflows/main.yml
name: CI/CD Pipeline with AI QA Agent
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt # Bao gồm các thư viện kiểm thử và AI/ML
- name: Run AI-powered tests
run: |
python run_ai_qa_tests.py # Kích hoạt AI agent để chạy kiểm thử
env:
API_KEY: ${{ secrets.AI_AGENT_API_KEY }} # Các biến môi trường cần thiết
- name: Analyze test results
run: |
python analyze_test_results.py # AI agent phân tích kết quả và tạo báo cáo
if: always() # Luôn chạy bước này ngay cả khi các bước trước thất bại
- name: Report status to Jira
run: |
# Script để gửi kết quả kiểm thử và lỗi cho Jira
echo "Reporting results to Jira..."
# Ví dụ: curl -X POST ... Jira API ...
if: always()
Bước 4: Giám sát và Tối ưu hóa liên tục. Việc triển khai không phải là kết thúc. AI agent QA cần được giám sát hiệu suất liên tục, bao gồm độ chính xác trong việc phát hiện lỗi, thời gian thực thi kiểm thử và tỷ lệ lỗi sai (false positives/negatives). Sử dụng các công cụ phân tích để thu thập dữ liệu về hoạt động của AI agent và sử dụng dữ liệu đó để tinh chỉnh mô hình, cập nhật các quy tắc và cải thiện khả năng học hỏi của agent. Một chu trình phản hồi liên tục sẽ đảm bảo AI agent QA của bạn luôn hoạt động ở hiệu suất cao nhất.
Tips và Best Practices khi làm việc với AI Agent QA
Để tối đa hóa hiệu quả của AI agent QA, việc áp dụng các tips và best practices sau đây là rất quan trọng, giúp đảm bảo rằng bạn không chỉ triển khai công nghệ mà còn tận dụng tối đa tiềm năng của nó.

- Bắt đầu với các vấn đề kiểm thử rõ ràng và lặp lại: Không nên cố gắng giải quyết tất cả các vấn đề QA bằng AI ngay lập tức. Hãy tập trung vào các tác vụ lặp lại, tốn thời gian và có tính chất dự đoán được, ví dụ như kiểm thử hồi quy, kiểm thử hiệu năng cơ bản hoặc phân tích nhật ký lỗi. Điều này giúp bạn xây dựng kinh nghiệm và chứng minh giá trị của AI trước khi mở rộng.
- Đảm bảo chất lượng dữ liệu huấn luyện: AI agents phụ thuộc rất nhiều vào chất lượng dữ liệu mà chúng được huấn luyện. Dữ liệu lỗi, nhật ký kiểm thử và các kịch bản kiểm thử phải sạch, chính xác và đại diện cho các tình huống thực tế. Dữ liệu không chất lượng có thể dẫn đến các dự đoán sai lệch và giảm hiệu quả của agent.
- Kết hợp AI với kiểm thử thủ công và tự động hóa truyền thống: AI agent QA không phải là giải pháp thay thế hoàn toàn cho kiểm thử thủ công hoặc các kịch bản tự động hóa truyền thống. Thay vào đó, nó nên được coi là một công cụ bổ trợ mạnh mẽ. AI có thể phát hiện các mẫu, dự đoán lỗi, và tạo test case, nhưng con người vẫn cần thiết để thực hiện kiểm thử khám phá (exploratory testing), đưa ra các quyết định chiến lược và xử lý các trường hợp phức tạp, đòi hỏi sự sáng tạo.
- Huấn luyện lại mô hình định kỳ: Môi trường phát triển phần mềm thay đổi liên tục. Các tính năng mới được thêm vào, mã nguồn được cập nhật, và hành vi người dùng có thể thay đổi. Do đó, các mô hình AI agent cần được huấn luyện lại định kỳ với dữ liệu mới nhất để duy trì độ chính xác và khả năng thích ứng. Một chu trình huấn luyện lại hàng quý hoặc nửa năm là hợp lý.
- Thiết lập các chỉ số hiệu suất (KPIs) rõ ràng: Để đánh giá thành công của AI agent QA, hãy xác định các KPIs cụ thể như tỷ lệ phát hiện lỗi, thời gian chu kỳ kiểm thử, số lượng lỗi bị bỏ sót (escaped defects), và chi phí QA. Việc theo dõi các chỉ số này giúp bạn định lượng được lợi ích và điều chỉnh chiến lược khi cần.
- Xây dựng đội ngũ đa chức năng: Việc triển khai AI agent QA thành công đòi hỏi sự hợp tác giữa các kỹ sư QA, nhà khoa học dữ liệu, kỹ sư phần mềm và quản lý dự án. Mỗi vai trò mang đến một góc nhìn và kỹ năng cần thiết để thiết kế, triển khai và duy trì các hệ thống AI QA hiệu quả.
- Khám phá các công cụ AI-powered: Thay vì xây dựng mọi thứ từ đầu, hãy xem xét các công cụ QA đã tích hợp AI. Ví dụ, Applitools cho kiểm thử UI visual, Testim.io để tự động tạo và duy trì test case, hoặc Avo Automation để tự động hóa end-to-end với AI. Những công cụ này có thể giúp bạn nhanh chóng triển khai và thu được lợi ích.
- Sẵn sàng cho False Positives và False Negatives: Không có hệ thống AI nào là hoàn hảo. AI agent QA sẽ có lúc đưa ra các cảnh báo sai (false positives) hoặc bỏ sót lỗi (false negatives). Quan trọng là phải có quy trình để xem xét và tinh chỉnh mô hình dựa trên những trường hợp này, cải thiện độ chính xác theo thời gian.
So sánh AI Agent QA với các phương pháp QA truyền thống
AI agent QA vượt trội hơn các phương pháp QA truyền thống ở khả năng học hỏi, thích nghi và tự động hóa các tác vụ phức tạp, trong khi các phương pháp truyền thống thường dựa vào quy tắc cố định và sự can thiệp thủ công. Cụ thể, kiểm thử thủ công, mặc dù có lợi thế về khả năng khám phá và tư duy con người, lại tốn rất nhiều thời gian, dễ mắc lỗi và không thể mở rộng quy mô hiệu quả khi ứng dụng phát triển. Kiểm thử tự động truyền thống (scripted automation) giải quyết được vấn đề tốc độ và lặp lại, nhưng lại cứng nhắc, đòi hỏi bảo trì cao khi UI/logic thay đổi, và không thể tự tạo ra các test case mới mà không có sự lập trình rõ ràng.
Kiểm thử thủ công: Phương pháp này dựa vào con người để thực hiện các bước kiểm thử, quan sát hành vi ứng dụng và xác định lỗi.
- Ưu điểm: Khả năng khám phá cao, phát hiện các vấn đề về trải nghiệm người dùng (UX) và các lỗi nhỏ mà tự động hóa khó nhận diện.
- Nhược điểm: Tốn kém về thời gian và chi phí, dễ mắc lỗi con người, không thể mở rộng quy mô, và thiếu tính lặp lại chính xác. Khi một dự án có hàng nghìn test case, việc thực hiện thủ công trở thành một gánh nặng không tưởng, dễ dẫn đến bỏ sót lỗi và kéo dài chu kỳ phát hành.
Kiểm thử tự động truyền thống (Scripted Automation): Sử dụng các script được viết sẵn để thực thi các test case lặp lại.
- Ưu điểm: Tốc độ nhanh, tính lặp lại cao, giảm lỗi con người cho các tác vụ đã định nghĩa.
- Nhược điểm: Chi phí bảo trì script cao khi ứng dụng thay đổi, khó phát hiện các lỗi mới hoặc các trường hợp biên không được định nghĩa trước. Nó đòi hỏi kỹ sư phải viết và cập nhật từng script một, và nếu UI thay đổi nhỏ, toàn bộ script có thể bị hỏng (flaky tests). Một nghiên cứu từ IBM cho thấy, chi phí bảo trì test script có thể chiếm tới 50-70% tổng chi phí tự động hóa.
AI Agent QA: Sử dụng AI và Machine Learning để tự động hóa, học hỏi và thích nghi với các thay đổi.
- Ưu điểm:
- Tự động tạo test case: AI có thể phân tích mã nguồn, tài liệu yêu cầu và hành vi người dùng để tự động tạo ra các test case mới, bao gồm cả các trường hợp biên mà con người có thể bỏ sót.
- Tự động phát hiện và sửa lỗi: Một số AI agent có khả năng tự động xác định nguyên nhân gốc rễ của lỗi và thậm chí đề xuất hoặc tự động áp dụng các bản vá nhỏ.
- Giảm chi phí bảo trì: AI có thể tự động thích nghi với các thay đổi trong UI hoặc logic ứng dụng, giảm đáng kể công sức bảo trì test script. Ví dụ, các công cụ như Testim.io sử dụng AI để tự động cập nhật các bộ chọn (selectors) khi UI thay đổi, giảm 80% công sức bảo trì.
- Tăng độ bao phủ kiểm thử: AI có thể khám phá các đường dẫn và kịch bản ít được sử dụng, tăng cường độ bao phủ kiểm thử và phát hiện lỗi sớm hơn.
- Phân tích dự đoán: AI có thể dự đoán các khu vực có khả năng xảy ra lỗi cao dựa trên các thay đổi mã nguồn, lịch sử lỗi và độ phức tạp của mã. Điều này cho phép nhóm QA tập trung nguồn lực hiệu quả hơn.
- Nhược điểm:
- Phụ thuộc vào chất lượng dữ liệu: Hiệu suất của AI agent bị ảnh hưởng trực tiếp bởi chất lượng và số lượng dữ liệu huấn luyện.
- Yêu cầu kiến thức chuyên môn: Triển khai và quản lý AI agent có thể đòi hỏi kiến thức về AI/ML.
- Chi phí đầu tư ban đầu: Có thể có chi phí đầu tư ban đầu cao hơn cho các công cụ và nền tảng AI.
Các Lưu Ý Quan Trọng
- Không phải là giải pháp "Silver Bullet": AI agent QA là công cụ mạnh mẽ nhưng không phải là phép màu. Nó không thể giải quyết tất cả các vấn đề QA và vẫn cần sự giám sát, tinh chỉnh từ con người.
- Đầu tư vào kỹ năng đội ngũ: Để triển khai thành công AI agent QA, đội ngũ của bạn cần có kiến thức về AI/ML, phân tích dữ liệu và các công cụ liên quan. Cần có kế hoạch đào tạo hoặc tuyển dụng nhân sự phù hợp.
- Bắt đầu nhỏ, mở rộng dần: Thay vì cố gắng tự động hóa mọi thứ cùng một lúc, hãy bắt đầu với một dự án thí điểm nhỏ, chứng minh giá trị, sau đó dần dần mở rộng phạm vi ứng dụng của AI agent.
- Quản lý kỳ vọng: Đặt ra kỳ vọng thực tế về những gì AI agent có thể và không thể làm. Tránh kỳ vọng quá mức có thể dẫn đến thất vọng và từ bỏ công nghệ tiềm năng này.
- Bảo mật dữ liệu: Khi sử dụng AI agent, đặc biệt là với dữ liệu kiểm thử nhạy cảm, hãy đảm bảo rằng các biện pháp bảo mật dữ liệu mạnh mẽ được áp dụng để bảo vệ thông tin khỏi lộ lọt hoặc lạm dụng.
- Đánh giá ROI liên tục: Thường xuyên đánh giá lợi tức đầu tư (ROI) của AI agent QA bằng cách theo dõi các chỉ số như thời gian kiểm thử, số lượng lỗi bị bỏ sót, chi phí phát hiện lỗi, và sự hài lòng của đội ngũ phát triển.
- Tích hợp với các công cụ hiện có: Đảm bảo rằng AI agent có thể tích hợp tốt với các hệ thống quản lý kiểm thử (TMS), hệ thống quản lý lỗi (Bug Tracking) và các công cụ CI/CD hiện có của bạn để tạo ra một quy trình làm việc liền mạch.
Câu Hỏi Thường Gặp
AI Agent QA có thay thế hoàn toàn kỹ sư QA không?
Không, AI Agent QA không thay thế hoàn toàn kỹ sư QA mà là một công cụ hỗ trợ mạnh mẽ. AI agent có thể tự động hóa các tác vụ lặp lại, tốn thời gian và phân tích dữ liệu lớn, giúp kỹ sư QA tập trung vào các nhiệm vụ phức tạp hơn như kiểm thử khám phá, thiết kế chiến lược kiểm thử, phân tích rủi ro và đưa ra quyết định chiến lược. Vai trò của kỹ sư QA sẽ chuyển dịch từ người thực thi sang người quản lý, giám sát và tinh chỉnh AI.
Làm thế nào để đo lường hiệu quả của AI Agent QA?
Bạn có thể đo lường hiệu quả của AI Agent QA bằng cách theo dõi các chỉ số chính (KPIs) như giảm thời gian chu kỳ kiểm thử (ví dụ: giảm 30% thời gian), tăng độ bao phủ kiểm thử (ví dụ: từ 70% lên 95%), giảm số lượng lỗi bị bỏ sót (escaped defects) sau khi phát hành (ví dụ: giảm 20%), giảm chi phí QA và tăng năng suất của đội ngũ kiểm thử. Việc so sánh các chỉ số này trước và sau khi triển khai AI sẽ cung cấp cái nhìn rõ ràng về hiệu quả.
AI Agent QA có an toàn cho dữ liệu nhạy cảm không?
Vâng, AI Agent QA có thể an toàn cho dữ liệu nhạy cảm nếu được triển khai đúng cách. Điều này đòi hỏi việc tuân thủ các quy định bảo mật dữ liệu (như GDPR, HIPAA), mã hóa dữ liệu cả khi lưu trữ và khi truyền tải, và sử dụng các môi trường kiểm thử được cách ly. Nhiều nền tảng AI QA cung cấp các tính năng bảo mật dữ liệu mạnh mẽ, cho phép bạn kiểm soát quyền truy cập và ẩn danh dữ liệu nhạy cảm trước khi đưa vào huấn luyện mô hình.
Các thách thức chính khi triển khai AI Agent QA là gì?
Các thách thức chính bao gồm việc thu thập và chuẩn bị dữ liệu huấn luyện chất lượng cao, thiếu hụt kỹ năng về AI/ML trong đội ngũ QA hiện có, chi phí đầu tư ban đầu cho công cụ và hạ tầng, và việc tích hợp AI agent vào quy trình phát triển hiện có. Ngoài ra, việc quản lý kỳ vọng và đối phó với các lỗi sai (false positives/negatives) ban đầu cũng là một thách thức cần được giải quyết.
Kết Luận
AI Agent QA không còn là một khái niệm xa vời mà đã trở thành một phần không thể thiếu trong chiến lược đảm bảo chất lượng phần mềm hiện đại. Bằng cách tận dụng sức mạnh của trí tuệ nhân tạo, các tổ chức có thể đạt được sự tối ưu hóa đáng kể trong quy trình nghiệm thu, từ việc tăng tốc độ kiểm thử, nâng cao độ chính xác, đến giảm thiểu chi phí và giải phóng nguồn lực con người cho các nhiệm vụ đòi hỏi sự sáng tạo cao hơn. Việc hiểu rõ về các lợi ích, thách thức và cách triển khai hiệu quả sẽ giúp các đội ngũ phát triển phần mềm tận dụng tối đa tiềm năng của công nghệ này. Hãy bắt đầu hành trình chuyển đổi QA của bạn với AI agent ngay hôm nay để không chỉ theo kịp mà còn dẫn đầu trong thế giới công nghệ không ngừng phát triển, và khám phá thêm nhiều giải pháp tiên tiến tại vibe coding.