首页 » PHP教程 » php分步履行技巧_自动化功能测试分步指南

php分步履行技巧_自动化功能测试分步指南

访客 2024-12-10 0

扫一扫用手机浏览

文章目录 [+]

每个运用程序(桌面、网络或移动)在发布到市场之前都须要进行测试。
功能测试被认为是最主要的测试类型,由于首先,运用程序必须做它须要做的事情。

功能测试验证每个软件功能的操作是否符合需求规范。
如果运用程序不能知足其功能需求,它可能无法长期存在。

php分步履行技巧_自动化功能测试分步指南

在任何运用程序的生命周期中,这种类型的测试都是一个关键且代价高昂的活动。
因此,功能测试自动化是提高软件质量和降落测试本钱的有效办理方案。

php分步履行技巧_自动化功能测试分步指南
(图片来自网络侵删)

这项事情将引入功能测试和自动化来测试网络运用程序。
我将探索如何设计功能测试用例,并利用一个众所周知的测试工具自动化它们。

什么是功能测试?

功能测试是一种测试类型,个中软件根据其功能需求规范进行测试,以创造故障。
功能测试许可创造软件与其规范之间的“差异”。
此外,它还验证了所有函数的行为都符合它们的需求。
大略地说,功能测试确保您的软件按预期事情(它做了它该当做的事情!).

功能测试利用黑盒技能,个中测试用例完备来源于规范,测试职员不知道内部软件逻辑和细节(图1)。

图1-功能黑盒测试

这种类型的测试是通过:

1. 向被测系统供应测试输入

2. 从被测系统获取结果3. 验证实际输出与规范中的预期输出相等(= =)

功能测试包括几种测试类型,如(图2) :

- Unit- Smoke- Sanity- Integration- System- Regression tests- And more

图2-功能测试的类型

这里我将重点先容系统测试。

系统测试是一种功能测试方法,它测试完全和完备集成的运用程序功能(测试全体系统)。

自动化功能测试

可以手动或自动实行功能(系统)测试。

手动测试是指测试职员通过与运用程序直接交互来实行功能测试。
自动化测试是指测试职员利用自动化工具(如 Maveryx)来测试软件的功能。
它可以通过编程办法实现,在基于脚本的自动化中,或者在无代码自动化中不须要编码(例如,关键字驱动方法)。

脚本化测试意味着利用 Java、 C # 和 Python 等编程措辞编写测试脚本。
因此,在这种情形下,良好的编程知识变得必不可少,但它险些包含了编码的所有好处。

无代码测试不须要编程知识,由于测试脚本的布局是通过选择测试操作来完成的,例如,从下拉菜单中选择,或者通过拖放测试组件来直不雅观地完成。

例子

许多 Web 运用程序的一个基本特性是登录功能。

在本文中,我将在 https://opensource-demo.orangehrmlive.com/测试 orangeHRM 演示软件的登录系统。

我可以把规范总结如下:

用户可以利用登录屏幕上显示的用户名和密码凭据从登录页面访问 OrangeHRM 演示系统(图3)当用户输入一个有效的用户名和密码并单击 Login 按钮时,用户登录到运用程序并访问 Dashboard (图4)当用户输入一个无效的名称和/或密码并单击 Login 按钮时,系统会显示一条缺点: “无效凭据”(图5)I如果用户名或密码为空,单击“登录”按钮,系统将显示一条缺点: “用户名不能为空”或“密码不能为空”(图6)

图3-OrangeHRM 演示网站

e 图4-仪表板网页

图5-无效凭据缺点

图6-空字段上的缺点(用户名和密码)

从供应的规范开始,设计以下功能测试用例是可能的。

测试用例名称

测试用例描述

预期产出

TC_001

输入有效的用户名和有效的密码,然后单击“登录”按钮。

用户登录到运用程序并在 https://opensource-demo.orangehrmlive.com/index.php/Dashboard 进入 Dashboard 页面

TC_002

输入无效的用户名和有效的密码,然后单击“登录”按钮。

Error: "Invalid credentials."

用户仍保留在登入页面的 https://opensource-demo.orangehrmlive.com/index.php/auth/validatecredentials

TC_003

输入有效的用户名和无效的密码,然后单击“登录”按钮。

Error: "Invalid credentials."

用户仍保留在登入页面的 https://opensource-demo.orangehrmlive.com/index.php/auth/validatecredentials

TC_004

输入无效的用户名和无效的密码,然后单击“登录”按钮。

Error: "Invalid credentials."

用户仍保留在登入页面的 https://opensource-demo.orangehrmlive.com/index.php/auth/validatecredentials

TC_005

保留空缺用户名和空缺密码,然后单击“登录”按钮。

Error: "Username cannot be empty."

用户仍保留在登入页面的 https://opensource-demo.orangehrmlive.com/

TC_006

保留空缺用户名并输入有效的密码,然后单击“登录”按钮。

Error: "Username cannot be empty."

用户仍保留在登入页面的 https://opensource-demo.orangehrmlive.com/

TC_007

输入有效的用户名并保留空缺密码,然后单击“登录”按钮。

Error: "Password cannot be empty."

用户仍保留在登入页面的 https://opensource-demo.orangehrmlive.com/

让我们考虑第一个测试用例(TC _ 001):

测试步骤(/输入)

预期产出

Start the browser 打开浏览器

导航到 OrangeHRM 演示网站https://opensource-demo.orangehrmlive.com/

OrangeHRM 演示网站在网址 https://opensource-demo.orangehrmlive.com/打开

输入有效的用户名® "Admin" “管理”

用户名字段用值“ Admin”添补

输入有效的密码® "admin123" “ admin123”

“密码”字段已添补

单击“登录”按钮

仪表板页面显示在 https://opensource-demo.orangehrmlive.com/index.php/Dashboard

自动化功能测试脚本

可以手动(“按原样”)或自动地实行这个测试用例。
为了实现自动化,我将利用 Maveryx 和 Java。

Maveryx 是自动化的功能和回归测试工具。
该软件供应功能、回归、用户界面、无代码和资料驱动测试的自动测试功能。
它支持一系列运用程序,包括基于 Web 的。
Net、 Java 等等。

Java 不须要大量的先容。

下面是实现测试用例 TC _ 001的分步指南。
对代码进行了很好的注释,以便理解每一行的浸染。

1. 启动浏览器

Java

//launch Chrome browser Bootstrap.startApplication(chrome);//new browser instanceGuiBrowser browser = new GuiBrowser();

2. 浏览 orangeHRM 演示网站 OrangeHRM 演示网站的 https://opensource-demo.orangehrmlive.com/是:。

Java

//OrangeHRM demo website page URL String pageURL = "https://opensource-demo.orangehrmlive.com/"; //navigate to the OrangeHRM demo websitebrowser.navigateTo(pageURL); //check the landing page URLassertEquals(pageURL, browser.getCurrentPageUrl());

图7-JUnit 断言列表

我建议利用断言来根据预期的结果验证结果(图7)。
断言将预期结果与实际结果进行比较。
如果它们匹配,则测试用例通过。
如果没有,那么测试用例就会失落败。

输入有效的 Username = “ Admin”-> 用户名字段用值“ Admin”添补。

Java

//the usernameString username = "Admin";//the Username text fieldGuiText usrName = new GuiText("Username");//set the usernameusrName.setText(username);//check that the username has been correctly insertedassertEquals(username, usrName.getText());

与 Selenium 不同,Maveryx 不该用“ Locators”(包括 XPath)来标识测试脚本将与之交互以复制用户操作的元素。

利用 Maveryx,您可以描述要测试的 UI 元素,由于它们涌如今运用程序中。
在我的示例中,我利用用户名文本字段占位符“ Username”来标识工具(图8)。

测试工具在运行时直接标识,而不该用任何预先录制的 UI 映射(或测试工具/图像存储库)。

Figure 8 - The Username text field 图8-Username 文本字段

输入一个有效的 Password = “ admin123”-> Password 字段。

Java

//the passwordString pwd = "admin123";//the Passoword text fieldGuiPasswordText password = new GuiPasswordText("Password");//set the password password.setText(pwd);//check that the password has been correctly insertedassertEquals(pwd, password.getText());

Password 文本字段由其占位符“ Password”标识(图9)。

图9-Password 文本字段

点击登录按钮-> (用户已登录)仪表板页面在 https://opensource-demo.orangehrmlive.com/index.php/Dashboard 加载。

Java

//click The Login buttonnew GuiButton("LOGIN").click();//check that the header "Dashboard" is present (fig.10)new GuiHtmlElement("Dashboard", AccessibleRoleMaveryx.WEB_H1).waitForObject(5, 1);//the Dashboard page URLString dashboardURL = "https://opensource-demo.orangehrmlive.com/index.php/dashboard";//check the Dashboard page URLassertEquals(dashboardURL, new GuiBrowser().getCurrentPageUrl());

图10-‘ Dashboard’头

测试脚本现在可以实行了。

Maveryx 将启动 Chrome 浏览器,并在实行代码时打开 OrangeHRM 登录页面。
然后,它将利用干系凭据登录。
它还将通过断言检讨预期和实际结果。

类似地,测试用例 # 2(TC _ 002)将天生如下 Maveryx 测试脚本:

Java

//invalid username String username = "Admi";//the Username text fieldGuiText usrName = new GuiText("Username");//set the invalid usernameusrName.setText(username);//check that the username has been correctly insertedassertEquals(username, usrName.getText());//the password (valid)String pwd = "admin123";//the Passoword text fieldGuiPasswordText password = new GuiPasswordText("Password");//set the password password.setText(pwd);//check that the password has been correctly insertedassertEquals(pwd, password.getText());//click The Login buttonnew GuiButton("LOGIN").click();//check that the message "Invalid credentials" is present (fig.5)new GuiHtmlElement("Invalid credentials").waitForObject(5, 1);

同样的方法适用于所有其他测试用例。

结论

功能测试可能是软件天下中最主要、已知和实践的测试形式。
它也是能够捕获大多数毛病的测试类型。

在本文中,我磋商了功能测试的各个方面,重点关注如何根据规范创建功能测试用例,以及如何通过一个实际示例自动化这些测试用例。

相关文章