我寻找一个工具/框架来进行自动验收测试.创建新测试的界面应该非常简单,非程序员(客户,老板)将能够添加将自动测试的规范.
它应该是某种方式从命令行执行测试,包括在自动构建中运行测试.
我更喜欢Java和开源,但我的问题并不局限于此.
您可以推荐什么,并解释为什么您的工具/框架是世界上最好的.
我正在研究一个相当复杂的项目.我们有ac#forms app,它有几层业务逻辑,通过套接字接口与c ++硬件管理层通信.
我们有c ++方面的单元测试覆盖率和业务逻辑,但对于我来说,表单应用程序的验收测试对我来说是一个全新的世界,因为我们迄今为止只完成了Web应用程序.
有关从哪里开始的任何建议?我看了NUnitUI,但我不确定它有足够的深度来做我们需要的.我正在寻找一个自动UI测试套件.
此外,如果这是我需要做的,我可以支付正确的解决方案.
谢谢!
我正试图在那里筛选无数的测试解决方案,我甚至不确定我是否朝着正确的方向前进.故事是:我们正在运行一个RESTful Web服务,实现为Rails应用程序,支持我们的移动客户端.我们是单元测试Web服务(当然),但这涉及模拟应用程序的许多部分,例如搜索堆栈(Apache SOLR).
此外,我们的测试不会(即不能!)覆盖关键路线,例如移动登录/登录过程,因为这涉及API应用程序和移动网站之间的通信,用户可以在其中输入凭据,例如SSO(Janrain Engage).因此,标准的Rails集成测试不会这样做.
我从理论上认识到,如果测试套件设计得非常好,那么模拟只发生在下一层测试开始的那些连接点上,然后单独或功能测试服务API和移动网站,可以获得相同的测试覆盖率.我发现在实践中,如果你有几个开发人员独立地在测试套件上工作,这是一种错觉; 我承认我们的单元测试并不是那么精心设计的.特别是在运行TDD时,我发现虽然测试可以驱动应用程序代码,但测试代码设计仅针对被测单元进行了定制,从而产生了相当广泛的测试套件.
我发现的另一件事是,有时我们没有检测到纯粹使用单元测试的回归,例如,由于连锁效应,错误的查询被发送到SOLR服务器.这就是为什么我认为确保整个堆栈沿着关键路由工作的唯一真正方法是在每次部署之前在登台服务器上自动端到端地测试它,即将实际的HTTP请求发送到应用程序.
我的问题是:
testing integration-testing web-services ruby-on-rails acceptance-testing
我正在尝试从一包示例程序中自动执行往返安装和卸载一组MSI文件(由WiX生成).出于某种原因,非常乐意在双击时安装的.MSI文件会生成:
无法打开此安装包.验证程序包是否存在以及是否可以访问它,或与应用程序供应商联系以验证它是否为有效的Windows Installer程序包.
当我以下列方式使用MSIEXEC调用它时:
<ItemGroup>
<_SampleMsi Include="$(_ArtifactsPathAcceptanceSamples)\**\*.msi" />
</ItemGroup>
<Exec Command="$(WixDir)\smoke "%(_SampleMsi.Identity)""/>
<!--Guarantee precondition even if cleanup didn't work-->
<Exec Command="msiexec -passive -norestart -x "%(_SampleMsi.Identity)"" IgnoreExitCode="true" />
<Exec Command="msiexec -norestart -i "%(_SampleMsi.Identity)"" />
<!--Uninstall of every sample should also always work-->
<Exec Command="msiexec -passive -norestart -x "%(_SampleMsi.Identity)"" />
Run Code Online (Sandbox Code Playgroud)
当我尝试根据产品ID GUID卸载时,也会出现同样的问题: -
msiexec -passive -norestart -x FC7445BB-7E1D-4E36-A42A-CFA56263E453
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
我正在尝试为学习目的进行简单的验收测试.这是一个简单的身份验证方案:用户输入/admin,如果没有记录,他会被重定向/login到填写表单.
当我运行测试时,我收到此错误:
1) Couldn't login with a password protected area in LoginCest.loginUserWithProperCredentials
Guy couldn't fill field "username","rafael": Field matching id|name|label|value or css or xpath selector does not exist
Scenario Steps:
5. I fill field "username","rafael" <==== RED
4. I see current url equals "/login"
3. I am on page "/admin"
2. So that I Perform administrative tasks
1. As a Site Owner
Run Code Online (Sandbox Code Playgroud)
现在这是我的观点:
//create.blade.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
{{ Form::open() …Run Code Online (Sandbox Code Playgroud) 我是CodeCeption的新手.我身体里面有以下html,
<div><input type="text" name="content_id" id="contentId" maxlength="10" value="123"></div>
Run Code Online (Sandbox Code Playgroud)
在CodeCeption验收测试中,我有一个以下代码
`<?php
$I = new AcceptanceTester($scenario);
$I->wantTo('fillfield test');
$I->amOnPage('/');
$I->seeInField('#contentId', 123);
$I->fillField('#contentId', 222397);
?>`
Run Code Online (Sandbox Code Playgroud)
seeInField测试成功通过,但fillField会抛出错误
抱歉,我无法填写字段"#contentId",222397
InvalidArgumentException:当前节点列表为空
这阻止了我继续前进.帮助我解决这个问题.
当我使用codeception生成的AcceptanceHelper(_support/AcceptanceHelper.php)时,如何访问Actor/AcceptanceTester($ I).如何从StepObjects访问我的函数?
我有:
接受/ _steps/MyStepObject.php
namespace AcceptanceTester;
class MyStepObject extends \AcceptanceTester
{
public function deleteCookies(){
$I = $this;
$I->amGoingTo("delete all cookies...");
$I->executeInSelenium(function(\WebDriver $webdriver) {$webdriver->manage()->deleteAllCookies(); });
$I->reloadPage();
}
public function loginUser($user,$password,$language = 'Untranslated')
{
$I = $this;
$I->amOnPage(\LoginPage::$URL);
$I->deleteCookies();
$I->amGoingTo('fill the fields...');
$I->fillField(\LoginPage::$usernameField, $user);
$I->fillField(\LoginPage::$passwordField, $password);
$I->click(\LoginPage::$loginButton);
}
}
Run Code Online (Sandbox Code Playgroud)
在类中_support/AcceptanceHelper.php我想调用AcceptanceTester中的方法$I->canSee('something'),我想'login'从我的StepObject 调用我自己的方法(比如).
我知道我可以获得一个特定的模块(例如WebDriver)$this->getModule('WebDriver').但是我怎样才能获得AcceptanceTester/my StepObject?
我有一个页面,其中包含多个选项和一个名为“下载”的按钮。
我如何测试此按钮是否有效 - 文档开始下载,使用 Codeception 验收测试?
我正在使用Yii2的代码,我的配置如下:
class_name: AcceptanceTester
modules:
enabled:
- WebDriver:
url: 'http://ucms.ac.ir/admin/index-test.php/'
browser: chrome
- tests\codeception\common\_support\FixtureHelper
- Yii2
config:
Yii2:
configFile: '../config/backend/acceptance.php'
Run Code Online (Sandbox Code Playgroud)
测试运行,并且它们成功完成,但selenium打开的新浏览器选项卡上没有任何内容.我已经看过一些教程,在那些教程中,浏览器实际上显示了测试过程.此外,当发生错误并通过代码识别截取以供以后参考时,它也只是一个空白页面.我在ubuntu 14.10,selenium 2.47.1和chrome 45.当我使用firefox而不是chrome时也会发生这种情况.
我目前正在尝试对嵌套路由进行验收测试,该路由使用相同的组件两次,但使用不同的参数.这在我正常运行时工作正常,但是当我运行验收测试时,我注意到组件的参数没有被更新,这导致我的测试失败.以下是一些示例代码:
在index.hbs我有:
{{index-view model=model type='location'}}
Run Code Online (Sandbox Code Playgroud)
我的index-view组件看起来像这样:
<h1>{{title}} List</h1>
{{listing-table model=model type=type}}
Run Code Online (Sandbox Code Playgroud)
通过点击的一个元素listing-table,然后我去的locations.show路线,其中包含link-to的locations.show.devices路线.该locations.show.devices路线包含:
{{listing-table model=model.devices type='device' exclude='locationName'}}
Run Code Online (Sandbox Code Playgroud)
然而,在我的验收测试,我可以看到(呼应出器件的javascript这些属性),虽然model和type正在更新,exclude始终设置为当组件最初叫什么设置.
现在,我已经检查(通过console.log())组件是否被重复使用或没有,我可以看到,无论是init ()和didDestroyElement ()被调用两次,这意味着该组件经历的整个生命周期的两倍.但是,我真的不明白为什么我的exclude论点根本没有更新,为什么这只会在验收测试时发生?
这是我正在做的精简版(当然它适用于Twiddle,但不适用于现实生活!).
codeception ×5
php ×4
testing ×3
selenium ×2
blade ×1
c# ×1
ember.js ×1
forms ×1
gui-testing ×1
javascript ×1
laravel ×1
msbuild ×1
unit-testing ×1
web-services ×1
wix ×1
yii2 ×1