[ĐÁNH GIÁ] Buddy.Works + Camerakit Thử Nghiệm Độ Ổn Định và Tích Hợp

Bài Viết Tóm Tắt Về Trường Hợp Sử Dụng của Buddy.Works với Thư Viện Mở CameraKit.

Sản Phẩm Đang Hoạt Động + Đội Ngũ Giàu Kinh Nghiệm + Các Doanh Nghiệp Đối Tác Lớn

Bounty | Website | Telegram | Whitepaper | Onepager | Twitter | Facebook



CameraKit là thư viện mã nguồn mở để hỗ trợ Android Camera 1 và 2 API. Mục tiêu chúng tôi là tăng mức độ ổn định và độ tin cậy của việc chụp ảnh và quay video trên tất cả các thiết bị Android với thư viện tập trung vào developer và dễ triển khai.

Trong bài này, tôi sẽ giới thiệu các kỹ thuật và thách thức mà tôi gặp phải khi thiết lập một bộ unit test cho ứng dụng CameraKit.


Phần 1. Tại sao phải unit test


0*17PDYjOrdjZgy6oh.png


Nguồn: https://developer.android.com/training/testing/fundamentals

Nếu trước đây bạn chưa viết các thử nghiệm code của mình thì không quá muộn để bắt đầu! Thử nghiệm phải là yếu tố chính trong quy trình làm việc của mỗi developer. Nó không chỉ đảm bảo các hàm (function) và lớp (class) của bạn hoạt động như mong muốn, mà còn khuyến khích thiết kế các hàm và lớp đó sạch hơn.

Viết unit test là một nơi tuyệt vời để bắt đầu. Không giống như các thử nghiệm tích hợp, unit test không phụ thuộc vào các yếu tố phụ thuộc bên ngoài có thể làm tăng thêm độ phức tạp cho các thử nghiệm của bạn.


Phần 2. Môi trường thử nghiệm

Bạn có thể xem code của CameraKit ở đây: https://github.com/CameraKit/camerakit-android

Để tạo ra các unit test bạn dùng các framework sau:
• JUnit
• Mockito

Các yếu tố phụ thuộc và tùy chọn thử nghiệm như bên dưới.



android {
compileSdkVersion 27
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
}
buildToolsVersion '27.0.3'
testOptions {
unitTests.returnDefaultValues = true
}
}
dependencies {
implementation 'com.camerakit:jpegkit:0.1.0'
implementation 'com.android.support:support-annotations:27.1.0'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:1.10.19'
}



JUnit và Mockito lần lượt là unit test chuẩn và framework giả lập. Mỗi cái đều có hỗ trợ cộng đồng tuyệt vời và vô số kiến thức nếu bạn gặp phải vấn đề.

Phần 3. Thử nghiệm

Phần cốt lõi của chức năng CameraKit được chứa trong lớp CameraKitView. Lớp này khá phức tạp và có các hàm và đối tượng tương tác với các phần tử khác nhau của Camera 1 và 2 API.

File CameraKitViewTest.java được chia thành nhiều phần khác nhau.

Đầu tiên, mỗi yếu tố phụ thuộc của CameraKitView được giả lập, chẳng hạn như: Context, AttributeSet, GestureListener, v.v. Chúng tôi muốn có thể thử nghiệm các phương thức (method) một cách riêng biệt. Giả lập hiệu quả ẩn sự phức tạp của các dịch vụ và phương thức từ các lớp khác.

Tiếp theo, một hàm cài đặt được chạy để tạo các đối tượng thực và giả lập toàn bộ các lệnh gọi hàm đã gặp trong các thử nghiệm.

Cuối cùng đến các unit test. Mỗi unit test sẽ thực hiện cho một hàm công khai ngắn cụ thể của lớp CameraKitView. Assert được sử dụng để đảm bảo rằng hàm trả về giá trị mong muốn và sẽ hoạt động đúng khi được sử dụng trong các tình huống thực tế.


@test
public void toggleFacingTest() {
cameraKitView.setFacing(CameraKit.FACING_BACK);
cameraKitView.toggleFacing();
assertEquals(cameraKitView.getFacing(), CameraKit.FACING_FRONT);
}



Dưới đây là ví dụ về thử nghiệm hàm toggleFacing. Như có thể tưởng tượng, hàm chuyển hướng quay của máy ảnh dựa trên trạng thái hiện tại của nó. Hướng quay được đặt theo một hướng, bật, và sau đó assert được sử dụng để đảm bảo đã xảy ra.

Phần 4. Tích hợp với Buddy

Buddy.works là một nền tảng để tạo ra môi trường thử nghiệm và quy trình triển khai và đi kèm với hỗ trợ native docker. Buddy không chỉ là giải pháp tuyệt vời để thử nghiệm và triển khai mà còn là nhà tài trợ cho CameraKit! Chúng tôi đã chuyển từ CircleCI sang Buddy cho v1.0.0.

1*Mh-X6MEdn0A-M1CmIeV3Mw.png


Nguồn: https://buddy.works

Với hỗ trợ Native Docker, việc thiết lập Buddy thật dễ dàng. Chỉ cần định cấu hình môi trường bằng hình ảnh docker từ DockerHub và bạn có thể chạy thử nghiệm miễn phí. Tôi đã sử dụng testcommand ./gradlew để tải xuống các yếu tố phụ thuộc Android và chạy thử nghiệm. Hình ảnh docker được tạo bởi Dylan McIntyre cho dự án này.

Quy trình CameraKit được thiết lập để chạy trên mỗi lần đưa vào kho lưu trữ GitHub bằng cách sử dụng các webhook Buddy được tích hợp sẵn.


Phần 5. Thách thức và những điều sắp tới

Có một loại đối tượng khác trong lớp CameraKitView mà tôi không thể thử nghiệm bằng unit test; lớp abstract CameraPreview và triển khai Camera1 và Camera2. Các lớp này là riêng tư đối với CameraKitView và chỉ có thể được tạo với quyền và điều kiện thiết bị Android phù hợp. Để thiết lập quyền và điều kiện, bạn cần một thiết bị Android được mô phỏng gọi các thử nghiệm có thiết bị đo! Các thử nghiệm này sẽ yêu cầu thiết lập nhiều hơn trong Buddy để mô phỏng một thiết bị trong môi trường docker. Mặc dù chưa sẵn sàng phát hành bản 1.0.0 ổn định, các thử nghiệm có thiết bị đo sẽ sớm ra mắt.

Ngoài ra, có rất nhiều nhiệm vụ mà Buddy có thể thực hiện cho các kết quả thử nghiệm khác nhau. Ví dụ, chúng tôi có thể gửi thông báo hoặc ngừng thay đổi khi chuyển sang sản xuất nếu các thử nghiệm không được thông qua. Những tính năng này sẽ giúp tăng tốc quá trình phát triển và cho phép chúng tôi đưa thêm nhiều tính năng và đóng góp từ cộng đồng.

Hãy theo dõi các bài đăng sắp tới khi chúng tôi tiếp tục cải thiện CameraKit!

Buddy là dự án thực sự tiềm năng, các bạn nhớ đón đọc thêm các bài viết tiếp theo về dự án nhé.


1*f9dIPu5uAfxJSOkRWwQMMw.png
2THcBCZ.png


Bài viết phân tích được thực hiện bởi Shibob đến từ diễn đàn Bitcointalk.

Bitcointalk Profile: https://bitcointalk.org/index.php?action=profile;u=1107745
 

shibob

Junior
Joined
Dec 7, 2017
Messages
206
Reactions
133
MR
0.001
dự án này nó mở bán chưa bác ? Tiến độ thế nào rồi ?o_Oo_Oo_O

Nó đang trong giai đoạn private sale thôi bác. Đợt bán PreSale sẽ diễn ra vào ngày 23 tháng Bảy tới 30 tháng Bảy.

Riêng đợt bán private sale dân Hàn muốn mua đông quá, lại sẵn sàng trả giá ICO nên Buddy đóng luôn private sale ở Hàn bác ạ. Bảo dân Hàn đợi presale.
 
Nó đang trong giai đoạn private sale thôi bác. Đợt bán PreSale sẽ diễn ra vào ngày 23 tháng Bảy tới 30 tháng Bảy.

Riêng đợt bán private sale dân Hàn muốn mua đông quá, lại sẵn sàng trả giá ICO nên Buddy đóng luôn private sale ở Hàn bác ạ. Bảo dân Hàn đợi presale.
Nó chưa public mà đã hot vậy rồi cơ á. Bọn Hàn xưa nay nó cũng khắt khe vơi ICO lắm. Mà dự án này nó có đưa ra giá dự đoán cho public sale chưa bác? Không biết giá cả như thế nào, tổng cung ứng là bao nhiêu?
 
Nó chưa public mà đã hot vậy rồi cơ á. Bọn Hàn xưa nay nó cũng khắt khe vơi ICO lắm. Mà dự án này nó có đưa ra giá dự đoán cho public sale chưa bác? Không biết giá cả như thế nào, tổng cung ứng là bao nhiêu?

Bọn Hàn còn máu cờ bạc hơn VN mình nhiều ý bác. Hive hơn VN luôn.
Giá là 1 ETH = 5000 BUD tokens bác ah. Tổng cung là 670 triệu tokens.
 
Cai1 này đang hot. Thấy có đứa mua tới cả 999 Eth.

Dạ hot lắm luôn bác. Bên Hàn nhiều người đk mua quá đến mức nó đóng private sale ở Hàn và bắt dân Hàn chờ đợt bán pre-sale. Cũng hay là nó quyết giữ các đợt bán sau và tạo hardcap cho private sale để tạo công bằng cho cộng đồng.
 

Announcements

Today's birthdays

Forum statistics

Threads
424,959
Messages
7,153,166
Members
177,508
Latest member
i9betsfund

Most viewed of week

Most discussed of week

Most viewed of week

Most discussed of week

Back
Top Bottom