我打算找一份工作,担任软件测试员(也许是SDET),尤其是进行网站测试。我对该领域有一些模糊的印象,并提出了以下几个具体问题:
在众多文档(例如功能规范,设计规范)中,我应该更注意哪些内容?如何从测试人员的角度查看它们?
关于编写测试规范有什么好的建议吗?
应该注意网站测试吗?
这些只是我现在遇到的一些问题,我将在不久后更新。
我很想听到你的声音。非常感谢。
我有一个测试方法,使用NUnit和Selenium,它在我们的网站上打开浏览器,该浏览器位于Production Server上并注册用户并验证注册是否成功.
(我知道理想情况下系统测试应该在单独的测试服务器而不是生产上运行,但在这里他们想测试prod系统是否有效!)
问题是如何通过此测试回滚数据库更改?例如,运行状态之前和之后我的数据库的状态应该是相同的.
我想到了3种可能的选择,但没有一种是实用的:
1)在开始测试(Setup)之前和运行测试之后(TearDown)编写SQL查询以从实际表中删除; 这是我当前的方法但是这种方法的问题在于我必须确切地知道每个运行的系统测试涉及哪些表,这可能很快变得非常复杂,因为测试可能会影响多个表.
2)编写事务代码这不是一个选项,因为代码更改是由网站完成的,而不是由编写的单元测试完成的.
3)在每次测试开始之前获取现有数据库(SQL Server 2008 R2)的快照,然后在测试完成后,将快照还原到原始快照.如果我们只能在Staging环境中运行测试,这个想法对我来说听起来不错,但问题是测试必须在生产上运行并且可能需要5分钟才能完全滚动并恢复它,这将是一个愚蠢的想法,因为在那5分钟内完成的更改将会丢失!
请告知解决此问题的最佳方法是什么方法?可能有第四种选择?
谢谢,
我正在使用Spark数据框,它可以从三种不同的模式版本之一加载数据:
// Original
{ "A": {"B": 1 } }
// Addition "C"
{ "A": {"B": 1 }, "C": 2 }
// Additional "A.D"
{ "A": {"B": 1, "D": 3 }, "C": 2 }
Run Code Online (Sandbox Code Playgroud)
我可以通过检查架构是否包含字段"C"以及是否不向数据帧添加新列来处理附加的"C".但是,我无法弄清楚如何为子对象创建一个字段.
public void evolvingSchema() {
String versionOne = "{ \"A\": {\"B\": 1 } }";
String versionTwo = "{ \"A\": {\"B\": 1 }, \"C\": 2 }";
String versionThree = "{ \"A\": {\"B\": 1, \"D\": 3 }, \"C\": 2 }";
process(spark.getContext(), "1", versionOne);
process(spark.getContext(), "2", versionTwo);
process(spark.getContext(), "2", versionThree); …Run Code Online (Sandbox Code Playgroud) Mockito继续拦截我在DAO中创建的函数并随机返回0.我希望函数能够实际运行.我在哪里可以配置这个mockito野兽单独留下功能?
调试器跳到这里而不是进入我的spring dao:
public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy)
throws Throwable {
if (objectMethodsGuru.isEqualsMethod(method)) {
return proxy == args[0];
} else if (objectMethodsGuru.isHashCodeMethod(method)) {
return hashCodeForMock(proxy);
}
MockitoMethodProxy mockitoMethodProxy = createMockitoMethodProxy(methodProxy);
cglibHacker.setMockitoNamingPolicy(mockitoMethodProxy);
MockitoMethod mockitoMethod = createMockitoMethod(method);
FilteredCGLIBProxyRealMethod realMethod = new FilteredCGLIBProxyRealMethod(mockitoMethodProxy);
Invocation invocation = new Invocation(proxy, mockitoMethod, args, SequenceNumber.next(), realMethod);
return handler.handle(invocation);
}
Run Code Online (Sandbox Code Playgroud) 在Java中我可以扩展Thread或实现Runnable,C#中的等价物是什么?我发现只有看起来像工具可运行的东西,但没什么用处.