2017-07-31 21 views
14

Tôi đang thử nghiệm với kiểm tra sharding trên Android và tôi nhận được kết quả khá lạ:Android lạ kiểm tra sharding

+ adb -s emulator-5580 shell am instrument -e numShards 2 -e shardIndex 0 -e class com.package.etc.automation.Tests.SanityTest.SanityTest -w com.package.etc.test/android.support.test.runner.AndroidJUnitRunner 

com.package.etc.automation.Tests.SanityTest.SanityTest:.......... 

Time: 306.578 

OK (10 tests) 


+ adb -s emulator-5582 shell am instrument -e numShards 2 -e shardIndex 1 -e class com.package.etc.automation.Tests.SanityTest.SanityTest -w com.package.etc.test/android.support.test.runner.AndroidJUnitRunner 

com.package.etc.automation.Tests.SanityTest.SanityTest:...................... 

Time: 645.723 

OK (22 tests) 

Như bạn thấy, adb chia các cuộc thử nghiệm thành hai nhóm không đồng đều. Bài thứ hai có nhiều bài kiểm tra gấp đôi so với bài kiểm tra đầu tiên và thi hành gấp hai lần. Không phải là song song tốt nhất nếu bạn hỏi tôi.

Có khả năng kiểm soát việc phân phối thử nghiệm hay ít nhất là buộc adb phân chia các thử nghiệm đồng đều không?

Trả lời

5

Hãy theo dõi nó.

Khi bộ thử nghiệm là started, TestRequestBuilder được tạo theo JUnit Filters. ShardingFilter là một trong số chúng và is added. Thêm nó có nghĩa là trước đó được thêm Filter"intersected" với phương thức mới public boolean shouldRun(Description description) được gọi. Nếu bạn nhìn vào nó, nhiều khả năng ở đoạn này:

if (description.isTest()) { 
    return (Math.abs(description.hashCode()) % mNumShards) == mShardIndex; 
} 

Và thay thế bằng con số của bạn (numShards=2), bạn sẽ nhận thấy, rằng đây chỉ là một bài kiểm tra chẵn lẻ. Theo thống kê nó có thể xảy ra, mà tạo ra phân phối chẵn lẻ HashCode không phải là 50%. Hơn nữa, khi một số thử nghiệm trên lớp thử nghiệm của bạn bị bỏ qua, vô hiệu hóa và xen kẽ với các thử nghiệm đã bật, bạn thậm chí có thể làm phiền thêm phương pháp cụ thể hashcode (Junit DescriptionuniqueId được tạo từ phương thức và tên lớp).

Đó chỉ là số liệu thống kê quan trọng. Như bạn có thể nhìn thấy trong this answer:

Làm thế nào các nhóm được chia là tùy ý

+0

đẹp thả xuống, thưa ông. – azizbekian

Các vấn đề liên quan