Idea on Automatically Testing API and SQL with Ruby Script
Dear cả nhà, sau một thời gian bận rộn với cái task khó nhằn, em có viết TDD trong quá trình code nên mặc dù bị review khá nhiều lần do stupid, nhưng sau khi fix code, em chạy lại cái spec đó rồi đẩy lên luôn chứ k test lại thực tế như các chị QA, nhưng cũng k có bugs nào nữa. Phù, quá trình test lại sau khi code chỉ là 10s, sau đó fix, và test lại nếu test chưa qua hết. Nhưng khi đẩy lên môi trường test, các chị QA lại tốn tới ít nhất 1 ngày để test lại, và công việc lặp lại. Dù test lại có chọn lọc so với lần trước, và đỡ mất thời gian, đỡ nhàm chán, nhưng nói thật là cứ test đi test lại 1 thứ vì requirement thay đổi mà deadline thì cứ gần kề, vừa stress, vừa OT, lại vừa bực mình.
Vì được nghe các chị ‘giãi bày’, nên em có viết 2 project nhỏ nhỏ để giúp việc test này trở nên tự động, dễ dàng và dễ chịu hơn. Nhưng đây mới chỉ ở bước ý tưởng và đang cần đầu tư, mới chỉ demo theo những requirement đơn giản có thể phục vụ cho các task vừa rồi. (Đương nhiên là sau khi task đó hoàn thành em mới có time viết 2 projects này, nên chính xác phải là áp dụng cho những dự án tương tự về sau 😛 )
Đầu tiên là automation test với các câu lệnh SQL. Sẽ có 1 folder chứa các file test. Mỗi file sẽ tương ứng với 1 suites. Trong các suite có thể add nhiều test case. Các chị cũng có thể edit data trước khi chạy suite trong khối block before .. end
và roll back dât trong khối block after .. end
Ví dụ:
# Created by quyetdc on 2014-03-10. # Copyright 2014 quyetdc. All rights reserved. before do { insert / update db } { insert / update db } end ====================================================== pair 1 -- [ { select count(id) from /table/ where /conditions/ } { select count(id) from /table_2/ where /conditions/ } ] pair 2 -- [ { select /value_1/ from /table_1/ where /conditions/ } { select /value_2/ from /table_2/ where /conditions/ } ] ====================================================== after do { roll_back_data for next run suites } end
Sau đó chạy bằng lệnh đại loại như
run script_sql_test
Và kết quả sẽ được show ra màn hình sau khi chạy suites
... 2) Script Folder test_suite_1 assertion pair 3 Failure/Error: expect(res_1).to eql(res_2) expected: [{"count(id)"=>49}] got: [{"count(id)"=>9}] (compared using eql?) Diff: @@ -1,2 +1,2 @@ -[{"count(id)"=>49}] +[{"count(id)"=>9}] Finished in 0.02804 seconds 2 examples, 1 failures
NICE? isn’t it? Nếu mọi người thích nó, hãy click nút like phía trên và đọc tiếp ở dưới với automation test api
Về cơ bản, test api cũng tương tự vậy. Mọi người có thể config method, parameters … Và cũng có 1 folder với các test suites. Trong các suites mọi người có thể truyền parameters và viết expected results
Ví dụ:
pair 2 -- [ ( "data": { "user_id": 1, "fb_account_id": 5, "name": 'test' } ) ( "status": -1, "message": "[parameter is invalid]" ) ]
Cách run test và kết quả hiển thị sẽ giống với ở trên ạ. Hiện em đang hoàn thiện nốt script để có thể áp dụng đc rộng hơn, phù hợp với yêu cầu thực tế hơn, Nên mọi người có ý kiến, yêu cầu, hay sự động viên nào hãy liên hệ với em qua email quyet_dc@septeni-technology.jp