Author: Soc

  • Kiểm thử tự động cùng Robot Framework dành cho tester

    I. Giới thiệu

    1. Tổng quan về Robot Framework

    Robot Framework là một testing framework. Nó cung cấp mọi thứ cần thiết để xây dựng và phát triển một kịch bản kiểm thử, gồm điều kiện đầu vào/kết thúc, báo cáo kết quả, … Điểm hấp dẫn của Robot Framework với các tester chính là chúng ta không cần quan tâm đến các thuật toán lập trình cơ bản nhất. Mọi thứ chúng ta cần làm chính là viết ra một kịch bản kiểm thử dựa trên các từ khóa (keyword) mà thôi.

    Cụ thể hơn, Robot Framework là:

    • Framework dùng để kiểm thử, cung cấp nền tảng kiểm thử cho tester dựa trên ngôn ngữ lập trình Python. Cách tiếp cận của nền tảng kiểm thử này là hướng từ khoá (keyword driven) và hướng dữ liệu (data driven) dành cho việc kiểm thử để nghiệm thu sản phẩm ngay từ đầu (end-to-end acceptance testing).
    • Để tiếp cận nền tảng kiểm thử này, tester chỉ cần viết kịch bản kiểm thử theo hướng từ khóa (keyword driven) và hướng dữ liệu (data driven).
    • Tester có thể tạo các từ khóa cấp cao mới từ những cái hiện có bằng cách sử dụng cú pháp tương tự được sử dụng để tạo ra các trường hợp thử nghiệm.

    Các tính năng nổi bật của Robot Framework:Những việc làm hấp dẫn

    • Robot Framework giúp chúng ta thực hiện kiểm thử tự động với kịch bản ở dạng bảng một cách dễ dàng. Robot Framework đưa ra kết quả thực thi các kịch bản kiểm thử và các log ở dạng html, giúp chúng ta đọc và phân tích kết quả nhanh chóng và dễ dàng hơn.
    • Robot Framework có hỗ trợ chức năng đánh dấu các kịch bản kiểm thử, cho phép chúng ta lựa chọn kịch bản kiểm thử tiện lợi và nhanh chóng.
    • Thế mạnh lớn nhất của Robot Framework chính là khả năng chạy trên nhiều hệ điều hành khác nhau mà không cần chỉnh sửa kịch bản kiểm thử hay các từ khóa ở tầng dưới.

    2. Các thư viện hỗ trợ trong Robot Framework

    Robot Framework có rất nhiều thư viện hỗ trợ cho việc kiểm thử tự động, có thể tham khảo các thư viện dành cho Robot Framwwork tại http://robotframework.org/#test-libraries .

    7c09fc7530966020cdd4ebce92806688bee90a11

    Tuy nhiên, trong nội dung bài viết này, chúng tôi sẽ tập trung giới thiệu 2 thư viện phổ biến nhất đó là Selenium2Library và Calculator Library.

    2.1 Selenium2Library

    • Selenium2Library được sử dụng để kiểm thử trên nền Web, và được fork từ SeleniumLibrary và được bổ sung để sử dụng Selenium 2 và WebDriver.
    • Selenium2Library hoạt động ở hầu hết các trình duyệt hay dùng như IE, Firefox, Safari, Chrome, … và có thể được dùng với cả Python và Jython.

    Để chạy các testcase bằng cách sử dụng Selenium2Library, trước tiên bạn cần:

    1. Cài đặt Selenium2Library,
    2. Import Selenium2Library vào các testsuite Robot.
    3. Dùng từ khóa Open Browser để bật trình duyệt muốn dùng kiểm thử.

    Tại sao nên sử dụng thư viện Selenium2Library?

    Selenium2Library là ngôn ngữ rất sát với ngôn ngữ thực tế của người dùng, bạn mong muốn action gì bạn chỉ cần gõ từ khóa tương ứng.

    Ví dụ:

    • input text: nhập chuỗi ký tự
    • click button: nhấp chuột
    • double click element: nhấp đôi chuột vào element
    • get alert message: lấy giá trị của thông báo
    • open context menu: mở các menu con
    • v.v…

    Tìm hiểu thêm tại:

    2.2 CalculatorLibrary

    Tiếp theo ta sẽ tìm hiểu về một thư viện được có sẵn trong Robot Framework, một thư viện về tính toán đơn giản, nó chỉ chứa logic nghiệp vụ chứ không bao gồm phần UI.

    Chúng ta cùng đi qua một ví dụ về CalculatorLibrary và cùng run một test case đơn giản để có thể hiểu hơn về Robot Framework.

    Bạn có thể tải bản demo tại đây: https://bitbucket.org/robotframework/robotdemo/downloads.

    Ví dụ:

    b94e442c87eff8f32e9e0c55418f3c5f7c165569

    Ví dụ trên bao gồm 5 Testcases: Trong đó có 4 TCs ví dụ trường hợp PASSED, và 1 TC ví dụ về trường hợp FAILED:

    • Push button PASSED
    • Push multiple buttons FAILED
    • Simple calculation PASSED
    • Longer calculation PASSED
    • Clear PASSED

    Các keyword thì khá đơn giản và dễ hiều nên mình không giải thích gì thêm. Bây giờ chúng ta sẽ chạy thử 5 TCs này bằng Terminal trên Linux như sau:

    1. Download thư viện và có sẵn tại: https://bitbucket.org/robotframework/robotdemo/downloads.
    2. Mở terminal và trỏ đến folder chứa file vừa download.
    3. Run Test case “keyword_driven.robot” bằng command sau: $ robot keyword_driven.robot.
    a5fabe04a9d9d31297524951b7ba35c005bd9856

    Kết quả là 4 TCs Pass và 1 TC Failed.

    Kết luận: Đối với Robot Framework chúng ta không cần phải biết lập trình để viết testcase và script như những công cụ khác. Đối với những yêu cầu đơn giản và nhanh chóng thì Robot Framework là một sự lựa chọn phù hợp.

    II. Cài đặt

    Phần này sẽ hướng dẫn cách cài đặt RF cùng với Selenium trên Linux và Windows.

    1. Cài đặt Robot Framework

    Bước 1. Cài đặt Python.

    Trước hết, vì Robot Framework là một nền tảng kiểm thử dựa trên nền tảng Python, nên trước tiên cần cài đặt Python (nên cài Python 2.5 hoặc mới hơn – khuyến cáo cài đặt Python 2.7).

    Linux: Python thường đi kèm với cài đặt Ubuntu/Linux. Để kiểm tra xem Python đã cài đặt chưa, cũng như phiên bản của nó, dùng câu lệnh sau trên Terminal (có thể dùng phím tắt Ctrl+Alt+T để bật Terminal: $ python –version. Nếu Python đã được cài đặt, bạn sẽ nhìn thấy phiên bản của nó, chẳng hạn Python 2.7.6.

    Windows: Tương tự như trên Linux, bạn hãy bật cmd lên và kiểm tra xem python đã được cài đặt chưa bằng lệnh: python –version. Nếu chưa, đi đến https://www.python.org/ và tải phiên bản Python tương ứng và cài đặt nó.

    Bước 2. Cài đặt PIP (Python Package Manager).

    Linux: PIP là một package manager cho việc thiết lập các gói Python. Để cài đặt PIP, dùng câu lệnh sau:

    $ wget https://bootstrap.pypa.io/get-pip.py

    $ sudo python get-pip.py

    Windows: PIP đã được cài đặt nếu bạn đang dùng phiên bản Python 2 >=2.7.9 hoặc Python 3 >=3.4 tải xuống từ https://www.python.org/, tuy nhiên bạn sẽ cần nâng cấp PIP bằng lệnh sau:

    python -m pip install -U pip

    Bước 3. Cài đặt gói Robot Framework bằng cách sử dụng PIP.

    Linux: Dùng câu lệnh sau để cài đặt Robot Framework:

    $ sudo pip install robotframework

    Phiên bản mới nhất của Robot Framework sẽ được cài tự động. Nếu muốn cài một phiên bản cụ thể, chỉ việc thêm vào, chẳng hạn:

    $ sudo pip install robotframework==2.8.4

    Sau khi cài đặt hoàn tất, dùng câu lệnh sau để xem việc cài đặt đã thành công chưa: $ pybot –version. Bạn sẽ nhìn thấy thông tin phiên bản Robot Framework nếu thiết lập thành công.

    Windows: Tại cửa sổ Command promt, chuyển tới thư mục cài đặt Python và dùng lệnh sau để cài đặt RF:

    pip install robotframework

    Sau khi cài đặt thành công, dùng pybot –version để kiểm tra:

    85a54dbbe7e47d670d9649022a42a348851f4d99

    2. Cài đặt Selenium2Library

    Để làm việc với Webdriver (Selenium2) và Robot Framework, bạn cần cài đặt Selenium2Library bằng cách sử dụng PIP:

    Linux: Dùng câu lệnh sau: $ sudo pip install robotframework-selenium2library

    Câu lệnh này sẽ tự động cài các dependency của nó, gồm decorator, và các gói Selenium. Ngay sau khi hoàn tất cài đặt, dùng câu lệnh $ python để chuyển đến cửa sổ của python:

    086ea3973c728c0a8dc436a8df6705c44611876a

    Ở cửa sổ này, gõ câu lệnh sau để import Selenium2 Library: >> import Selenium2Library.

    Nếu không thấy lỗi nào bắn ra nghĩa là thư viện Selenium2 đã được cài thành công. Nếu muốn thoát khỏi cửa sổ Python, dùng lệnh exit().

    Windows: Tại cửa sổ Command promt, dùng lệnh: pip install robotframework-selenium2library. Sau khi cài đặt thành công sẽ có thông báo như sau:

    e0077af87537efcafad673aec2cde3c38638274d

    3. Cài đặt RIDE (Standalone RobotFramework Test Data Editor)

    RIDE là một IDE để xây dựng kiểm thử bằng cách sử dụng Robot Framework. Ngoài RIDE ra, bạn có thể thay thế bằng SublimeText, IntelliJ hay Eclipse, … Vì RIDE được phát triển bằng cách sử dụng wxPython nên bạn cần cài bộ tool wxPython 2.8 có hỗ trợ unicode để chạy RIDE. Cụ thể như sau:

    Linux: Dùng câu lệnh sau để cài wxPython:

    $ sudo apt-get install python-wxgtk2.8

    $ sudo apt-get install python-wxversion

    Tiếp theo, dùng câu lệnh sau để cài RIDE:

    $ sudo pip install robotframework-ride

    Để xác minh xem việc cài đặt đã OK chưa, chạy câu lệnh sau: $ ride.py. Ứng dụng RIDE sẽ bật lên như sau:

    072281cc7ba1c61ffa0c24a1f95ea0756e379105

    Windows:

    c92c89abad3eba6ebfaac1b799ae6387919069e0
    3a74e904945698ffa13d88086b6bd922e79fc89d
    • Tại cửa sổ Command promt, dùng lệnh: pip install robotframework-ride để cài đặt RIDE.
    • Sau khi cài đặt thành công sẽ có thông báo như sau
    eb3219bf61baabb75d7a4a35b0a5111ebea0097c
    • Dùng lệnh: ride.py để khởi động RIDE.

    III. Cách bắt phần tử giao diện

    1. Tổng quan XPath

    • XPath là một cách để phân tích mã HTML nhằm xác định các yếu tố của một web driver.
    • Là ngôn ngữ hỗ trợ tìm kiếm thông tin trong tài liệu XML qua việc sử dụng biểu thức XPath để định hướng tìm kiếm dữ liệu trên XML thay vì phải thực hiện tìm kiếm đệ qui để duyệt cây XML.
    • Xpath định nghĩa 7 loại nodes theo mô hình thể hiện bên dưới từ root, element, attribute, text, namespace, processing-instruction và comment.
    • Ngoài ra, Xpath còn định nghĩa một số node đặc biệt để thể hiện mối quan hệ giữa các node trong mô hình trong quá trình xử lý như sau:
    1. Parent Node: node trên trực tiếp của node hiện hành.
    2. Child Node: tập node trực tiếp của node hiện hành cấp thấp hơn.
    3. Sibling: node ngang hàng hay cùng cha với node hiện hành.
    4. Ancestors: tất cả node con bên trên node hiện hành cùng nhánh.
    5. Descendants: tất cả node con bên dưới của node hiện hành cùng nhánh.

    Cú pháp của XPath:

    • Để truy vấn với đường dẫn tuyệt đối nghĩa là đi từ root của tài liệu XML đến các thành phần cần truy cập, XPath qui định với cú pháp bắt đầu bằng dấu /
    • Để truy vấn với đường dận tương đối để có thể truy cập đến thành phần bất kỳ thỏa điều kiện, XPath qui định cú pháp sử dụng với dấu //
    • Để truy vấn đến một thành phần bất kỳ mà không cần biết tên của nó là gì, XPath qui định ký tự sử dụng là *.
    • Để truy cập thuộc tính của một node, XPath qui định thuộc tính truy vấn phải có cú pháp bắt đầu là @.Ví dụ @tênThuộcTính.
    • Điều kiện khi truy vấn được đặt trong dấu []
    • Truy vấn lựa chọn nodes
    Biểu thứcĐịnh nghĩa
    tênNodeChọn tất cả các node con của tênNode.
    /Chọn tất cả các node tính từ root.
    //Chọn tất cả node tính từ node hiện hành.
    .Chọn node hiện hành.
    ..Chọn node cha của node hiện hành.

    Các phép toán được sử dụng trong XPath:

    • Đại số: +, -, * (nhân), div (chia thập phân), mod (chia lấy dư)
    • So Sánh hay quan hệ: =, != (khác), <, <=, >, >=
    • Luận lý: true, false, and, or, not
    • Kết hợp: | (hội)

    2. Cách bắt XPath bằng Firebug và FirePath

    Firebug và FirePath là 2 add-ons hỗ trợ cho việc bắt XPath nhanh và dễ dàng hơn trên Firefox browser.

    Cài đặt Firebug và FirePath:

    1. Trên Firefox browser, chọn icon [Open Menu] -> Add-ons.
    2. Tìm và cài đặt Firebug, FirePath.

    Sau khi cài đặt thành công, Firebug và FirePath xuất hiện trong mục Extensions và các icon của chúng sẽ xuất hiện trên thanh công cụ của Firefox.

    2b510b64cc5c74744898385a5d3c4895ab138f7f

    Sử dụng Firebug và FirePath:

    • Nhấp vào icon con bọ -> chọn thẻ FirePath.
    • Nhấp vào ký hiệu con mũi tên bên cạnh con bọ -> tiếp nhấp chuột vào element cần lấy xpath. xpath của element đó sẽ hiển thị:
    d1fbc9c3854ef35c3353076e1ba16bd7c621a5da

    Lưu ý:

    • XPath lấy được từ FirePath chỉ mang tính chất tham khảo và giúp người dùng xác định phần tử dễ dàng hơn.
    • XPath lấy được từ FirePath là cách đơn giản nhất nhưng lại chưa đảm bảo tính ổn định và duy nhất khi version của web page thay đổi. Vậy nên, người dùng có thể sử dụng một số cách hỗ trợ truy vấn sau để bắt XPath nhằm tăng tính ổn định và khả dụng khi muốn sử dụng các element liên quan đến nhau một cách chính xác hơn:
    AxisĐịnh nghĩa
    ancestorChọn tất cả các node trên của node hiện hành.
    ancestor-or-selfChọn tất cả các node trên của node hiện hành và chính nó.
    attributeChọn tất cả các thuộc tính của node hiện hành.
    childChọn node con của node hiện hành.
    descendantChọn tất cả các node dưới của node hiện hành.
    descendant-or-selfChọn tất cả các node dưới của node hiện hành và chính nó.
    followingChọn tất cả các node sau khi tag đóng của node hiện hành.
    following-siblingChọn tất cả các node ngang cấp sau khi tag đóng của node hiện hành.
    namespaceChọn tất cả namespace của node hiện hành.
    parentChọn tất cả node cha của node hiện hành.
    precedingChọn tất cả các thành phần trước khi bắt đầu tag mở của node hiện hành.
    preceding-siblingChọn tất cả các node ngang hàng trước khi bắt đầu tag mở của node hiện hành.
    selfChọn node hiện hành.

    Ví dụ:

    Vd1: ancestor

    1. Hiển thị tất cả các thẻ cha có chứa thẻ div id=<”identifier-shown”>, ko bao gồm thẻ div id=<”identifer-shown”> được inspect từ trang Login Gmail.
    fb1b340719938f5b70b42e784bf1d152f32404ab
    1. Nếu chỉ muốn hiển thị thẻ cha được chỉ định.
    347ef0cedd9f6ff09d2cfba5d6a3db99e50b6898

    Vd2: ancestor-or-self

    Hiển thị các thẻ cha và cả thẻ div id=<”identifier-shown”>, có bao gồm thẻ div id=”<identifier-shown>” được inspect từ trang Login Gmail.

    278d8b8f2a7b923f6b3c28327e8823d4741457e2

    Vd3: attribute

    Chọn tất cả các attribute hiện hành của nút Next ở trang Login Gmail.

    b5ad5ea2eab13aed28dea354e9437a6a3032919b

    Vd4: child

    Chọn tất cả các thẻ con của thẻ div class=”input-wrapper focused”.

    6152b5513962f8991e981c2b0f2cbe8575b96257

    Vd5: descendant

    Chọn tất cả các thẻ con và cháu của thẻ div id=”input-wrapper focused”, ko bao gồm thẻ div id=”input-wrapper focused”.

    96aa0fe73cb7df41d982193eb3b52dc4bbc60eeb

    Vd6: descendant-or-self

    Chọn tất cả các thẻ con và cháu của thẻ div id=”input-wrapper focused”, bao gồm cả thẻ div id=”input-wrapper focused”.

    374b38776e68e15f57e36fd056c93f70f6f47757

    Vd7: following

    1. Hiển thị tất cả các thẻ sau thẻ đóng của thẻ div class=”identifier-wrapper focused”.
    f82c138b5de9639827b4a1a9230339c221f390ba
    1. Hiển thị 1 thẻ sau thẻ đóng của thẻ div class=”identifier-wrapper focused”.
    9566b8874419e55d44286a49173ddf7cd713a883

    Vd8: following-sibling

    Hiển thị các thẻ sibling sau thẻ đóng của thẻ div class=”input-wrapper focused”.

    ca6db17bf580a6fc4d1afbb2ffc7759414d04c8c

    Vd9: parent

    Chọn tất cả thẻ cha của thẻ div class=”input-wrapper focused”.

    16d6dcb79d278326f232eee009cfbe09f898f5d1

    Vd10: preceding

    Chọn tất cả các thẻ trước thẻ input id=”next”, ngoại trừ các ancestor và attribute.

    b328b438090e7a67f184b8973b6b954530b9d395

    Vd11: contains()

    Chọn tất cả các phần tử có chứa text là “Create”.

    db1ce283d67472980df94cf6a90833ebe736b22a

    IV. Demo

    Ngữ cảnh: Đăng nhập vào trang http://www.chatwork.com/ thành công.

    Các bước thực hiện:

    Bước 1. Tạo một Project mới.

    • i. Nhấp chọn File –> New Profile.
    • ii. Nhập Name và chọn Type – Directory, Format – HTML.
    211ec6ddfbb1457c6d91357e968da51ff864779c

    Bước 2. Tạo Interface.

    • i. Nhấp phải chọn Project folder và chọn Test Suite.
    a75a1823bf1388333107559ca6b994df0fa5eda6

    ii. Đặt tên “Interface”.

    0530a02b087c4672f7252509de509e2a8c87ddf5

    iii. Nhấp phải chọn thư mục Interface –> New Resource.

    562c945bba4f5e3da63be958a413d6f2940b929a
    bcfa6c3d571a0987751ec8afd4936b0e3f1020bb

    iv. Nhấp phải chọn Interface resource –> New Scalar.

    d988bc7f6a51bed3d96e8202bfb69cf5bba18661
    337f06616c72772a4fcdf662e1e8e9a625f9b61f

    Bước 3. Tạo New Action.

    • i. Nhấp phải chọn Project Name –> New Suite.
    • ii. Tạo mới suite “Action”.
    273b7ee418507ff200fa1c86a1ba1862e256cf38

    iii. Tương tự như Interface, tạo New Source cho Action bằng cách nhấp phải chọn “Action”.

    e2718e1f236521b4a4b718515505604f222ce433
    1d1be3475039d40ae42c3f63572545128b1331ae

    iv. Thêm New User Keyword.

    c8d46e495b8f5950bae913cf471aea9828d1b6a5
    b0d36811a6a32695ea6475acf74008c3b6b67089

    v. Thêm Selenium2Library cho mỗi action.

    a7693ebb2f54ea76a63d8d8a0c28150b2a47c07b

    vi. Import Interface của page tương ứng vào bằng cách bấm Resource và trỏ đến thư mục chứa Interface.

    2382ecdba71ea77a1292701f1e9fe93a7256247a

    vii. Tạo các bước thực thi kiểm thử:

    dccb5b180a148c84e80df86b0af263a09d9fd5c8

    Bước 4. Tạo Testsuite.

    • i. Nhấp phải chọn thư mục dự án, chọn “New Suite”. Tạo Test Suite bằng File txt.
    a10719a6e9e839600ff05d04ef1ea03215334f40
    e22a1270422cc84de7dc71f6394a32097e641ce8

    ii. Thêm Library và Resource.

    8b4e0e02719a6413c7e314dbcdeb60310da347ee

    Bước 5. Tạo Testcase.

    • i. Nhấp phải chọn testsuite vừa tạo, chọn “New Test Case”. Sau đó điền tên Test case.
    e6ef5e416f1ca33cef7966fd0b5427c22a330394
    284310247cf64ebe4c844d291836fc06eb897a5f
    • ii. Viết script cho testcase.
    0bdb909df2a546a4ac483f0de1554d7125f914db

    Bước 6. Thực thi testsuite.

    d57e08d43866db4c2b1f0e55a629f8a0d4363ff4

    Bước 7. Kiểm tra kết quả.

    e7f0ef58678c18a5b97a60c8acd846d5db588259
    f8da3fd9b4bf31c6e5d335ef0a9da96f099c8370
    9dbf74f16b6f43d9f5f288b6a647d3bb3ec9b686

    V. Tham khảo

    Techtalk via Viblo

  • APPIUM Tutorial cho kiểm thử Android & iOS Mobile App

    Appium là gì?

    APPIUM là framework mã nguồn mở để kiểm thử UI cho các ứng dụng di động. Appium cho phép thử nghiệm ứng dụng native, hibrid và ứng dụng web, hỗ trợ test automation trên các thiết bị cũng như cả emulator hoặc simulator. Nó còn hỗ trợ kiểm thử cross-platform , tức là API đơn hoạt động cho kiểm thử Android và iOS.

    APPIUM KHÔNG phụ thuộc vào hệ điều hành thiết bị di động. Bởi vì APPIUM có khung hoặc trình bao bọc dịch các lệnh Selenium WebSearch thành các lệnh UIAutomation (iOS) hoặc UIAutomator (Android) tùy thuộc vào loại thiết bị, hệ điều hành nào.

    Appium hỗ trợ tất cả các ngôn ngữ có Selenium client librarie như- Java, Objective-C, JavaScript với node.js, PHP, Ruby, Python, C #, v.v.

    Trong hướng dẫn này, chúng ta sẽ tìm hiểu về:

    • APPIUM hoạt động như thế nào?
    • Điều kiện tiên quyết để sử dụng APPIUM
    • Cài đặt máy tính để bàn Appium:
    • Appian Inspector
    • Đính kèm Trình giả lập Android với Appium
    • Trường hợp kiểm tra APPIUM cho ứng dụng Android gốc (Máy tính)
    • Hạn chế sử dụng APPI
    • Các lỗi thường gặp và các bước khắc phục sự cố trong Appium

    APPIUM hoạt động như thế nào?

    • Appium là một ‘HTTP Server’ được viết bằng nền tảng Node.js và điều khiển iOS và phiên Android sử dụng giao thức dây JSON của Webdo. Do đó, trước khi khởi chạy Máy chủ Appium, Node.js phải được cài đặt sẵn trên hệ thống.
    • Khi Appium được tải xuống và cài đặt, thì máy chủ sẽ được thiết lập trên máy của chúng tôi hiển thị API REST.
    • Nó nhận được kết nối và yêu cầu lệnh từ máy khách và thực hiện lệnh đó trên thiết bị di động (Android / iOS).
    • Nó phản hồi lại với các phản hồi HTTP. Một lần nữa, để thực hiện yêu cầu này, nó sử dụng các khung tự động kiểm tra di động để điều khiển giao diện người dùng của các ứng dụng. Một khung như: –
    • Apple Cụ cho iOS (Dụng cụ chỉ khả dụng trong Xcode 3.0 trở lên với OS X v10.5 trở lên)
    • Google UIAutomator cho Android API cấp 16 trở lên
    • Selendroid cho API Android cấp 15 trở xuống

    Điều kiện tiên quyết để sử dụng APPIUM

    1. Cài đặt ANDROID SDK (Studio)
    2. Cài đặt JDK (Bộ phát triển Java)
    3. Cài đặt Eclipse
    4. Cài đặt TestNg cho Eclipse
    5. Cài đặt máy chủ Selenium
    6. Appium Client Library
    7. APK App Info on Google Play
    8. js (Không bắt buộc – Bất cứ khi nào máy chủ Appium được cài đặt, theo mặc định, nó đi kèm với “Node.exe” & NPM. Nó được bao gồm trong phiên bản hiện tại của Appium.)
    9. Install Appium Desktop

    Cài đặt Appium Desktop: Appium Studio là một ứng dụng GUI nguồn mở để cài đặt Máy chủ Appium. Nó đi kèm với tất cả các điều kiện tiên quyết để cài đặt và sử dụng Máy chủ Appium. Nó cũng có Thanh tra để nhận thông tin cơ bản trên Ứng dụng của bạn. Nó đi kèm với một Trình ghi để tạo mã soạn sẵn để tự động hóa các ứng dụng di động của bạn.

    Bước 1)

    Truy cập http://appium.io/ và nhấp vào Tải xuống Appium.

    Bước 2)

    Đối với Windows, chọn tệp exe và tải xuống. Tệp khoảng 162 MB sẽ mất thời gian để tải xuống dựa trên tốc độ internet của bạn.

    Bước 3)

    Nhấp vào exe đã tải xuống.

    Bước 4)

    Trên máy Windows, không cần cài đặt Appium. Nó chạy trực tiếp từ exe. Khi bạn nhấp vào exe, bạn sẽ thấy hình ảnh sau đây trong vài phút.

    Đối với Mac, bạn cần cài đặt dmg

    Bước 5)

    Tiếp theo bạn sẽ thấy Cửa sổ khởi động máy chủ. Nó điền vào tùy chọn máy chủ và cổng mặc định mà bạn có thể thay đổi. Nó cũng đề cập đến phiên bản của Appium đang được sử dụng.

    Bước 6)

    Khi nhấp vào nút Máy chủ Bắt đầu, một máy chủ mới được khởi chạy trên máy chủ và cổng được chỉ định. Đầu ra nhật ký máy chủ được hiển thị.

    Bước 7)

    Nhấp vào Cửa sổ Phiên mới .

    Bước 8)

    Bạn có thể nhập Khả năng mong muốn và bắt đầu một phiên.

    Appian Inspector

    Tương tự như công cụ ghi và phát lại Selenium IDE, Appium có ‘Inspector’ để ghi và phát lại. Nó ghi lại và phát hành vi ứng dụng gốc bằng cách kiểm tra DOM và tạo các tập lệnh thử nghiệm bằng bất kỳ ngôn ngữ nào bạn muốn. Tuy nhiên, hiện tại, không có hỗ trợ cho Thanh tra Appium cho Microsoft Windows. Trong Windows, nó khởi chạy Appium Server nhưng không kiểm tra các phần tử. Tuy nhiên, trình xem UIAutomator có thể được sử dụng như một tùy chọn để Kiểm tra các phần tử.

    Các bước để bắt đầu với Appium Inspector trên máy Mac: –

    Bước 1)

    Tải xuống và khởi động máy chủ Appium của bạn với Địa chỉ IP mặc định 0.0.0.0 và cổng 4725.

    Chọn tệp nguồn hoặc tệp .app từ cục bộ để kiểm tra. Kiểm tra hộp kiểm ‘Đường dẫn ứng dụng’ để bật nút ‘Chọn’.

    Bước 2)

    Bây giờ, bấm vào nút ‘Chọn’ sẽ cung cấp tùy chọn để duyệt và chọn tệp kiểm tra từ ổ đĩa cục bộ.

    Bước 3)

    Khởi động Trình mô phỏng trên máy Mac.

    Bước 4)

    Nhấp vào nút ‘Khởi chạy’ từ góc trên bên phải, cho phép biểu tượng màu xanh lam. Một lần nữa, nhấp vào biểu tượng màu xanh này, nó sẽ mở Trình kiểm tra và Trình mô phỏng Appium với một ứng dụng được chọn trước.

    Bước 5)

    • Khởi chạy Trình kiểm tra Appium của bạn sẽ hiển thị phân cấp thành phần trong cấu trúc theo cột. Ngoài ra, người dùng có thể áp dụng các hành động bằng các nút như Tap, Swipe, v.v.

    Bước 6)

    Nhấp vào nút ‘Dừng’ để dừng ghi âm.

    Attach Android Emulator cho Appium

    Bước 1)

    Cài đặt SDK Android trong hệ thống của bạn.

    Chuyển đến Bảng điều khiển >> Hệ thống và Bảo mật >> Hệ thống và từ bảng điều khiển bên trái, nhấp vào Settings Cài đặt hệ thống nâng cao ‘. Từ ‘Thuộc tính hệ thống’ bật lên, nhấp vào tab ‘Nâng cao’ và sau đó nhấp vào nút “Biến môi trường”.

    Bước 2)

    Bây giờ, từ ‘Biến môi trường’ bật lên, ‘nhấp đúp chuột vào’ Đường dẫn ‘và đặt biến ANDROID_HOME trỏ đến thư mục SDK của bạn. Trong đường dẫn nối thêm toàn bộ đường dẫn thư mục SDK.

    ví dụ: C: \ Người dùng \ ABC \ Máy tính để bàn \ adt-bundled-windows-x86_64-20140321 \ sdk

    Bước 3)

    Khởi động trình giả lập Android hoặc bất kỳ thiết bị Android nào gắn vào hệ thống của bạn (Đảm bảo bạn đã bật tùy chọn Gỡ lỗi Android trong thiết bị Android của mình. Để kiểm tra Tùy chọn gỡ lỗi. Đi đến Cài đặt thiết bị >> Tùy chọn nhà phát triển >> Kiểm tra “Tùy chọn gỡ lỗi” ).

    Bước 4)

    Mở Dấu nhắc lệnh và điều hướng đến thư mục \ platform-tools \ của SDK Android (Ví dụ: D: \ adt-bundle-windows-x86_64-20130514 \ sdk \ platform-tools).

    Bước 5)

    • Chạy lệnh ‘adb thiết bị’. Bạn có thể thấy thiết bị được kết nối của mình được liệt kê trong cửa sổ Dấu nhắc Lệnh. (Trong CMD ghi ‘> thiết bị adb’- Lệnh này sẽ liệt kê các phiên bản trình giả lập được kết nối. Ví dụ: adb hès giả lập-5554 cài đặt <Vị trí của tệp .apk>)

    Bước 6)

    • Chạy lệnh ‘adb start-server’. Nó sẽ khởi động máy chủ ADB sẽ được Appium sử dụng để gửi lệnh đến thiết bị Android của bạn.

    Bước 7)

    Bây giờ, điều hướng đến thư mục Appium trong hệ thống của bạn và bắt đầu Appium bằng cách nhấp vào tệp Appium.exe.

    Bước 8)

    Không thay đổi địa chỉ IP hoặc số cổng và nhấp vào nút ‘Khởi chạy’. Bảng điều khiển Appium của bạn bắt đầu từ 127.0.0.1:4723 như hiển thị bên dưới.

    Bước 9)

    Nhấp vào nút ‘Bắt ​​đầu’, máy chủ Appium bắt đầu chạy trên hệ thống của bạn.

    Trường hợp kiểm tra APPIUM cho ứng dụng Android gốc (Máy tính)

    Bước 1)

    Tải xuống plugin nhật thực ADT hoặc tải xuống gói ADT riêng tại đây

    Bước 2)

    Mở Eclipse và tạo một dự án mới >> Gói >> Lớp

    Bước 3)

    Nhập thư viện Selenium và Testng bên trong dự án mới đó.

    Bước 4)

    Bây giờ Tạo Chương trình thử nghiệm nhỏ cho ‘Calculator.app’ để tổng hai số.

    gói src_Appium; 
    nhập java.net.MalformedURLException; 
    nhập java.net.URL; 
    nhập org.openqa.selenium.By; 
    nhập org.openqa.selenium.WebDriver; 
    nhập org.openqa.selenium.WebEuity; 
    // nhập org.openqa.selenium.remote.CapabilityType; 
    nhập org.openqa.selenium.remote.DesiredCapabilities; 
    nhập org.openqa.selenium.remote.RemoteWebDriver; 
    nhập org.testng.annotations. *; 
    
    
    Máy tính lớp công khai { 
    Trình điều khiển WebDriver; 
    
    @B BeforeClass 
    void void setUp () ném MalformedURLException { 
    	// Thiết lập các khả năng mong muốn và chuyển gói hoạt động ứng dụng và gói ứng dụng Android cho Appium 
    	DesiredCapabilities ability = new DesiredCapabilities ();
    	ability.setCapability ("BROWSER_NAME", "Android"); 
    	ability.setCapability ("VERSION", "4.4.2"); 
    	ability.setCapability ("deviceName", "Trình giả lập"); 
    	ability.setCapability ("platformName", "Android"); 
     
       
       ability.setCapability ("appPackage", "com.android.calculator2"); 
    // Tên gói này của ứng dụng của bạn (bạn có thể lấy nó từ ứng dụng thông tin apk) 
    	ability.setCapability ("appActivity", "com.android.calculator2.Calculator"); 
       trình điều khiển = new RemoteWebDriver (URL mới ("http://127.0.0.1:4723/wd / hub "), khả năng);
    
       // định vị Văn bản trên máy tính bằng cách sử dụng By.name () 
       WebEuity Two = driver.findEuity (By.name ("2")); 
       hai.click (); 
       WebEuity plus = driver.findEuity (By.name ("+")); 
       dấu cộng.click (); 
       WebEuity bốn = driver.findE bổ sung (By.name ("4")); 
       bốn.click (); 
       WebEuity bằngTo = driver.findE bổ sung (By.name ("=")); 
       bằngTo.click (); 
       // xác định vị trí hộp chỉnh sửa của máy tính bằng cách sử dụng By.tagName () 
       WebEuity results = driver.findEuity (By.tagName ("EditText")); 
    	// Kiểm tra giá trị tính toán trên hộp chỉnh sửa
    khẳng định kết quả.getText (). bằng ("6"): "Giá trị thực tế là:" + results.getText () + "không khớp với giá trị mong đợi: 6"; 
    
    } 
    
    @AfterClass 
    công khai void void () { 
    	// đóng trình điều khiển ứng 
    	dụng.quito (); 
    } 
    }
    

    Những mặt hạn chế của APPI

    Appium không hỗ trợ thử nghiệm Phiên bản Android thấp hơn 4.2 Hỗ trợ hạn chế để thử nghiệm ứng dụng lai. ví dụ: không thể kiểm tra hành động chuyển đổi của ứng dụng từ ứng dụng web sang nguồn gốc và ngược lại. Không hỗ trợ để chạy Appium Inspector trên Microsoft Windows.

    Nguồn: https://www.guru99.com/introduction-to-appium.html

  • Nguyên nhân và giải pháp để tối ưu và tăng tốc độ tải trang web

    • Tại sao tốc độ website lại chậm ?
    • Làm sau để khắc phục website quá chậm như vậy ?
    • Tăng tốc website bằng cách nào ?
    • Tốc độ website làm ảnh hướng đến việc SEO của tôi giải quyết thế nào ?

    Đối với những website cao cấp tốc độ tải trang rất quan trọng. Người dùng chỉ hứng thú với những website load nhanh, còn khi một trang web đáp ứng chậm, khách sẽ mất kiên nhẫn và khả năng họ quay lại sẽ là rất thấp. Như vậy, những người tìm kiếm thông tin thường rất sốt ruột khi phải đợi những trang web được tải xuống. Nếu những trang Web của bạn không đủ nhanh, nhiều người tìm kiếm thông tin sẽ ra đi mà không thèm xem trong website có thứ gì.

    Cải thiện tốc độ tải trang không chỉ quan trọng đối với người dùng mà còn quan trọng với công cụ tìm kiếm. Tháng 4 năm ngoái Google đã công bố tốc độ tải trang là một trong những yếu tố xếp hạng trong thuật toán của họ.

    Có vài điều giúp bạn có thể làm tăng tốc độ web site của bạn. Tất nhiên, bạn cần phải chắc chắn rằng web của bạn được lưu giữ bởi những máy chủ đáng tin cậy và nhanh. Ngoài việc lưu giữ website của bạn trên một máy chủ nhanh, bạn có thể làm những việc sau đây để cải thiện thời gian tải của những trang Web của bạn.

    Nguyên nhân phổ biến khiến tốc độ tải trang chậm

    Nguyên nhân phổ biến khiến tốc độ tải trang chậm

    – Cái đặt Plugin, Script,… từ bên thứ 3: Có rất nhiều Plugin cả miễn phí, cả trả phí rất hấp dẫn với bạn. Bạn cài đặt chúng vào và không biết chúng ảnh hưởng như thế nào đến tốc độ tải trang? Cài đặt quá nhiều ứng dụng bên thứ 3 thiếu kiểm soát chính là một trong những nguyên nhân hàng đầu tăng gánh nặng cho Website bạn.

    – Chưa tối ưu HTML, CSS, js..: Dư thừa mã css và js, viết mã tạo nhiều file css và js. Css dùng nhiều hình ảnh làm hình nền. Mã nguồn cồng kềnh, bừa bộn, là một nguyên nhân không nhỏ tăng dung lượng Website của bạn lên và từ đó sẽ khiến thời gian tải về tăng lên đáng kể.

    – Không gzip source code trong khi truyền tải dữ liệu đến người xem qua đường truyền internet.

    – Người coder không xóa các ghi chú trong quá trình phát triển website.

    – Hình ảnh chất lượng cao và nặng: Do kích thước hình ảnh quá lớn so với kích thước người dùng xem. Làm tăng thời gian tải trang web. Chúng tôi biết là trông chúng sẽ rất đẹp, hình ảnh sắc nét, nhưng nếu bạn cứ Update thẳng những tấm hình 4, 5MB hoặc hơn lên Web, bao giờ người dùng mới tải xong chúng đây?.

    – Dịch vụ hosting kém chất lượng: Khách hàng lớn nhưng cấu hình server thấp, bảo mật kém, khoản cách địa lý…

    – Người quản trị copy từ các nguồn như: tin tức báo trí, các diễn đàn… không xử lý lại thông tin làm tạo các mã mà hệ thống không hỗ trợ.

    – Lượng khác hàng truy cấp website lớn nhưng dịch vụ hosting chưa nâng cấp xứng tầm.

    – Sử dụng dịch vụ web (webservice) từ nhà cung cấp thứ ba hay bạn đặt quá nhiều quảng cáo.

    – Hacker add các đoạn mã ăn cấp thông tin người dùng hay thực hiện các lệnh nhằm phá hỏng hệ thống.

    – Sử dụng nhiều file flash ảnh hưởng đến quá trình xử lý của trình duyệt web.

    Và theo thống kê sơ bộ của ADC việc ảnh hưởng đến tốc độ website thì với hơn 50% là xuất phát từ công ty thiết kế web vì họ không tối ưu website trước khi bàn giao. Trong đó 20% từ nhà cung cấp hosting, không tối ưu hóa và chất lượng dịch vụ hosting không đảm bảo. Còn lại 30% chính từ người quản trị website không am hiểu hệ thống.

    Những giải pháp phổ biến để tối ưu và tăng tốc độ tải trang web

    Những giải pháp phổ biến để tối ưu và tăng tốc độ tải trang web

    Chứa hình ảnh của website ở các domain khác nhau. Các dịch vụ như Amazon S3 làm chuyện này rất dễ dàng. Tạo 1 tài khoảng S3. Trỏ subdomain như “abc.yoursite.com” về S3 lưu trữ. Đặt các hình ảnh website của bạn ở đây. Các trình duyệt web có thể load từ nhiều domain cùng một lúc, tạo cảm giác rằng website của bạn load nhanh hơn. Hơn nữa, bạn sẽ sử dụng ít CPU và bandwidth của server chính hơn.

    Sử dụng Flickr để chứa hình ảnh website của bạn và dùng như một domain riêng.

    Nén các file hình ảnh theo đúng loại file nén. Sử dụng loại nén “lossy” – JPEG cho các hình ảnh nhiều màu sắc. Sử dụng loại nén “lossless – PNG và GIF – cho các hình ảnh ít màu sắc.

    Resize hình ảnh trước khi bạn upload chúng. Đừng resize hình ảnh theo chiều rộng và cao. Resize chúng bằng Photoshop, Fireworks hoặc các chương trình xử lí ảnh chuyên nghiệp.

    Học cách viết code thật rõ ràng, súc tích. Các hệ quản trị nội dung (CMS) hoặc các shopping cart thường phát sinh rất nhiều code HTML dư thừa. Xóa bỏ bớt hoặc làm gọn nó khi cần thiết.

    Đưa các cấu hình CSS vào các file .css riêng biệt, không nên nhúng thẳng vào mỗi trang.

    Chia rõ các cấu hình CSS ra. Tạo 1 stylesheet chứa duy nhất cấu hình sử dụng chung cho tất cả các trang. Sau đó, tạo các stylesheet riêng biệt cho mỗi layout của từng trang như: trang chủ, trang sản phẩm, trang tin tức,…Chỉ load những gì cần thiết trên mỗi trang.

    Học cách sử dụng CSS. Nếu bạn có thể sử dụng thẻ <p> thay vì sử dụng &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=”blue” style=”font-size:10pt;font-weight:bold;”>, bạn sẽ tiết kiệm được rất nhiều không gian.

    Đưa các đoạn mã javascript vào các file .js. Không nên nhúng thẳng vào mỗi trang. Nếu bạn nhúng javascript vào thì cứ mỗi lượt viếng thăm trang web, kể cả Googlebot, đều phải download code đó mỗi lần tại mỗi trang. Nếu bạn tách riêng ra một file .js thì Googlebot sẽ bỏ qua nó và các browser sẽ cache nó lại được.

    Tách riêng các file javascript ra, giống như bạn tách riêng các file CSS vậy.

    Hoãn lại việc load các javascript khi có thể. Bạn có thể search Google với từ khóa “deferred javascript” để biết thêm chi tiết. Về cơ bản, kỹ thuật này sẽ cho các web browser biết nó sẽ load các javascript có thuộc tính “defer” cuối cùng, sau khi đã load hết các thành phần các của trang web. Điều này sẽ làm giảm nguy cơ bị chậm, bị lỗi hoặc bị đứng đang web khi các file javascript bị lỗi.

    Mã: http://common.js

    Bỏ các file Flash. Có rất nhiều cách để hiển thị các thành phần động trên một trang. Nếu bắt buộc sử dụng Flash, bạn nên sử chỉ sử dụng ở 1 phần nhỏ trên trang web.

    Sử dụng chuẩn nén GZIP trên web server của bạn.

    Giảm thiểu mọi thứ từ HTML, javascript cho đến CSS. Lưu lại một bản chưa được tối ưu của tất cả mọi thứ để chỉnh sửa lại sau này.

    Tối thiểu hóa việc redirect. Không sử dụng 301 redirect trừ khi bạn bắt buộc phải dùng.

    Sửa lại các vấn đề phù hợp với tiêu chuẩn chung. Sửa lại không có nghĩa là sử dụng “rel=canonica”, mà nó có nghĩa là phải đảm bảo rằng trên mỗi trang website của bạn phải có một địa chỉ đơn. Điều này sẽ làm tăng caching performance, giảm memory usage và tăng tốc mọi thứ lên.

    Đầu tư vào hosting có chất lượng tốt, uy tín. Nếu quy mô website lớn, lượng truy cập nhiều thì nên cân nhắc đầu tư một dedicated server để có thể tối đa được tốc độ website.

    Thiết lập caching trên server. Nếu bạn sử dụng WordPress, sử dụng plugin như W3 Total Cache.

    Go static. Nếu bạn đang xây dựng trang web với ngôn ngữ PHP, ASP hoặc ngôn ngữ nào khác thì các sự thay đổi thường xảy tra trên tất cả các trang đó. Một vài trang như “Giới thiệu”, “Liên hệ” việc thay đổi ít xảy ra nên bạn có thể để những trang đó là static (.html hoặc .htm). Làm như vậy sẽ giảm thiểu được một số lượng call tới CPU server, tăng performance.

    Nếu bạn đang làm việc với ngôn ngữ .NET, nghiên cứu để nén biến VIEWSTATE.

    Cấu hình đúng phần quản lý bộ nhớ của server (server’s memory management). Bạn tìm hiểu chi tiết thêm phần này ở Google nhé.

    Đặt database ở một server khác. Nếu bạn có một website với nhiều traffic, lượng truy cập lớn, khi đó bạn nên để website ở một server riêng và database ở một server riêng khác. Các database transaction tiêu tốn rất nhiều hiệu năng server.

    Học cách sử dụng JOIN để viết các câu truy vấn SQL lấy dữ liệu ở nhiều bảng khác nhau. Sử dụng JOIN sẽ nhanh hơn nếu dùng đúng cách.

    Học cách sử dụng Stored Procedures. Stored Procedures được biên dịch bởi database server và chạy nhanh hơn rất nhiều so với các script SQL thuần.

    Không sử dụng SSL trừ khi bạn buộc phải dùng nó (cách này còn gây rất nhiều tranh cãi, nên tạm thời không bàn chi tiết ở đây)

    Nếu bạn sử dụng Apache Server, chỉ nên load những module cần thiết. Hầu hết người dùng đều để thiết lập mặc định, và như vậy sẽ bao gồm những module không cần thiết. Học cách sử dụng AllowOverride, khi bạn thực sự cần DNS lookup, và các tip khác như FastCGI.

    Nếu bạn sử dụng Information Server (IIS), học cách sử dụng performance logging. Bạn có thể bắt đầu với trang Technet (http://technet.microsoft.com/en-us/library/bb727100.aspx). Nhớ kiểm tra IIS version mà bạn đang sử dụng.

    Học cách sử dụng một server accelerator như Squid, hoặc sử dụng Apache hoặc nginx như là một caching proxy. Các caching proxy và accelerator được thiết kế để lưu giữ các trang web động và phân phối chúng ra public một cách nhanh hơn.

    Lưu ý: Tùy theo từng trường hợp mà sẽ đưa ra các giải pháp khác nhau. Đảm bảo tốc độ tài trang chậm nhất dưới 3s

    Ngoài ra còn có nhiều cách khách cho bạn tối ưu trang của mình, và một website không bao giờ là “đủ nhanh” cả (thường các chuyên gia SEO khuyên nên tối ưu load trang dưới 3 giây).

    Điều quan trọng là bạn phải liên tục cải tiến, làm cho tốc độ của nó càng ngày càng nhanh. Khi đó bạn sẽ thấy được kết quả tốt hơn như: khách viếng thăm nhiều hơn, traffic nhiều hơn, xếp hạng cao hơn,…

    ST