11/08/2018, 21:55

[ThaoVTP][Dịch bài viết]  Bí mật kỹ thuật tự động get test evidence (Part 2):

Ở Part 1, tác giả để giới thiệu về tool test Selenium VBA và công dụng của nó trong việc lấy evidence làm bằng chứng test. Tuy nhiên, nếu size ảnh quá lớn, thì cần phải thu nhỏ ảnh rồi set tất cả thành 1 size giống nhau, hay có trường hợp muốn chỉ định thời gian cho chạy tự động macro. Vì vậy, sẽ ...

Ở Part 1, tác giả để giới thiệu về tool test Selenium VBA và công dụng của nó trong việc lấy evidence làm bằng chứng test.

Tuy nhiên, nếu size ảnh quá lớn, thì cần phải thu nhỏ ảnh rồi set tất cả thành 1 size giống nhau, hay có trường hợp muốn chỉ định thời gian cho chạy tự động macro. Vì vậy, sẽ cần biết những kỹ thuật hữu ích cho việc paste screen shoot vào Excel. Bài dịch này sẽ giới thiệu 4 trong số đó. Nội dung bài dịch như sau.

========================================================================

Trước hết, evidence (Record thao tác) rất được coi trọng trong test software (Integration test ~ System test) khi phát triển hệ thống. Qua 2 bài viết (Part 1 và Part 2), tôi sẽ giới thiệu technology của VBA/Macro để tự động hóa việc paste screen shoot (Evidence) đã capture vào tài liệu test spec và deliverables. Ở phần 2 tôi sẽ nói về phương pháp paste file ảnh vào sheet, paste trực tiếp screen shoot từ menu của Excel 2013 ròi thu nhỏ ảnh, chạy macro trong thời gian chỉ định.

Ở phần 1「Selenium VBAを使って自動でブラウザーを操作してスクショをExcelに張り付けてみた」(Sử dụng Selenium, tự động thao tác trên Browser, chụp screen shoot rồi paste vào Excel) tôi đã giải thích về ý nghĩa lấy screen shoot làm evidence, phương pháp install và cách sử dụng Selenium VBA, cách paste tự động screen shoot vào Excel.

Ở phần 2, tôi sẽ giới thiệu 4 Tips hữu ích chụp screen shoot làm evidence, paste vào test spec và tài liệu deliverables.

1. Paste file ảnh vào worksheet

Cũng có cách paste trực tiếp screen shoot vào Excel bằng cách đã giới thiệu ở các lần trước nhưng cũng có trường hợp lưu screen shoot kết quả test thành file ảnh bằng 「Selenium WebDriver」chẳng hạn mà không dùng Selenium VBA  đã giới thiệu ở part 1 và 「Tool record step problem(PSR.EXE)」-tool GUI có thể record trình tự thao tác khi phát sinh bug bằng Windows Server 2008 R2.

Vì việc paste bằng tay file ảnh screen shoot dung lượng lớn là công việc mất thời gian nên nếu có thể tự động hóa bằng Excel VBA thì sẽ vô cùng hiệu quả.

Để thực hiện các Tips này thì cần lưu sẵn file ảnh vào chỗ nào đó, lần này tôi giả sử đang lưu ảnh vào folder「CVBAImage」. Folder thì các bạn bố trí tùy ý nhé.

Tôi đang để như hình 1 để chạy macro.

Hình 1 Sắp đặt「コンボボックス/Combo box」 rồi hoàn thành「コントロールの書式設定/Setting kiểu control」

Chọn[開発/Phát triển]→[挿入/Insert] của menu Excel rồi bố trí「コンボボックス/Combo box」. Tiếp theo, nhập tên ảnh đã lưu trong folder「CVBAImage」 vào「U1:U10」.

Chọn「コンボボックス/Combo box」 đã sắp đặt, từ menu được hiển thị bằng click phải chuột, chọn[コントロールの書式設定/Setting kiểu cotrol]. Từ màn hình được hiển thị, chỉ định đến 「U1:U10」 đã nhập tên ảnh vào [入力範囲/Phạm vi input]. Tiếp theo, chỉ định 「T2」cho「リンクするセル/Cell có link」. Index number đã được chọn từ「コンボボックス/Combo box」 sẽ được hiển thị ở đây.

Tiếp theo, sử dụng hàm INDEX ở cell「T5」, hiển thị tên ảnh tương ứng với index number đã được chọn từ「コンボボックス/Combo box」. Kiểu  hàm số INDEX như sau.

Kiểu hàm số INDEX

INDEX({Phạm vi},{Số line})

Chỉ định 「U1:U10」cho{Phạm vi}, ở{Số line} thì chỉ định index ID của tên ảnh đã được chọn từ 「コンボボックス/Combo box」 được hiển thị vào cell 「T2」. Sẽ biểu hiện như sau. Trường hợp input hàm số thì bắt buộc phải nhập「=」 vào đầu.

=INDEX(U1:U10,T2)

Từ giờ chúng ta hãy thử viết macro nhé. Sử dụng method Insert của Pictures collection để paste file ảnh vào worksheet.

Phương thức của method Pictures.Insert-paste file ảnh vào worksheet

Pictures.Insert {Tên file ảnh kèm đường dẫn}

Trước hết, từ menu VBE(Visual Basic Editor), chọn[挿入/Insert]→[標準モジュール/Module tiêu chuẩn]. Vì Module1 được add thêm vào project nên double click Module1, viết code của list 1 vào trong màn hình Editor được hiển thị.

  1. OptionExplicit
  2. Sub画像の表示()
  3. Call画像の削除
  4. Range("T6").Value=Range("T5").Value
  5. Range("B2").Select
  6. ActiveSheet.Pictures.Insert"C:VBAImage" & Range("T6").Value
  7. End Sub List 1 Code hiển thị ảnh

Ở line 3, đang gọi procedure「画像の削除/Delete ảnh」thực hiện xóa ảnh (List 2). Tôi đang chuẩn bị procedure này như là procedure khác.

Ở line 4, hiển thị giá trị của cell 「T5」 vào cell「T6」. Ở cell「T5」đang để công thức tính toán hàm INDEX nên trường hợp chỉ định tên ảnh thì không thể sử dụng「T5」. Do đó, cho hiển thị giá trị của cell「T5」 vào cell「T6」, chỉ định giá trị của cell「T6」 cho tên ảnh.

Chọn cell「B2」(Line thứ 6), chỉ định path kết hợp giá trị của cell「T6」cho method Pictures.Insert đang paste ảnh vào góc trên bên trái (Line7). Ảnh đã chọn từ「コンボボックス/Combo box」 sẽ được hiển thị tuần tự.

  1. Sub画像の削除()
  2. Dim範囲AsRange
  3. Dim myShape AsVariant
  4. Set範囲=Range("B2")
  5. ForEach myShape InActiveSheet.Shapes
  6. IfNotIntersect(Range(myShape.TopLeftCell, myShape.BottomRightCell),範囲)IsNothingThen
  7. myShape.Delete
  8. EndIf
  9. Next
  10. EndSub List 2 Code Delete ảnh

Bên trong code này thì hoàn toàn giống với list 2 của Tips「オートシェイプの種類を設定して表示する」(Set, hiển thị loại AutoShapes) nên tôi sẽ giải thích đơn giản thôi.

Code này là xóa ảnh trong trường hợp có ảnh ở cell「B2」. Chọn「コンボボックス/Combo box」, từ menu được hiển thị bằng cách click phải chuột chọn「マクロの登録/Đăng ký macro」, kèm macro của list 1.

Nếu chạy macro thì ảnh được chọn từ「コンボボックス/Combo box」sẽ được hiển thị ở góc trên bên trái cell「B2」 như hình 2.

Hình 2 Ảnh đã chọn từ 「コンボボックス/Combo box」 được hiển thị

Ngoài ra, với Tips lần này, để cho dễ hiểu, đang chọn rồi paste 1 ảnh nhưng chú ý là trường hợp paste liên tục thì cần arrange để run method Insert chỉ bằng số lượng file.

2. Paste screen shoot vào giá trị từ menu của Excel 2013

Sauk hi tự động paste screen shoot rồi confirm thì có trường hợp thấy thiếu. Trong trường hợp đó, nếu có thể add ảnh trực tiếp vào file Excel thì tiện lợi biết bao. Từ Excel 2010 trở đi, có thể chụp screen shoot rồi paste vào Excel từ menu của Excel.

Từ menu của Excel 2013, chọn [挿入/Insert], confirm xem có[スクリーンショット/Screen shoot]ở menu được hiển thị hay không. (Hình 3).

Hình 3 Có[スクリーンショット/Screen shoot] trong menu [挿入/Insert]

Ví dụ, cho hiển thị page bất kỳ trên Browser, click menu[スクリーンショット/Screen shoot] (Hình 4).

Hình 4 Mở page bất kỳ, chọn[スクリーンショット/Screen shoot] trong menu Excel

Nếu click menu[スクリーンショット/Screen shoot], màn hình Browser đã hiển thị sẽ quay từ đằng sau, có thể xóa khỏi bảng. Trường hợp không thể chụp tốt thì hiển thị lại Browser lên bảng rồi click lại[スクリーンショット/Sreen shoot] cũng được.

Nếu làm như vậy, ảnh đã screen shoot hiện tại sẽ được hiển thị trong [スクリーンショット/Screen shoot] như hình 5.

Hình 5 Ảnh đã chụp đang được hiển thị trong [スクリーンショット/Screen shoot]

Nếu click ảnh trong phạm vị màn hình màu đỏ như hình 5 thì ảnh tương ứng sẽ được paste vào vị trí con trỏ chuột trên Excel. (Hình 6). Message setting hyperlink được hiển thị. Nếu chọn[はい/Yes] thì link sẽ được kèm vào ảnh đã paste, nếu click ảnh thì page đó sẽ mở ra. Lần này, tôi đã chọn[いいえ/No].

Hình 6 Ảnh đã được paste

Cũng có thể viết xử lý này bằng VBA nhưng cần sử dụng「Windows API」, bản thân xử lý cũng phức tạp nên xử lý VBA hóa không được thực hiện lần này.

3. Thu nhỏ size ảnh

Ảnh đã chụp screen shoot bằng cách giới thiệu ở trên thì bình thường sẽ được hiển thị y nguyên size lớn. Việc dùng tay set từng ảnh một về cùng một size thật phiền phức. Tiếp theo, tôi sẽ giải thích cách thức thu nhỏ size ảnh.

Trên Excel, có hình 21 như đã giới thiệu lần trước. Bên cạnh button đó, bố trí thêm button「図の縮小/Thu nhỏ hình」(Hình 7)

Hình 7 Bố trí button「図の縮小/Thu nhỏ hình」

Khởi động VBE(Visual Basic Editor), trong Module1, viết code như list 3.

  1. Sub図の縮小()
  2. Dim縮小率AsDouble
  3. 縮小率=1.5
  4. Selection.ShapeRange.Width=Selection.ShapeRange.Width/縮小率
  5. Selection.ShapeRange.Height=Selection.ShapeRange.Height/縮小率
  6. EndSub List 3 Xử lý thu nhỏ size ảnh

Double型の変数「縮小率」を宣言し、「1.5」で初期化しておく。選択された画像のWidthとHeightの値を「縮小率」で除算する。Nếu làm như vậy size ảnh sẽ được thu nhỏ.

Nào thử run macro list 3 cùng với button「図の縮小/Thu nhỏ hình」.

Trước hết, hiển thị form bằng button「フォームの表示/Hiển thị form」, chụp screen shoot ảnh「html」bất kỳ rồi paste. Chọn ảnh đã paste, click button「図の縮小/Thu nhỏ hình」. Chắc chắn cần chọn trước ảnh muốn thu nhỏ. Ở trạng thái chưa chọn ảnh, sẽ không xử lý lỗi trong trường hợp click button「図の縮小/Thu nhỏ hình」.

Hình 8 Chọn ảnh đã paste rồi thu nhỏ

Hình 9 Cũng có thể thu nhỏ dù chỉ 1 ảnh còn lại bằng button「図の縮小/Thu nhỏ ảnh」 rồi sắp xếp vào vị trí tùy ý

Lần này, đang thu nhỏ ảnh đã chọn nhưng, nếu muốn arrange để thu nhỏ tất cả ảnh trên sheet, hay làm sao để input thay đổi tỷ lệ thu nhỏ bằng form thì sẽ tiện lợi hơn nữa nên tôi mong các bạn cũng arrage rồi sử dụng nhé.

4. Thực hiện macro trong thời gian chỉ định

Tôi nghĩ có nhiều trường hợp muốn chỉ định thời gian, tự động chạy macro đã giới thiệu ở trên mà tự động chụp screen shoot. Trong trường hợp đó, có thể giải quyết vấn đề bằng cách áp dụng Tips「Chạy macro trong thời gian chỉ định」. Tips giới thiệu lần này đơn giản là hiển thị alert bằng message nhưng mong các bạn sử dụng thay thế tùy ý phần hiển thị message.

Ứng với thực hiện macro, đang để như hình 10. Sắp xếp cell cho 「マクロ実行時刻を指定/Chỉ định thời gian chạy macro」, cell cho 「表示するメッセージ/Message hiển thị」 và button 「実行/Run」vào vị trí bất kỳ trên Sheet1.

Hình 10 Sắp xếp cell「マクロ実行時刻を指定/Chỉ định thời gian chạy macro」và cell「表示するメッセージ/Message hiển thị」, button「実行/Chạy」

Để chạy macro đúng thời gian chỉ định, sử dụng method Ontime.

Phương thức method Ontime- chạy macro trong thời gian đã chỉ định

{Object}.Ontime EarliesTime:=TimeValue({Thời gian chạy macro}),Procedure:="{Procedure chạy}",LatestTime:=TimeValue("{Thời điểm cuối cùng thực hiện procedure}"),Schedule:=True|False

Chỉ định Application object cho{Object}. Chỉ định{Thời gian chạy macro}cho đối số「TimeValue」của 「EarliesTime」, chỉ định{Procedure thực hiện} cho đối số「Procedure」, chỉ định{Thời điểm cuối cùng thực hiện procedure} cho đối số「LatestTime」(Có thể lược bỏ), chỉ định「Enable, disable  (False) setting method Ontime(True “Giá trị đã định) 」 cho đối số「Schedule」. Cái này cũng có thể lược bỏ.

Trong Module1, viết code như list 4.

  1. OptionExplicit
  2. Sub指定した時刻にマクロを実行()
  3. Dim時刻AsDate
  4. 時刻=Range("D5").Value
  5. IfRange("D5").Value=""Then
  6. MsgBox"マクロを実行する時刻を入力してください。"
  7. ExitSub
  8. Else
  9. Application.OnTimeEarliestTime:=TimeValue(時刻),Procedure:="メッセージの表示"
  10. EndIf
  11. EndSub List 4 Code「指定した時刻にマクロを実行する/Chạy macro trong thời gian đã chỉ định」

Ở line 3, declare biến số kiểu Date「時刻/Thời gian」, ở line 4 lưu giá trị cell「D5」 đã được nhập thời gian thực hiện macro.

Phán đoán xem thời gian thực hiện macro ở line 5 được chỉ định hay chưa, trường hợp chưa chỉ định, hiển thị message cảnh báo, có thể ngắt xử lý. Trường hợp thời gian đã được chỉ định, đang set làm sao để thực hiện procedure「Hiển thị message」ở thời điểm đã chỉ định ở line 9.

Hàm số TimeValue đang sử dụng ở đây là hàm số trả về thời gian. Nhập theo phương thức「10:10:10」 (Với ý nghĩa là 10 giờ 10 phút 10 giây).

Tiếp theo là code 「Hiển thị message」 (List 5).

  1. Subメッセージの表示()
  2. IfRange("D6").Value=""Then
  3. MsgBox"メッセージを入力してください"
  4. ExitSub
  5. Else
  6. MsgBoxRange("D6").Value
  7. EndIf
  8. EndSub List 5 Code「Hiển thị message」

Phán đoán xem message nên hiển thị ở line 2 đã input hay không, trường hợp chưa nhập thì hiển thị message cảnh báo, ngắt xử lý. Ngoài ra, đang set để hiển thị message đã nhập vào cell「D6」ở line 6.

Chạy macro list 4 kết hợp button「実行/Run」ở hình 10, nếu đến thời gian đã chỉ định thì được hiển thị như hình 11.

Hình 11 Chỉ định thời gian chạy macro, message đã chỉ định được hiển thị trong thời gian đã chỉ định

Thường xuyên sử dụng nhiều Tips, nâng cao hiệu suất công việc

Tôi đã giới thiệu nhiều Tips như ở trên rồi, các bạn thấy được không vậy?

Tips giới thiệu lần này, ngoài chụp screen shoot làm eviden, tôi nghĩ có nhiều văn cảnh có thể áp dụng.

Ví dụ, có nhiều văn cảnh sử dụng Tips đã giới thiệu lần này「Chạy macro trong thời gian đã chỉ định」. Trường hợp thực hiện phân tích chụp data định kỳ, trường hợp quên trao đổi với khách hàng do quá tập trung vào công việc, nếu sử dụng Tips này thì vô cùng hữu ích, không cần phải lo lắng cancel ở phút cuối, bị lack xử lý mà có thể tập trung vào công việc.

Ngoài cácTips giới thiệu lần này, ở bài báo dưới đây cũng mô tả đầy đủ các Tips có thể áp dụng cho cả chụp screen shoot làm evidence nên tôi mong muốn các bạn hãy tham khảo cùng Tips đã giới thiệu lần này. Đặc biệt, Tips「Excelのメニューに自作したマクロを追加するには」(Add macro đã tự tạo vào menu Excel) hoặc「右クリックメニューやサブメニューにマクロを登録/削除するには」(Đăng ký/Xóa macro trong sub menu và menu click phải) chẳng hạn chắc chắn sẽ rất tuyệt cho người gặp khó khăn trong việc gọi macro, tạo từng button.

Tôi nghĩ, bằng Tips giới thiệu ở phần 1 và phần 2, có thể đơn giản hơn việc tạo evidence so với trước đây. Các bạn nhất định hãy thử tìm hiểu và sử dụng cách này nhé.

Nguồn: http://www.atmarkit.co.jp/ait/articles/1408/26/news030.html

0