Thứ Năm, 28 tháng 7, 2016

The difference between Verification and Validation (Domain: Testing - ISTQB)

Source: Thank Steve for sharing this information
(just copy and paste)


Sometime in the 1990’s, I drafted a frequently asked question list for NASA’s IV&V facility. Here’s what I wrote on the meaning of the terms “validation” and “verification”:
The terms Verification and Validation are commonly used in software engineering to mean two different types of analysis. The usual definitions are:
  • Validation: Are we building the right system?
  • Verification: Are we building the system right?


In other words, validation is concerned with checking that the system will meet the customer’s actual needs, while verification is concerned with whether the system is well-engineered, error-free, and so on. Verification will help to determine whether the software is of high quality, but it will not ensure that the system is useful.
The distinction between the two terms is largely to do with the role of specifications. Validation is the process of checking whether the specification captures the customer’s needs, while verification is the process of checking that the software meets the specification.
Verification includes all the activities associated with the producing high quality software: testing, inspection, design analysis, specification analysis, and so on. It is a relatively objective process, in that if the various products and documents are expressed precisely enough, no subjective judgements should be needed in order to verify software.
In contrast, validation is an extremely subjective process. It involves making subjective assessments of how well the (proposed) system addresses a real-world need. Validation includes activities such as requirements modelling, prototyping and user evaluation.
In a traditional phased software life-cycle, verification is often taken to mean checking that the products of each phase satisfy the requirements of the previous phase. Validation is relegated to just the beginning and ending of the project: requirements analysis and acceptance testing. This view is common in many software engineering textbooks, and is misguided. It assumes that the customer’s requirements can be captured completely at the start of a project, and that those requirements will not change while the software is being developed. In practice, the requirements change throughout a project, partly in reaction to the project itself: the development of new software makes new things possible. Therefore both validation and verification are needed throughout the life-cycle.
Finally, V&V is now regarded as a coherent discipline: ”Software V&V is a systems engineering discipline which evaluates the software in a systems context, relative to all system elements of hardware, users, and other software”. (from Software Verification and Validation: Its Role in Computer Assurance and Its Relationship with Software Project Management Standards, by Dolores R. Wallace and Roger U. Fujii, NIST Special Publication 500-165)
Having thus carefully distinguished the two terms, my advice to V&V practitioners was then to forget about the distinction, and think instead about V&V as a toolbox, which provides a wide range of tools for asking different kinds of questions about software. And to master the use of each tool and figure out when and how to use it. Here’s one of my attempts to visualize the space of tools in the toolbox:

A range of V&V techniques. Note that "modeling" and "model checking" refer to building and analyzing abstracted models of software behaviour, a very different kind of beast from scientific models used in the computational sciences
For climate models, the definitions that focus on specifications don’t make much sense, because there are no detailed specifications of climate models (nor can there be – they’re built by iterative refinement like agile software development). But no matter – the toolbox approach still works; it just means some of the tools are applied a little differently. An appropriate toolbox for climate modeling looks a little different from my picture above, because some of these tools are more appropriate for real-time control systems, applications software, etc, and there are some missing from the above picture that are particular for simulation software. I’ll draw a better picture when I’ve finished analyzing the data from my field studies of practices used at climate labs.
Many different V&V tools are already in use at most climate modelling labs, but there is room for adding more tools to the toolbox, and for sharpening the existing tools (what and how are the subjects of my current research). But the question of how best to do this must proceed from a detailed analysis of current practices and how effective they are. There seem to be plenty of people wandering into this space, claiming that the models are insufficiently verified, validated, or both. And such people like to pontificate about what climate modelers ought to do differently. But anyone who pontificates in this way, but is unable to give a detailed account of which V&V techniques climate modelers currently use, is just blowing smoke. If you don’t know what’s in the toolbox already, then you can’t really make constructive comments about what’s missing.

Thứ Hai, 30 tháng 5, 2016

Some notes while using Selenium

1. Can't find element
Use Sleep with long time then down the time to proper value. For example, insert Thread.sleep(10000) (= 10 seconds) and see result. 

If you have already found the element, decrease the time to reduce the latency.

2. Can't find element inside <svg> tag

SVG stands for Scalable Vector Graphics. SVG defines vector-based graphics in XML format. SVG defines the graphics in XML format. (W3schools)

If can't using xpath, try this:

List<WebElement> data = driver.findElements(By.xpath("//*[name()='svg']));

Then debug to check data.size() to ensure you can get svg tag first.

Next, continue to get element inside svg. For example your value in a <g> tag:

List<WebElement> data = driver.findElements(By.xpath("//*[name()='svg']/*[name()='g']"));

Debug to check data, you can use data.get(i).getAttribute("classname") (i from 0 to data.size(), can replace "classname" by any attribute in the element which you guess) to examine what exactly data contains. And maybe you find the value i is the element that you need.

If your element inside a tag which is inside svg (my bad English :( , continue to find it like:

List<WebElement> data = driver.findElements(By.xpath("//*[name()='svg']/*[name()='g']/*[name()='g']"));


Always using debug mode to find your element that you need, sometime u can use data.remove to delete element that not necessary for your process. 

Thứ Ba, 24 tháng 5, 2016

Kinh nghiệm du lịch Đà Nẵng (sau khi đã đi ít nhất 3 lần và là phát biểu của một bạn nữ ;)))

Note lại các kinh nghiệm sau khi vừa thực hiện đi du lịch Đà Nẵng lần thứ 3:

1. Về thời gian
Tốt nhất đi từ tháng 4 đến tháng 7.

Mình đã đi một lần vào tháng 12, một lần vào tháng 7 và vừa rồi là đi vào tháng 4 (đúng đợt nghỉ giỗ Tổ). Mặc dù 3 lần đi là 3 dạng thời tiết khác nhau nhưng đúng như nhiều review trên mạng, đi vào mùa hè là hợp lý nhất.
Tháng 12 đi Bà Nà thì hơi rét, lại mưa, thời tiết lạnh không tắm biển được, hải sản cũng ko sẵn có mặc dù nếu tìm được hàng thì giá rẻ hơn.

2. Về phương tiện đi lại
Đi máy bay.
Chọn sẵn dịch vụ taxi giá rẻ để đi và về.

Ở Hà Nội thì đến Đà Nẵng đi máy bay là khỏe nhất rồi.
Có lưu ý là để ra sân bay Nội Bài thì mình sử dụng dịch vụ của taxiairport.vn. Mình đi taxi từ svđ Mỹ Đình lên sân bay nếu đi ghép là120k/người, còn nếu đi trọn gói (thuê riêng 1 xe) thì giá là 200k/chuyến đi. Chiều về thì giá trọn gói là 300k. (Nói chung cũng tùy điểm xuất phát giá sẽ khác nhau, có gì tham khảo website https://taxiairport.vn)

3. Thuê nhà nghỉ/ khách sạn
Sử dụng Booking.com, Agoda.com,...
Ở Đà Nẵng nên thuê nhà nghỉ/ks ở gần biển Mỹ Khê, dọc đường Võ Nguyên Giáp.
Ở Hội An thì mình nghỉ tại khách sạn Thanh Bình, ở Hội An có tới 3 nhà nghỉ Thanh Bình, mình thấy rất okie. (Mình đã từng ở Thanh Bình 1 và Thanh Bình 2)

Ở Đà Nẵng thì có vô vàn nhà nghỉ, tuy sở thích của mỗi người muốn ở kiểu nào. Sử dụng các trang hỗ trợ đặt chỗ trước như Booking.com, Agoda.com (Ưu tiên booking hơn vì không phải trả tiền trước, mặc dù so sánh giá hai bên một số ks thì tương đương).

Về vị trí nhà nghỉ, cá nhân mình thấy nên ở gần biển Mỹ Khê khu vực đọc đường Võ Nguyên Giáp hoặc trong đường Võ Nguyên Giáp 1 đường (giá sẽ rẻ hơn) để thuận tiện tắm biển hoặc di chuyển đến các điểm tham quan khác.

Như hai ks mình từng nghỉ giá trung bình, ở gần đường Võ Nguyên Giáp là ks Mỹ Hạnh (giá năm 2015 là 750k/phòng), và ks Sông Đà (mới khai trương năm 2016, nằm ở đường mới mở Trần Bạch Đằng song song với Võ Nguyên Giáp gần khu mới xây nên giá đc rẻ hơn (350k-500k/phòng). Về dịch vụ ở 2 ks đều rất OK, bao bữa sáng, sạch sẽ, đẹp.

4. Các điểm tham quan ở Đà Nẵng
- Cù Lao Chàm (đáng đi)
- Hội An (đáng đi)
- Bà Nà Hills (ai chưa đi thì đi cho biết, hoặc có nhu cầu chụp ảnh thì lên đây nha, cá nhân mình chụp hay ko chụp như nhau nên ko thích nhé :)) Nhiều người bảo Bà Nà Hills quan trọng phải nghỉ qua đêm nữa (một gợi ý cho mọi nguời)
- Bán đảo Sơn Trà
- Ngũ Hành Sơn
Trong thành phố Đà Nẵng:
- Ngắm Cầu sông Hàn quay lúc 11h tối
- Ngắm Cầu Rồng phun lửa lúc 09h tối thứ 7 và Cn
- Công viên châu Á (Asia Park): giá vé 200k
- Các quán ăn:
  • Ăn hải sản (chắc chắn rồi): mình không có nhiều tiền vào nhà hàng nên lựa chọn của mình là quán vỉa hè. Mình đến ăn chỗ hải sản cô Nhơn (đuợc anh đồng nghiệp chỉ), chọn hải sản và sau đó sang nhờ quán mở vỉa hè ngay bên cạnh chế biến và thanh toán tiền công. Giá tầm 150-200k/nguời ăn no căng. Để tìm được quán thì đi dọc đường Hoàng Sa là thấy (không có địa chỉ, cách ngã tư Võ Nguyên Giáp - Hoàng Sa cũng phải 5km đó). Quán chế biến được hấp, nướng thường, nướng mỡ hành, ngoài ra quán có gỏi cá ăn khá ngon (60-80k/đĩa, ko nhớ chính xác). 
  • Hải sản Bé Mặn (được nhiều người review) thì đi qua lúc nào cũng đông khách ngút nguời nên không dám vào :))
  • Bánh tráng cuốn thịt heo (quán Trần)
  • Bánh xèo bà Dưỡng (cá nhân mình thấy không ngon bằng bánh xèo ở gần Metro Hà Đông - Hà Nội :D)
  • bún mắm bà Vân
  • Nước ép hoa quả (nước ép cóc ổi kết hợp - thơm ngon mát, nha đam dứa)
Gợi ý tour: 
Cách 1: thích thong thả không thích chạy show, hoặc thoải mái thời gian
Ngày 0: Đến Đà Nẵng (nếu đến sớm thì chiều tắm biển, tối ăn hải sản)
Ngày 1: Sáng Cù Lao Chàm - Chiều về Hội An, ngủ lại Hội An
Ngày 2: Ăn sáng tại Hội An, chiều về Ngũ Hành Sơn, nhớ đi đường dọc bờ biển ngắm các resort rất đẹp.
Ngày 3: Bà Nà Hills, chiều bán đảo Sơn Trà
Ngày 4: Về

Cách 2: khám phá tối đa có thể

Ngày 0

Cù Lao Chàm:
Mua luôn tour (500k/người - giá 2016): ca nô cao tốc di chuyển + bơi ngắm san hô, tham quan đảo + ăn trưa.

Cù Lao Chàm là một đảo cổ của người Chăm Pa xưa.
Từ Đà Nẵng thuê xe máy ra Cù Lao Chàm, còn nếu mua tour trên mạng thì có xe đến đón tận nơi.
Để ra đảo có thể đi cano cao tốc (mất 20-30 phút) hoặc đi tàu gỗ (mất 2h-2,5h). Tốt nhất không sợ nhảy sóng thì đi cano cao tốc. Công nhận đi cano cao tốc ở Cù Lao Chàm rất phê, thuyền lao lên mặt sóng rồi rơi xuống, người nào huyết áp cao chắc không đi được. Nhưng đa phần hiện nay đều đi cao tốc.
Bạn nên đi sớm, có mặt khoảng 8h tại bến Cửa Đại (nếu đi từ bãi biển Mỹ Khê ra bến Cửa Đại thì mất khoảng 40phut (nhớ đi đường bờ biển để ngắm các resort rất đẹp)
Có thể lựa chọn mua vé cano rồi tự lo ăn uống (cái này mình không rành lắm), mình mua vé tour tại bến Cửa Đại luôn, giá vé là 500k/khách nhưng hôm đi mình ra muộn, 9h30 mới có mặt nên giá tăng lên 550k. Đi tour thì khỏi lo ăn trưa.
Lịch trình khi nhận tour như sau: khi cano ra đến đảo Cù Lao Chàm, bạn nhận chỗ ở quán ăn để nghỉ ngơi, đi thay đồ bơi, gửi đồ nếu cần. Sau đó lên cano đi tiếp khoảng 2 phút để ra khu vực bãi san hô để tắm mà ngắm san hô. Bạn được phát áo bơi vs kính bơi, vừa bơi vừa cúi xuống ngắm san hô. Tốt nhất mang kính của mình đi vì kính họ cho bị xước nhiều nên khá mờ, ko nhìn rõ san hô đâu. Đây cũng là một trải nghiệm thú vị.
Có thể lựa chọn hình thức lặn ngắm san hô có mặc đồ lặn đầy đủ bằng cách liên hệ với một dịch vụ riêng trên đảo, giá khoảng 700k-800k/người/20phut (mình nghe qua tour guide nên giá tiền ko chính xác). Sau khi bơi khoảng 30 phút, lên cano về lại đảo, tắm rửa và dùng bữa trưa. Sau đó nghỉ ngơi tại các ghê nghỉ cung cấp free ngay trên đảo.
Tiếp đến lên cano sang mặt khác của đảo để tham quan nhà bảo tồn di sản biển, thăm giếng ngọc không bao giờ cạn của người Chăm và chùa cổ (thờ 3 đạo khác nhau). Trên đảo còn có sân bay trực thăng trên cao, để lên có thể đi xe ôm, sân bay thường chỉ có máy bay khi đảo bị bão, cần cung cấp lương thực (theo lời bạn tourguide)
Tầm 1-2h chiều lên cano về lại bến cửa Đại, kết thúc chuyến thăm Cù Lao Chàm.

Hội An:
Đi Cù Lao Chàm sáng, chiều về Hội An (ngủ tối lại).
Ăn bánh mì Phượng - số 2 hay 3 Phan Chu Trinh.
Ăn cơm gà Bà Buội, bà Tỵ (có cao lầu luôn).
Ăn chè ở dọc bờ sông.
Ăn bánh tráng đập.
Uống cafe
Đi dạo phố về đêm
Đặc biệt: mình rất thích ăn bánh Kyến Tờ, đoạn cầu hội an. Có 1 chú bán hàng giống kiểu bán bò bía, 10k/cái. Bánh ngọt béo của đường và dừa kẹp trong bánh giấy giòn tan, giờ thèm quá mà chả ăn được :(

Hội An cách cửa biển Cửa Đại chỉ khoảng 5km nên từ Cù Lao Chàm về luôn Hội An và nghỉ đêm tại đây để ngắm Hội An về đêm cũng là một lựa chọn.

Bà Nà Hills
- Nên đi sớm để khỏi xếp hàng lên cáp treo (thường rất đông vào cuối tuần) hoặc đi buổi chiều (nếu ai chơi nhiều trò chơi thì sợ chiều không kip)
- Nhiều nguời lựa chọn Bà Nà Hills là điểm nghỉ dưỡng qua đêm (mình chưa thử) để hưởng không khí mát lạnh nơi đây.




Thứ Tư, 16 tháng 3, 2016

How to display UTF-8 encoding in output of Netbeans

Here is my way to display UTF-8 encoding like Vietnamese in my NetBeans. Thanks StackOverflow and BuZZ-dEE to help me:

1. Edit my Netbeans file config in Netbeans installation folder \ etc by adding:
-J-Dfile.encoding=UTF-8 to neabeans_default_options param.

netbeans_default_options="-J-Dfile.encoding=UTF-8"

2. Add system variable: JAVA_TOOL_OPTIONS

JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8


3. With my maven project, I added following lines in pom file:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

Note that I use Netbeans 8.0.2.