• Coding,  Testing

    Count the number of vowel and basic Unit Test

    I write 2 methods to count the number of vowels in the string as below.

    1. Returns the count of the vowel characters in the String

    2. Return the number of vowels in each word in the String as a List of Integers







    Looks good.

    So what can I do to test the above code and make sure it works?

    The idea is making a very simple Unit test with JUnit (or TestNG) framework to test these code, so I have created 2 classes: Count vowel methods and Test class as below:

    1. CountVowelCustomized.java

    This class is includes 2 methods displayVowelInString() to display the total number of vowels in the String and displayVowelInWord() to split the String into the single word and count the vowel in each word. They all returned the value to verify in the test class.


    2. CountVowelTests.java

    To test the above code I need to create a Unit test by using JUnit, there are 2 test methods as testVowelString() & testVowelWord()

    I have changed the input value to “It should be good” and expectedVowel = 6 (all vowels in the String), expectedVowelNumber = Arrays.asList(1, 2, 1, 2).

    Run the script and take a look at the results.


    Now I want to check the failed status if the expected value and actual value is inconsistent by changing the expected vowels of the String “It should be good” to 9. It should be failed.

    int expectedVowel = 9;

    This is the basic code to get an overview, hope this help and could make you interested in this topic, keep it up and also take a look at the below links for more information.


    “Unit testing, a testing technique using which individual modules are tested to determine if there are any issues by the developer himself. It is concerned with functional correctness of the standalone modules. The main aim is to isolate each unit of the system to identify, analyze and fix the defects.”

    Good reads:

    #1. http://tutorials.jenkov.com/java-unit-testing/index.html

    #2: https://lostechies.com/derekgreer/2011/03/14/effective-tests-a-unit-test-example

  • Automation,  Testing

    An introduction to jComparison v1.0

    Automated visual testing is really challenge. Comparing layouts day by day is also challenge and take time. It’s the reason why we want to develop a tool to support our automation script and saves time to compare the layout.

    This tool is free and going to open the source as we want to share our work to the community and improving it with your supports.

    Download here

    The Idea:
    We have created 2 folders to store all images of two times of the regression test by date: Regression_Results_20170719 & Regression_Results_20170720
    We will compare all layout of these folders to detect the inconsistent or changed layout.
    If the layouts are the same after 2 times executing, it should be Passed.
    If there is any difference between 2 times of executing, it should be Failed and show us the differences.

    How to use?
    It’s quite simple.
    1. All you need to do is including the script to take a screenshot as the below file name format – so after your automation script finished, it will creating image for you to compare.

    Image name format: LayoutName_yyyy-mm-dd-hh-mm-ss.png
    Example: Home_2017-07-19-11-22-09.png

    2. At the jComparison app

    • Select the first image folder
    • Select the second image folder
    • Click on Compare button => Show the results as below
    • Click on the row of difference status to check the mismatch with highlight color
    • Click on Export TXT or CSV to export the results to file. The file of report will store at the same folder/place of the jar file
    • There are 2 modes:
      Strictly: Comparing exactly the same, this mode will using exact color code for comparision. This mean a little bit darker color will be list as different.
      Simple: This mode will not using exact color code for comparision. This mean a little bit darker color might not be list as different.


    The main layout of jComparison

    Exported results as CSV and TXT

    Highlight the mismatch spot


    • To apply visual testing by using this tool, we have to make sure the screen/browser size is the same.
    • The test data should be the same, we just test the layout – not the data.
    • Test the tool carefully with the small number of images, before you apply it to your project, to make sure it works as expected.
    • Give us your feedback ([email protected]) based on your real issues, when we have your feedback, we have an idea for improving it.
  • Automation

    Compare Pixels – Check difference between two layouts

    PixelGrabber là một thư viện Java cho phép lấy ra các điểm ảnh (pixels) trên hình và từ đó có thể dùng để so sánh để phát hiện ra sự thay đổi, khác biệt giữa hai bức ảnh. Có thể ứng dụng vào Automation để nhận biết những sự thay đổi layout.

    Kết quả:

    Input layout: 01.png & 02.png
    Output: Passed. They are the same!

    Input layout: 01_changed.png vs 02_changed.png
    Output: Failed. There are some difference between 2 images!

    Nếu file không tồn tại sẽ hiển thị thông báo: File(s) could not found!

    The PixelGrabber class implements an ImageConsumer which can be attached to an Image or ImageProducer object to retrieve a subset of the pixels in that image.

    Nhận diện hình ảnh là một chủ đề hay và đáng tìm hiểu để ứng dụng vào kiểm thử tự động.

  • Automation

    Optical Character Recognition (OCR) – Nhận diện ký tự từ ảnh

    Trong ví dụ này mình sẽ có input là một tấm ảnh chụp từ màn hình mobile, kết quả output mong muốn sẽ là nội dung chữ trên bức ảnh đó và kiểm tra lại để đảm bảo trên ảnh có chứa những nội dung chữ mình mong muốn.

    Optical character recognition (also optical character reader, OCR) is the mechanical or electronic conversion of images of typed, handwritten or printed text into machine-encoded text, whether from a scanned document, a photo of a document, a scene-photo (for example the text on signs and billboards in a landscape photo) or from subtitle text superimposed on an image.

    OCR Input (PNG file): Screenshot_2017-03-15-14-57-02.png
    OCR Output (text): The text “Logs saved to sdcard/SysLog/2017-03-15_14.56.59

    Các bước thực hiện:
    1. Bạn có thể tạo một project mới hoặc tải project mẫu mình đã upload tại đây.
    2. Import thư viện Tess4J và các thư viên liên quan (có thể import hết thư viện trong thư mục “tesslibs” mình để trong project).
    3. Đặt thư mục “tessdata” (data dùng để nhận diện ký tự) và hình ảnh cần test ra thư mục root, sau này bạn có thể thay đổi đường dẫn đến hình ảnh cũng được.

    Sau khi có đủ thư viện, đặt thư mục tessdata và hình ảnh input đúng vị trí, chúng ta tạo một class mới để bắt đầu. Đây là một đoạn code ngắn để thực hiện những yêu cầu ban đầu:
    1. Đọc chữ từ screenshot.
    2. In tất cả các chữ có trên ảnh ra.
    3. Kiểm tra những chữ đã xuất ra được có chứa các nội dung mình cần hay không.

    Nội dung chúng ta có được:

    Cách này khá hữu ích khi làm automation, đôi lúc có những thành phần không thể getText do không lấy được locators, dùng cách này thì chúng ta sẽ không cần locators, ngoài ra còn ứng dụng trong các trường hợp khác như đọc nội dung PDF, tài liệu scanned. Các bạn thử nhé!

  • Coding

    Random string in Java