任何人都可以为质量保证/测试人员推荐一个好的播客.我发现开发方面有很多种,但尚未找到QA/Testing的好方法(不是从开发人员的角度来看).
对于组成另一个对象作为其实现的一部分的对象,编写单元测试的最佳方法是什么,只有主要对象才会被测试?琐碎的例子:
class myObj {
public function doSomethingWhichIsLogged()
{
// ...
$logger = new logger('/tmp/log.txt');
$logger->info('some message');
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我知道可以设计对象以便可以注入logger对象依赖项并因此在单元测试中进行模拟,但情况并非总是如此 - 在更复杂的场景中,您需要组合其他对象或调用静态方法.
由于我们不想测试logger对象,只有myObj,我们如何进行?我们用测试脚本创建一个stubbed"double"吗?就像是:
class logger
{
public function __construct($filepath) {}
public function info($message) {}
}
class TestMyObj extends PHPUnit_Framework_TestCase
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
这对于小对象来说似乎是可行的,但对于更复杂的API而言,这将是一个痛苦,其中SUT依赖于返回值.另外,如果你想测试对依赖项对象的调用,你可以使用模拟对象吗?有没有办法模拟由SUT实例化的对象而不是传入?
我已经阅读了关于模拟的手册页,但它似乎并没有涵盖这种依赖是由组合而不是聚合的情况.你怎么做呢?
我们有一个通过ClickOnce提供并由Web服务驱动的Windows Forms,.NET 2.0应用程序,我们的客户偶尔希望将其部署到Citrix环境中.在某些情况下,客户选择允许我们的应用程序在本地部署到用户计算机并绕过Citrix服务器,在一种情况下,我们已经为客户提供了静态安装程序,条件是不会自动推送更新,在某些情况下,我们的客户IT部门已经掌握了使ClickOnce部署在Citrix环境中工作的技术知识.
我的问题不是关于ClickOnce与Citrix问题本身 - 我们从在线研究和与客户交谈中学到了相当多的东西 - 但是关于我们第一手查看问题的最具成本效益的方法.特别是对于那些Citrix客户或供应商而言,我们设置Citrix QA环境(特别是Citrix用于桌面虚拟化)的最有效方式是什么,因为我们没有真正使用Citrix服务器?
我听过开发人员说编写代码的人不应该是测试代码的人.我在这种情况下寻找人们的经验.很多时候我已经完成了我的开发,然后发布到QA部门并将代码发回给我,因为我的编码打破了应用程序的某些方面,无论我在QA发布之前测试了多少.
这个板上的任何人都有一个可以遵循的流程,这使他们能够在发布到QA之前彻底测试他们的代码吗?
我意识到术语"标准"很奇怪,因为测试非常依赖项目依赖,但如果我布置一个非常标准的场景,我希望得到关于我应该关注的测试类型的反馈.
我的团队正在创建一个中型数据驱动的Web应用程序.我们正在使用一个相当敏捷的过程.在大多数情况下,要求已经设定,但我们也会在最后一刻得到一些改变.
到目前为止,我们一直在进行大多数手动测试.我们正努力尽可能地实现自动化.我一直在研究一些工具,以下是我认为需要关注的测试类型:
单元测试(测试驱动开发风格) - 由于编写了大量代码,因此在游戏中有点晚了,但是我计划在实现功能之前进行测试.出于这个问题的目的,我们甚至可以假设我没有启动该项目.
集成测试 - 由于我们的应用程序在网上,我想我使用术语集成测试来表示页面之间的链接?什么是一个很好的开源工具(让我们说.NET)?
回归测试 - 我们的单元测试似乎是免费的
数据完整性测试 - 不确定您称之为什么,但只是我们从客户端获取的数据加载到应用程序中的数据是有效的.
功能测试 - 这通常是在GUI中完成的吗?是否有良好的代码驱动选项?
性能和负载测试 - 确保应用程序即使在压力下也能快速响应.
我总是被告知QA团队应该有几乎与开发团队一样多的时间来查看应用程序,但似乎现在许多方面都可以实现自动化.这些天,官方的"QA团队"是不是更少需要?
我的主要问题是:
非常感谢!
当我在Sonar中遇到违规(违反钻取标签)时,在源代码视图中Sonar有一些动作,如评论,分配等,其中一个是假阳性,我想知道这个操作的确切含义是什么,什么时候应该使用它?
我想我已经阅读了Stack Overflow上的所有Selenium超时问题,但是我的Selenium webdriver 2.25(Python 2.7绑定)中的隐式和显式超时都没有工作,并且"no_timeout_here ="行都会永远挂起 -
browser = webdriver.Firefox()
browser.implicitly_wait(6)
browser.set_page_load_timeout(30)
browser.get("http://www.google.com")
try:
#no_timeout_here = browser.find_element_by_id("id_not_found")
no_timeout_here = WebDriverWait(browser, 5).until(lambda browser:
browser.find_element_by_id("id_not_found"))
except:
raise
Run Code Online (Sandbox Code Playgroud)
所有指针将不胜感激!
10月16日更新
感谢seleniumnewbie的全面解答,但是你的单元测试代码仍然依赖于我在Python 2.7下的Ubuntu 11.04(64位) -
(2012/10/17 11:51:58)$ time ./timeout.py
^CTraceback (most recent call last):
...
KeyboardInterrupt
real 2m26.572s
user 0m0.368s
sys 0m0.232s
(2012/10/17 11:54:26)$ python -V
Python 2.7.2+
(2012/10/17 11:57:04)$ uname -a
Linux 3.0.0-26-generic #43-Ubuntu SMP Tue Sep 25 17:19:22 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
(2012/10/17 11:57:10)$ ls selenium-server-standalone-2.25.0.jar
Run Code Online (Sandbox Code Playgroud)
我可以知道您的OS/Python版本吗?
想知道Selenium和Fitnesse如何融入软件测试人员的工具库中.应用这些工具在哪里适合?它们是重叠还是互补?
如果有人可以将这些工具放在上下文中,那将会很棒.
我想在表单外的空白区域执行鼠标点击,以便通过Selenium IDE唤醒某些网站的数据流量.有任何想法吗?
我试图点击x,y,但它对我的测试用例没有效果.场景如下:
实现简单崩溃/错误报告机制的最佳方法是什么?
细节:我的应用程序是跨平台的(mac/windows/linux)并用Python编写,所以我只需要一些能给我发送少量文本的东西,例如只是一个时间戳和一个追溯(我已经生成并显示在我的错误对话框).
如果它可以简单地通过电子邮件发送它会很好,但是如果不在应用程序中包含smtp服务器的用户名和密码,我就无法想到这样做...我应该在服务器端实现一个简单的Web服务吗?并让我的应用程序发送带有信息的HTTP请求?有更好的想法吗?
qa ×10
testing ×5
selenium ×3
python ×2
unit-testing ×2
automation ×1
citrix ×1
clickonce ×1
fitnesse ×1
javascript ×1
php ×1
phpunit ×1
podcast ×1
sonarqube ×1
web ×1