Professional Documents
Culture Documents
Sử dụng thời gian của máy tính để thực thi kiểm thử.
Thường được áp dụng cho các trường hợp kiểm thử sẵn có.
Thời gian dành cho việc kiểm thử là rất hạn chế.
Giúp tester tập trung vào các công việc kiểm thử phức tạp hơn
• Sai lệch giữa các cá nhân • Nhất quán trên nhiều máy tính
• Chi phí bảo trì gần bằng 0 • Chi phí bảo trì cao
• Không hiệu quả khi hồi quy với • Không hiệu quả khi hồi quy với
số lượng lớn số lượng ít
Tester
Báo cáo Kiểm tra
Test Engineer báo cáo Test Engineer kiểm tra
kết quả kiểm thử và tiếp và so sánh kết quả nhận
tục với trường hợp khác được từ AUT
1 2 3 4
Xuất phát từ khả năng của các “Công cụ kiểm thử tự động” (Automation tool)
Không Công
Lập trình
chắc chắn nghệ mới
Xuất hiện các trường hợp kiểm thử lặp lại nhiều lần
Xuất hiện các trường hợp kiểm thử với nhiều bộ dữ liệu
Xuất hiện các trường hợp kiểm thử đo lường hiệu năng
Xuất hiện các trường hợp kiểm thử tiêu tốn nhiều thời gian
Kiểm thử tự động: tự đông thực thi các trường hợp kiểm thử.
Kiểm thử tự động chỉ thích hợp với một số loại hình kiểm thử nhất định.
Kiểm thử tự động có ưu điểm lẫn nhược điểm khi so sánh với kiểm thử bằng tay.
Keyword-
driven
Data-driven Từ khóa:
• Hans Buwalda, năm 1994
• Là dạng tổng quát hóa của Action
Based Testing™
Scripting
Record &
Playback
# Analog Recording
move_locator_track (1); mouse movement
mtype ("<T55> <kLeft>-<kLeft>+"); mouse click
type ("<t3>output14" );
move_locator_track (2);
mtype ("<T35><kLeft>-<kLeft>+");
output14
enter text pause before
from mouse click
keyboard
Mỗi khi AUT có một thay đổi nhỏ, tester/user cũng phải thực thi lại các thao tác để
ghi nhận lại kịch bản mới.
Function OrderProduct
Logon
Press "New Order"
Enter Field "Product", “OurProduct 1.0"
Enter Field "Amount", "35"
Enter Field "Delivery", "asap"
...
LogOff
End Function
Các dữ liệu kiểm thử được lưu dưới dạng bảng trong một tập tin tách biệt (tập tin
Excel)
GOODMORNING
goodmorning
GoodMorning
Input Data
Bảng dữ liệu dùng để kiểm thử Nội dung tập tin được tìm kiếm
nr case whole pattern matches goodmorning
1 off off GOODMORNING 4 GOODMORNING
2 off on GOODMORNING 3 GoodMorning
3 on off GOODMORNING 1 GoodMorningVietnam
4 on on GOODMORNING 1
5 off off goodmorning 4
Kịch bản Data-driven:
6 off on goodmorning 3
7 on off goodmorning 1 for each line in the file do
8 on on goodmorning 1 -open the find dialog
-read a line from the file
9 off off GoodMorning 4
-use the values to fill dialog
10 off on GoodMorning 3 -press find button
11 on off GoodMorning 2 -check amount of matches
12 on on GoodMorning 1 -close the dialog
Tác vụ kiểm thử được tách nhỏ dưới dạng các “từ khóa” (keyword)
Mỗi từ khóa đại diện cho một thao tác đơn giản trên máy tính
Tự động hóa việc kiểm thử thông qua tự động hóa từng thao tác
Giúp các tester tập trung vào việc kiểm thử và nghiệp vụ của AUT
Giảm thời gian và chi phí để cài đặt việc tự động hóa kiểm thử
Giảm lập trình, vốn là hạn chế của các người dùng và “non-technical” tester
Action’s Parameters
Test Data
Test Case Test Case
Workload Construction /
Automation Production
Selection
Automation Automation
Scripting N/A
Engineer Engineer
Automation Automation
Data-driven Test Engineer
Engineer Engineer
Automation
Keyword-driven Test Engineer Test Engineer
Engineer
Automation
HP IBM Others
Tool
Functional WinRunner Functional Tester SilkTest
QuickTestPro Rational Robot TestPartner
TestComplete
Kiểm thử tự động trải qua 4 giai đoạn phát triển (cách tiếp cận) với nhiều cải tiến.
Mỗi cách tiếp cận phù hợp với từng đối tượng sử dụng riêng.
Kiểm tra và đảm bảo một đơn vị của hệ thống hoạt động đúng.
Đơn vị là một phần nhỏ nhất có thể kiểm thử được (testable) của hệ thống
Đơn vị có thể là một hàm (function) hoặc một phương thức (method) của một lớp.
Kết quả của quá trình kiểm thử đơn vị bao gồm
Đơn vị đã được kiểm thử.
Các tài liệu mô tả quá trình kiểm thử đơn vị.
Phát hiện sớm các lỗi và giảm chi phí sửa chữa
% số lượng
lỗi tạo ra
% số lượng
lỗi phát hiện
$ Chi phí
sửa lỗi
Kiểm tra mỗi đơn vị hoạt động đúng như thiết kế ban đầu của nó.
Kiểm tra mỗi đơn vị hoạt động đúng như yêu cầu nghiệp vụ của nó.
Số lượng trường hợp càng nhiều, độ bao phủ càng giảm xuống.
Nhiều trường hợp bị trùng lặp, nhiều trường hợp bị thiếu sót.
Viết các đoạn code kiểm thử đơn vị đơn giản (dựa trên framework sẵn có)
Lập báo cáo cho biết kết quả passed/failed của từng trường hợp
xUnit là tên gọi chung của các framework kiểm thử đơn vị
Java: JUnit, J2MEUnit
C/C++: cppUnit
Python: pyUnit
Perl: PerlUnit
Visual Basic: vbUnit
C# .NET: Nunit,csUnit
Test có thể được phát triển bởi các ngôn ngữ .NET
Trong project “NUnitTestSuite1”, tạo một class mới với tên “TestSuite1” như sau
Khai báo sử dụng namespace của NUnit
Khai báo thuộc tính TestFixture
Khai báo thuộc tính Test
Từ giao diện Test Explorer của NUnit, chọn và thực thi Test Case
Thêm một Test Case bằng cách thêm một phương thức Test vào lớp TestSuite1
Trong đó
actual – đối tượng cần kiểm tra
constraint – là một ràng buộc nào đó, cần kiểm tra xem đối tượng có thỏa mãn hay không
Assert.That(2 + 2, Is.EqualTo(4.0));
Assert.That( 2.1 + 1.2, Is.EqualTo( 3.3 ).Within( .0005 );
Assert.That(2 + 2, Is.Not.EqualTo(5));
Assert.That(7, Is.GreaterThan(3));
Assert.That(42, Is.Positive);
Assert.That(7, Is.GreaterThanOrEqualTo(3));
Assert.That(7, Is.AtLeast(3));
Assert.That(3, Is.LessThan(7));
Assert.That(-5, Is.Negative);
Assert.That(3, Is.LessThanOrEqualTo(7));
Assert.That(3, Is.AtMost(7));
Được sử dụng để đánh dấu một class có chứa các Test Case.
Một “Fixture” có thể xem như là một tập hợp các Test Case.
// ...
// some Test Case
[TestFixtureTearDown]
public void CleanUpTests() {
// ...
}
}
Khi khởi tạo đối tượng, NUnit sử dụng hàm khởi động mặc định (không tham số)
Có thể sử dụng tham số trong
thuộc tính TestFixture để [TestFixture("hello", "params")]
[TestFixture(11, 9)]
NUnit có thể khởi tạo đối
class TestSuite1 {
tượng tốt hơn. public TestSuite1(string str, string str2) {
Mỗi khai báo TestFixture // ...
được NUnit xem là một tập hợp }
riêng.
public TestSuite1(int x, int y) {
// ...
}
// ...
}
Thuộc tính TestFixture được thể hiện trên giao diện NUnit
100 Chương 2 - Kiểm thử tự động với xUnit Nguyễn Đạt Thông
Thuộc tính Test và TestCase
Được sử dụng để đánh dấu một phương thức bên trong một class (đã được đánh
dấu với thuộc tính TestFixture) là một Test Case.
Thuộc tính Test dùng để đánh dấu các Test Case không tham số
Thuộc tính TestCase dùng để đánh dấu các Test Case có tham số
Với mỗi thuộc tính Test hoặc TestCase được khai báo, NUnit sẽ xem là một Test
Case riêng lẻ.
101 Chương 2 - Kiểm thử tự động với xUnit Nguyễn Đạt Thông
Ví dụ: Thuộc tính Test
[Test]
public void TestCase1() {
// ...
}
[TearDown]
public void CleanUpTestCase() { }
}
102 Chương 2 - Kiểm thử tự động với xUnit Nguyễn Đạt Thông
Ví dụ: Thuộc tính TestCase
103 Chương 2 - Kiểm thử tự động với xUnit Nguyễn Đạt Thông
Thuộc tính TestCaseSource
Được sử dụng trong data-driven test, thay thế hàng loạt các khai báo TestCase
[TestFixture]
class TestSuite1 {
[Test, TestCaseSource("MyDataSet")]
public void TestCase4(double x, double y, double d) {
// ...
}
}
104 Chương 2 - Kiểm thử tự động với xUnit Nguyễn Đạt Thông
Thuộc tính TestCase trên NUnit
Thuộc tính TestCase được thể hiện trên giao diện NUnit
105 Chương 2 - Kiểm thử tự động với xUnit Nguyễn Đạt Thông
Thuộc tính Category và Description
106 Chương 2 - Kiểm thử tự động với xUnit Nguyễn Đạt Thông
Thuộc tính Category trên NUnit
Thuộc tính Category được thể hiện trên giao diện NUnit
107 Chương 2 - Kiểm thử tự động với xUnit Nguyễn Đạt Thông
Một số thuộc tính khác
108 Chương 2 - Kiểm thử tự động với xUnit Nguyễn Đạt Thông
MSVS: Kiểm thử đơn vị
117 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Đơn vị cần kiểm tra
118 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thêm test case và checkpoint
121 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Một số Attribute thông dụng
TestClass
TestMethod
TestInitialize / TestCleanup
ClassInitialize / ClassCleanup
TestCategory / Description
Timeout
DataSource https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.datasourceattribute.aspx
122 Kiểm thử phần mềm tự động - 2015 Nguyễn Đạt Thông
Đánh giá code coverage của unit test
VS thực thi unit test case và cho biết các câu lệnh được bao phủ như thế nào.
Để xem kết quả, chọn test case, và chọn “Analyze code coverage”
126 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Kết quả code coverage
Kết quả code coverage được hiển thị ở giao diện “Code Coverage Results”
127 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Hiển thị các đoạn code chưa được bao phủ
Chọn “Show Code Coverage Coloring” trong giao diện Code Coverage Results để xem
các đoạn code chưa được bao phủ.
128 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thực thi IntelliTest trên các method khác
131 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Lưu lại các IntelliTest
Các test case tạo ra bởi IntelliTest có thể được lưu lại để thực thi sau, kết quả lưu là
một dự án unit test
132 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
UI Automation và Coded UI
134 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Tạo một Coded UI Test
Coded UI Test có thể được tạo như một “item” thông thường trong một dự án
Coded UI.
136 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Record một Coded UI Test
137 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Khởi động chương trình và Record
Nếu không muốn Coded UI record thao tác khởi động AUT,
thì cần phải chạy AUT trước khi bắt đầu record.
Khi Coded UI Test kết thúc, các chương trình được khởi động bởi Coded UI sẽ tắt.
Có thể sử dụng các attribute TestInitialize và TestCleanup để khởi động và tắt AUT.
138 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thêm checkpoint vào Coded UI Test
Chọn nút “Add Assertions” trên giao diện của Coded UI Test Builder
Có thể sử dụng phím tắt Ctrl + I đối với các thành phần giao diện “đặc biệt”
139 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Phát sinh mã nguồn của Coded UI Test
140 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thực thi Coded UI Test
Coded UI Test được thực thi trong Test Manager giống như unit test.
Thực thi Coded UI Test sẽ tự động thực hiện các thao tác trên giao diện AUT.
141 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Kiểm thử hiệu năng với Visual Studio
Kiểm thử hiệu năng (Performance test) của một ứng dụng web
Xác định, đánh giá hiệu năng làm việc, tốc độ xử lý và phản hồi của trang web.
143 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thực hiện các thao tác để record
MS IE cần cho phép các “add-on” sau hoạt động để hỗ trợ quá trình record
Microsoft Web Test Recorder 10/11/12 Helper
Web Test Recorder 10/11/12
146 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Các thao tác
147 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thực thi kiểm thử hiệu năng
Chọn “Run Test” trên thanh công cụ của giao diện “Web Performance Test Editor”
148 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thêm các checkpoint vào test
Trong giao diện “Web Performance Test Editor”, chọn một request và “Add
Validation…”
149 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thêm các checkpoint vào test
Trong giao diện “Web Performance Test Editor”, chọn một request và “Add
Extraction…”
150 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thực thi kiểm thử với các checkpoint
Thực thi kiểm thử hiệu năng sau khi thêm các checkpoint
151 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Áp dụng Data-driven
Chọn “Add Data Source” trên thanh công cụ của giao diện “Web Performance Test
Editor”
152 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Sử dụng data trong kiểm thử hiệu năng
Chọn giá trị cần thay đổi, và xác định giá trị thay thế trong Data Source
153 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thiết lập thực thi với data-driven
Mở giao diện “Test Settings” bằng cách double click vào “Local.testsettings” trong
giao diện “Solution Explorer”
154 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Thực thi kiểm thử hiệu năng với data-driven
Thực thi kiểm thử với VS cho kết quả nhiều lần chạy liên tiếp (tuần tự)
155 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Lặp các thao tác kiểm thử
Chọn một thao tác muốn lặp lại nhiều lần, và chọn “Insert Loop…”, giao diện “Add
Conditional Rule and Items to Loop” sẽ xuất hiện
156 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Load Test với Visual Studio
Load Test là việc giả lập nhiều người sử dụng (virtual users)
đồng thời truy xuất hệ thống,
nhằm mục đích kiểm tra, đánh giá mức độ đáp ứng của hệ thống trong các điều kiện khác nhau.
158 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Wizard: Xác định chế độ load test
163 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Các Mix Mode
164 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Quá trình thực thi load test
Quá trình thực thi load test được VS thể hiện bằng các số liệu
169 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Kết quả thực thi load test
Kết thúc quá trình load test, VS tạo ra một bản báo cáo
170 Chương 3 - Kiểm thử tự động với MS Visual Studio Nguyễn Đạt Thông
Giới thiệu Selenium
Là một bộ công cụ kiểm thử tự động các ứng dụng trên nền Web
Miễn phí
Mã nguồn mở
Mạnh mẽ
Hỗ trợ đa trình duyệt
Hỗ trợ đa ngôn ngữ (lập trình)
2008
•Selenium
WebDriver
2006
•WebDriver
•Simon
Stewart,
Google
2004
•Selenium Core
•Jason Huggins,
ThoughWorks
Windows, Linux
Windows
Windows, Mac
Selenium Core
Selenium IDE
Selenium Grid
Selenium Core
Là một thư viện JavaScript
Hỗ trợ thực hiện tự động hóa trên các ứng dụng web
Được thực thi trực tiếp bên trong trình duyệt
Selenium Core tương thích với (hầu như) tất cả các trình duyệt
Mã nguồn
http://www.seleniumhq.org/download/source.jsp
Được tích hợp vào trình duyệt FireFox (một extension của FF)
Tham khảo
http://docs.seleniumhq.org/docs/02_selenium_ide.jsp
Ví dụ
selenium = new DefaultSelenium(
"localhost", 4444, "*chrome", "https://code.google.com/");
selenium.Start();
selenium.Open("/p/selenium/wiki/SeIDEReleaseNotes");
selenium.Click("link=Downloads");
selenium.Type("id=searchq", "release");
selenium.Click("css=span.inIssueList > form > input[type=\"submit\"]");
selenium.WaitForPageToLoad("30000");
String tt = selenium.GetTitle();
Console.WriteLine(tt);
Là một thư viện (API) hỗ trợ C#, Java, Python, Perl và Ruby
Hỗ trợ kiểm thử tự động trên nhiều trình duyệt khác nhau
Được tích hợp vào trình duyệt FireFox (một extension của FF)
Tham khảo
http://docs.seleniumhq.org/docs/02_selenium_ide.jsp
Tham khảo thông tin về “command” để có thể hiệu chỉnh chính xác
Cửa sổ “reference”
Thực thi
Thực thi một test case
Thực thi tất cả test case (trong test suite)
Cú pháp
Command
Target
Value
Phân loại
Action
Accessor
Assertion
Nếu một Action thất bại hoặc xảy ra lỗi thì việc kiểm thử sẽ được dừng lại.
Ví dụ: “click”, “select”,…
Các lệnh truy vấn trạng thái của các thành phần giao diện
Và lưu trữ trong các biến của Selenium
Ví dụ: “storeTitle”, “storeLocation”, …
open
click, clickAndWait
verifyTitle, assertTitle
verifyTextPresent, verifyElementPresent
waitForPageToLoad, waitForElementPresent
Kịch bản Selenium được lưu trữ mặc định dưới dạng HTML
Là một bảng gồm 3 cột tương ứng với “command”, “target”, và “value”
Ví dụ
<table>
<tr><td>open</td><td>/download/</td><td></td></tr>
<tr><td>assertTitle</td><td></td><td>Downloads</td></tr>
<tr><td>verifyText</td><td>//h2</td><td>Downloads</td></tr>
</table>
open /download/
assertTitle Downloads
verifyText //h2 Downloads
driver.Navigate().GoToUrl(baseURL + "/p/selenium/wiki/SeIDEReleaseNotes");
driver.FindElement(By.LinkText("Downloads")).Click();
driver.FindElement(By.Id("searchq")).Clear();
driver.FindElement(By.Id("searchq")).SendKeys("release");
driver.FindElement(
By.CssSelector("span.inIssueList > form > input[type=\"submit\"]")
).Click();
String tt = driver.Title;
Console.WriteLine(tt);
Nguồn:
http://www.hurricanesoftwares.com/
Ví dụ
cd d:\seleniumrc-2.45.0
java -jar selenium-server-standalone-2.45.0.jar
Bấm vào một đối tượng trên trang web hiện tại
Selenium.click();
Nhập chuỗi ký tự vào một đối tượng (textbox) trên trang web hiện tại
Selenium.type();
Nguồn:
http://www.hurricanesoftwares.com/
173 Chương 4 – Selenium RC và Selenium Grid Nguyễn Đạt Thông
Selenium Grid 2.0
Hỗ trợ phát triển kịch bản kiểm thử dựa trên Selenium WebDriver
Ví dụ
cd d:\seleniumrc-2.45.0
java -jar selenium-server-standalone-2.45.0.jar
–role hub
-port 4441
Ví dụ
cd d:\seleniumrc-2.45.0
java -jar selenium-server-standalone-2.45.0.jar
–role node
-hub http://localhost:4444/grid/register
Là một thư viện (API) hỗ trợ C#, Java, Python, Perl và Ruby
Hỗ trợ kiểm thử tự động trên nhiều trình duyệt khác nhau
WebDriver cho phép người dùng sử dụng ngôn ngữ lập trình để tạo nên Test Script
(không giống Selenium IDE)
có thể sử dụng các thao tác như các biểu thức có điều kiện.
cũng có thể sử dụng vòng lặp như do-while.
driver.Navigate().GoToUrl(baseURL + "/p/selenium/wiki/SeIDEReleaseNotes");
driver.FindElement(By.LinkText("Downloads")).Click();
new SelectElement(driver.FindElement(By.Id("can")))
.SelectByText("regexp:\\sAll downloads");
driver.FindElement(By.Id("searchq")).Clear();
driver.FindElement(By.Id("searchq")).SendKeys("stable");
}
}
}
IWebDriver
ITargetLocator
INavigation
IWebElement
WebDriverWait
Để sử dụng một web driver của một trình duyệt nào đó, thì
Trình duyệt đó phải được cài đặt trước đó
Chương trình “driver” tương ứng phải được cài đặt trước đó (ngoại trừ Firefox WebDriver).
// In C#
driver.Url = “http://www.google.com.vn”;
Lưu ý
• Một WebDriver có thể có nhiều cửa sổ (tab)
• Thao tác duyệt của WebDriver kết thúc ngay cả khi trình duyệt chưa kết thúc việc tải và hiển thị trang
web.
• Để đảm bảo các thành phần giao diện đã được hiển thị trước khi thao tác, phải sử dụng các hàm “wait”.
// In C#
driver.Close();
driver.Quit(); // close all windows and quit
Lưu ý
• Trình duyệt sẽ thoát nếu tất cả các cửa sổ đều được đóng
Truy vấn thông tin trang web trong cửa sổ hiện tại
// In Java
String src = driver.getPageSource();
String title = driver.getTitle();
String handle = getWindowHandle();
// In C#
string src = driver.PageSource;
string title = driver.Title;
string handle = driver.CurrentWindowHandle;
// In C#
driver.SwitchTo().Window( driver.CurrentWindowHandle );
Lưu ý
• Kết quả trả về của hàm “switchTo()” là một đối tượng kiểu ITargetLocator.
https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.TargetLocator.html
// In C#
driver.Navigate().Back();
driver.Navigate().Forward();
driver.Navigate().Refresh();
Lưu ý driver.Navigate().GoToUrl(“http://google.com.vn”);
• Kết quả trả về của hàm “navigate()” là một đối tượng kiểu INavigation.
https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.Navigation.html
// In C#
driver.Manage().Cookies.DeleteAllCookies();
Lưu ý
• Kết quả trả về của hàm “manage()” là một đối tượng kiểu IOptions.
https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.Options.html
Tìm kiếm một thành phần giao diện dựa vào “id”
// In HTML
<div id=“loginMenuId">...</div>
// In Java
WebElement element = driver.findElement(By.id(“loginMenuId"));
// In C#
IWebElement element = driver.FindElement(By.Id(“loginMenuId"));
Tìm kiếm một thành phần giao diện dựa vào “name”
// In HTML
<input name="cheese" type="text"/>
// In Java
WebElement cheese = driver.findElement(By.name("cheese"));
// In C#
IWebElement cheese = driver.FindElement(By.Name("cheese"));
Tìm kiếm một thành phần giao diện dựa vào “class name”
// In HTML
<div class="cheese"><span>Cheddar</span></div>
<div class="cheese"><span>Gouda</span></div>
// In Java
List<WebElement> cheeses = driver.findElements(By.className("cheese"));
// In C#
IList<IWebElement> cheeses = driver.FindElements(By.ClassName("cheese"));
IWebElement
có thể được xem như “một thành phần giao diện”
có các thao tác
• click
• clear, sendKeys
• findElement
• getAttribute
• getLocation, getSize
• getText
• isDisplayed, isEnabled, isSelected
• submit
// You may use any WebDriver implementation. Firefox is used here as an example
WebDriver driver = new FirefoxDriver();
String baseUrl = "http://www.google.com";
// Get the underlying WebDriver implementation back. This will refer to the
// same WebDriver instance as the "driver" variable above.
WebDriver driverInstance = ((WebDriverBackedSelenium) selenium).getWrappedDriver();
Kết nối đến Selenium Grid và tương tác như một WebDriver
Là một cách tiếp cận đại diện tiên phong của Keyword-Driven Test
Được áp dụng thành công trong nhiều dự án kiểm thử trên thế giới.
Được giới thiệu lần đầu tiên vào năm 1994 bởi Hans Buwalda, LogiGear.
Các trường hợp kiểm thử được tách thành các “hành động nghiệp vụ”
Tester xây dựng các trường hợp kiểm thử dựa trên các “hành động”
Automation Engineer cài đặt và bảo trì các “hành động”
Áp dụng phương pháp ABT, “kịch bản” tự động hóa sẽ được viết dưới dạng
browser id password
login yahoo mail http://mail.yahoo.com jamebond 007007
Actions
Actions Interfaces Data
Interfaces
Data
ABT
Mỗi thành phần giao diện được đặt một tên riêng
Ví dụ:
btnOk Parent HelloWin
Caption “Ok”
Class Button
Ví dụ
action: “enter account number” có các tham số:
textbox: “txtAccNum”
số tài khoản: “19001526292”
Chia nhỏ kịch bản kiểm thử thành 4 phần độc lập
Dữ liệu kiểm thử (Test data)
Thông tin giao diện (Interface)
Các hành động nghiệp vụ (Action)
Kịch bản kiểm thử (Test logic/Test script)
Các thành phần “data”, “interface”, “action” có thể được tái sử dụng trong nhiều
kịch bản kiểm thử khác nhau.
Tường Tái sử
minh dụng
Visibility Reusability
Bước 2: Tester xác định các yêu cầu/mục tiêu kiểm thử
Với mỗi module, xác định các yêu cầu/mục tiêu kiểm thử (test requirement/test
objective), dựa trên tiêu chí là
Các yêu cầu nghiệp vụ
Các đặc tả chức năng
Các tiêu chí chấp nhận của người sử dụng(user accteptance)
Các yêu cầu chất lượng khác của các stakeholder
Bước 4: Automation Engineer cài đặt các hành động nghiệp vụ high-level
Automation Engineer hiện thực các hành động nghiệp vụ high-level
bằng cách sử dụng các hành động low-level và các hành động khác (lập trình thêm) nếu cần
Automation Engineer giúp Tester hiệu chỉnh các hành động high-level nhằm tang
tính hiệu quả và tái sử dụng cho các hành động này.
Đề nghị thêm tham số