Làm cách nào để kiểm tra một ứng dụng phụ thuộc vào phần cứng cụ thể


8

Tôi đã viết một ứng dụng Android. Ứng dụng này yêu cầu kết nối Bluetooth với một phần cứng rất cụ thể, hiện là nguyên mẫu. Cách duy nhất tôi có thể kiểm tra các ứng dụng hiện nay là phải lái xe hàng trăm dặm để xem nếu nó hoạt động. Nếu tôi kết thúc với ANR, điều đó có thể rất xấu hổ trước khách hàng của tôi. Loại kết nối và cơ chế của ứng dụng này được thiết kế rất chặt chẽ với phần cứng này. Tôi không được phép mang máy tính xách tay, root điện thoại hoặc kết nối với bất kỳ thiết bị nào khác trong khuôn viên.

Có cách nào để kiểm tra ứng dụng này ở nhà, hoặc thực hiện các hoạt động để đảm bảo tôi không có ANR khác trong hoạt động thứ hai trong khi khách hàng nhìn tôi kinh hoàng không?

Tôi nên chỉ ra rằng tôi không phải là một lập trình viên có kinh nghiệm và đây là một ý tưởng mới mà tôi đang giúp đỡ ai đó, vì hiện tại nhân viên không có thẻ, vì vậy tôi chắc chắn thiếu một số khái niệm rất cơ bản về phát triển điều này.


2
Là giao diện quá phức tạp để chế nhạo nó? Có thể giả định ít nhất là chức năng cơ bản của thiết bị.
MrSmith42

@ MrSmith42 Tôi chưa xem xét khả năng đó, tôi có thể giả định gửi và nhận dữ liệu qua Bluetooth không? Hiện tại tôi không thể vượt qua hoạt động đầu tiên của mình vì không có thiết bị được ghép nối và không có kết nối nối tiếp Bluetooth mở.
RossC

Để giải thích, tôi cần AVD (hoặc điện thoại thực) để kết nối qua kết nối Bluetooth giả và sau đó gửi dữ liệu liên quan từ điện thoại của tôi. Tôi biết phần dữ liệu nhận hoạt động tốt vì vậy tôi thậm chí không cần trả lại bất cứ điều gì. Tôi chỉ cần (chỉ là một ví dụ) nhấn 'A' và điện thoại của tôi để gửi luồng byte 'A' đến phần cứng. Điều gì xảy ra sau đó là tùy thuộc vào phần cứng. Tôi không thể kiểm tra điều này như tôi đã nói, vì tôi không thể tạo kết nối. Tôi lái xe ngày hôm qua, kết nối với phần cứng, mở hoạt động đầu tiên của tôi nhấn nút đầu tiên và màn hình đen, hoàn toàn bị bệnh.
RossC

1
ANR là gì? Tôi giả sử rằng bạn không có nghĩa là Tài nguyên thiên nhiên Alpha hoặc Mối quan hệ điều dưỡng dành cho người lớn (đó là những gì Google đã đưa ra)? Hoặc một AVD cho vấn đề đó?
Marjan Venema

@MarjanVenema Xin lỗi, nên đã làm rõ. ANR là ứng dụng không đáp ứng hoặc buộc phải có tên khác. Đó là khi ứng dụng của bạn gặp sự cố hoàn toàn và đưa bạn trở lại màn hình chính. Nó trông xấu trước mặt khách hàng. AVD là một Thiết bị ảo Android mà bạn có thể chạy để kiểm tra ứng dụng của mình trên một vài thiết bị ảo khác nhau. Đây là một phần cơ bản của quy trình thử nghiệm Android ... cho đến khi tình huống này xuất hiện (không thể giả lập phần cứng mà thiết bị sẽ kết nối thông qua BlueTooth). Tôi hy vọng rằng làm rõ.
RossC

Câu trả lời:


11

Như @ MrSmith42 đã đề xuất, bạn nên làm tốt nhất có thể để giả lập giao diện. Bạn không cần kết nối bluetooth thực tế để giả lập nó. Gọi một giao diện. Giao diện đó, trong gỡ lỗi, sẽ gửi những gì bạn mong đợi cho một đầu vào nhất định. Khi không gỡ lỗi, nó thực hiện công việc thực tế là gửi và nhận dữ liệu. Bạn chắc chắn rằng những gì bạn gửi đến giao diện và cách bạn xử lý đầu ra của nó hoạt động. Rắc một chút hào phóng về xử lý lỗi, quản lý lỗi bạn có thể quản lý và ghi nhật ký phần còn lại và bạn có cho mình thứ gì đó bạn có thể kiểm tra trực tiếp tại máy khách.

Khả năng duy nhất xảy ra lỗi tại thời điểm đó nằm ở sự khác biệt giữa cách bạn mong đợi thiết bị xử lý và cách thiết bị thực sự hoạt động, và theo kinh nghiệm của tôi, phần cứng không bao giờ hoàn toàn đáng tin cậy. Vì vậy, hãy chắc chắn có một cơ chế xử lý lỗi chăn cho một cái gì đó bạn không mong đợi rằng ít nhất sẽ bỏ đi một số loại nhật ký.


1
Lời khuyên của bạn là tuyệt vời, thật không may, mã hóa thực tế của điều này vượt quá khả năng của tôi. Tôi sẽ phải bàn giao điều này cho một nhà phát triển toàn thời gian. Cảm ơn bạn rất nhiều vì câu trả lời của bạn, tôi sẽ đánh dấu là người được chấp nhận vì đó là cách tốt nhất để làm điều đó. Tôi hoàn toàn không biết người ta thậm chí sẽ bắt đầu viết giao diện giả ở đâu, và nó trở nên rõ ràng đối với tôi Tôi đang ở trên đầu tôi ở đây. Cám ơn hai bạn. Chỉ cần FYI giao diện chỉ là kết nối Bluetooth nối tiếp, tôi sẽ chỉ gửi Chuỗi (dưới dạng byte) qua kết nối.
RossC

1
Tôi chỉ muốn thêm một điều cuối cùng, nếu bất cứ ai khác đi qua câu hỏi này và có hiểu biết nhiều hơn tôi về những điều này có một số liên kết tuyệt vời cho mock interfacing vv ở đây: stackoverflow.com/questions/3337505/...
RossC

@RossC Vâng, tôi nói "giao diện", nhưng giao diện là cách bạn xác định nó. Trong sản xuất, giao diện tự truyền dữ liệu qua bluetooth, nhưng điều đó không có nghĩa là giao diện của bạn phải hoạt động chính xác theo cùng một cách. Tôi muốn nói nhiều hơn về các dòng lệnh bạn muốn gửi đến thiết bị và loại đầu ra nào bạn có thể mong đợi nhận được nếu thất bại / thành công. Đó là loại điều.
Neil

1
+1: "Giao diện" nghe có vẻ như mã của nó phải sạch và đơn giản, nhưng trong trường hợp này, thứ bạn muốn thực sự là "lớp trừu tượng phần cứng" trong đó bạn đặt tất cả các loại hack, cách khắc phục cụ thể hoặc đơn giản là khó chịu mã cần thiết để có được mọi thiết bị làm việc. Nhiệm vụ của nó là giữ cho hệ thống nước thải thoát khỏi phòng tắm sạch sẽ. Đừng mong đợi mã sạch trong lớp này.
rwong

@rwong Tuyệt đối. Một giao diện sạch mà một chương trình có thể sử dụng để nói chuyện với phần cứng là đặc điểm nổi bật của trình điều khiển được viết tốt. Phần còn lại của chương trình không cần phải biết các chi tiết trừu tượng.
Neil

6

Tôi nghĩ rằng đây là một vấn đề quản lý dự án, không phải là một vấn đề phát triển phần mềm.

Bạn nên có một hoặc hai tuần với quyền truy cập vào thiết bị (tại cơ sở của khách hàng hoặc tại văn phòng của bạn) để đánh giá hành vi cơ bản của thiết bị và để xem cách nó tương tác với phần mềm của bạn. Sau đó, bạn có thể giả định giao diện và phát triển chức năng tại nhà và một tuần nữa kiểm tra tích hợp.

Khi bạn tương tác với phần cứng, nhu cầu và giá trị của các bài kiểm tra tích hợp không thể được đánh giá thấp. Nếu kiểm tra tích hợp là không thể, dự án của bạn sẽ thất bại. Lập trình một cách mù quáng đối với một phần cứng mà bạn không thể kiểm tra không hoạt động.

Bạn phải thảo luận vấn đề này với khách hàng của bạn.


1
Cảm ơn phản hồi của bạn Simon. Tôi nghĩ đó là một cuộc trò chuyện không thể tránh khỏi. Phải có một số thỏa hiệp hoặc kết quả cuối cùng có thể có khả năng tồi tệ hơn vô dụng. Tôi muốn làm cạn kiệt những con đường có sẵn cho tôi và có thể cho thấy tôi đã thực hiện nghiên cứu của mình. Tôi cũng sẽ đề nghị một lần nữa, rằng tôi sẽ được tặng một máy tính xách tay mà họ chấp thuận và sau đó tôi có thể chạy ứng dụng với ADK đầy đủ theo ý của tôi khi tôi đang thử nghiệm tích hợp. Tôi rât cảm kich!
RossC
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.