2012-05-09 29 views
14

Tôi đang cố gắng để stresstest một ứng dụng gui và tôi không quá chắc chắn làm thế nào để làm điều này. Đầu tiên tôi có một ứng dụng có tất cả các hàm gui và helper. Tôi cũng có hai thư viện bên ngoài mà tôi đã tạo mà ứng dụng này sử dụng. Các thư viện chỉ làm những việc nhỏ và tôi muốn đơn vị kiểm tra các bộ phận này khi QtMock hoạt động (hiện tại nó không tương thích với qt 4.8 vì lý do nào đó).Làm thử nghiệm Gui trong Qt

Tôi muốn nhấn mạnh kiểm tra ứng dụng chính mà không phải thay đổi quá nhiều mã. Tôi đã có một cái nhìn tại QtTestLib và nó có vẻ rất cơ bản và như thể bạn đã phải tích hợp mã với mã chính, mà tôi không muốn. Tôi thực sự muốn giữ thử nghiệm bên ngoài ứng dụng và đã tự hỏi làm thế nào để làm điều này? Không quá chắc chắn nếu tôi nên xuất khẩu ứng dụng gui enitre của tôi như là một lib bên ngoài mà tôi có thể nhập vào thử nghiệm của tôi?

Làm thế nào để bạn thường làm điều này để thực sự căng thẳng kiểm tra toàn bộ điều. Không có ý tưởng làm thế nào và nơi tôi nên làm mã kiểm tra và tôi sẽ đánh giá cao sự giúp đỡ nào!

+5

bạn đã thử squish chưa? (http://www.froglogic.com/squish/gui-testing/) – Kunal

+0

chưa nhưng tôi đã xem xét nó. Tôi thực sự muốn làm điều này bằng mã nhưng không có ý tưởng làm thế nào để – chikuba

+0

ahh, tôi không biết làm thế nào để làm điều đó bằng mã, nhưng chúng tôi sử dụng nó một lần trong dự án của chúng tôi. nó cho phép viết một số kịch bản để tự động kiểm tra gui. – Kunal

Trả lời

6

Theo kinh nghiệm của tôi, bất kỳ bộ công cụ kiểm tra nào bạn sử dụng sẽ tự làm việc với mã theo cách tinh tế hoặc không bao giờ đạt đến độ sâu bạn cần (hoặc cả hai).

Có thể viết mã kiểm tra tùy chỉnh và vẫn giữ mã sạch cho ứng dụng đang được thử nghiệm. Tôi đã làm nó trên một ứng dụng gui Windows C++ lớn mà tôi cần thiết để tự động. Ý tưởng cơ bản là tạo một dự án mới, tham chiếu tất cả mã từ dự án cơ sở của bạn và viết một nhóm các lớp mới có nguồn gốc từ các lớp cơ sở và chứa mã thử nghiệm của bạn.

Trong trường hợp của tôi, tôi đã tạo một dự án Visual Studio mới, nhưng bạn có thể làm tương tự với một dự án Qt mới. Các lớp cơ sở có thể phải được cấu trúc lại để lộ các hàm được kiểm tra, tất nhiên. Các lớp thử nghiệm gọi các hàm lớp cơ sở khi cần - bạn có thể tạo toàn bộ gui kiểm tra nếu muốn.

Như một ví dụ rất đơn giản, nếu đây là dự án của bạn ...

class MyView : public QMainWindow {} 
class MyController {} 
class MyModel {} 

... tạo một dự án mới, kéo trong mã cơ sở của bạn, và thêm những:

class TestView  : public MyView {} 
class TestController : public MyController {} 
class TestModel  : public MyModel {} 

Cuối cùng, sau một ít công việc, mã thử nghiệm không nằm trong các lớp cơ sở của tôi, và tôi vẫn có thể gắn vào và bắn ra tất cả các loại autotests lặp đi lặp lại trong một gui thử nghiệm tốt đẹp.

Tôi không nói đây là một nhiệm vụ dễ dàng hoặc tầm thường. Tôi chỉ khuyến khích bạn rằng nó có thể được thực hiện. :-)

EDIT: Đây không phải là một lời chỉ trích về thử nghiệm đơn vị nhúng, đó là tuyệt vời nếu bạn có thể nhận được nó tại chỗ từ khi bắt đầu dự án của bạn. Nhưng đây là một ứng dụng kế thừa lớn và đó là một yêu cầu khó khăn mà tôi không tiêm mã thử nghiệm vào mã cơ sở.

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