ITeye的用户名和密码找不到了,苦逼的我,只能转战新浪博客了。在我们的CI环境下的自动化项目,加之webservice test case 已经有了6个节点了,由于每天忙于其他,一直没有关注其中有一个run failed test case的节点,偶然看到,发现之前写的build脚本完全是shit,我不知道这个东西是如何一直存在下来的,先不说是否完美,单单是主要功能,就没有实现,或许是开始做这个任务的队友没有了解我的目的是什么。 ok, 4天之后,我看到了一个极为瘫痪的ant脚本,至此我不得不去自己关注这个问题。 我们令人欣喜的使用了selenium grid和testng的集成来使得所有的case可以支持多任务并发,ok,被CI执行过服务器里,找到我们的项目,看看到底生成了什么? 我们只看重要的,embedded.html 打开一看,哇塞,testng模式的自动化报告生成,再一看失败了30个case,咋办呢?看看detail吧,o shit,timeout,鄙视一下美国的service以及各种环境。我看到这30个失败的case但我依然对代码有信心,因为我认为大部分问题是环境以及机器性能导致的。我需要一键触发我的失败用例。再看另一个有价值的东西,${basedir}/target/reports/testng-failed.xml,这个也是很重要的信息,记录了所有失败的用例。 由于开始的种种原因,整个项目的所有case 我没有放在xml文档中,而是单独建立了一个class来让这些case自得其所,进行统一管理,当然起初我在这样设计的时候固然是有其他的考虑在里面的,易定位,方便调试等。当然testng可以很好的来execute装在xml里的case,这也是我最后解决这个问题的灵感。
../reports/testng-failed.xml失败则存在,成功则不生成,我的队友在做这个run failed需求的时候,只是想着如何把testng-failed.xml里面的case抽取出来,这导致最后各种问题的不能解决。
ok 主要问题一下子解决了,大家可以看到我在一个参数的设计上做了一个变化。但是大家思考一下,主要问题解决了之后衍生出一个新问题,如果最后run了多次,经过各种修改,所有的失败case全都通过了,那么这个时候CI依然会报错。这是因为runtime.AnalysisRunFailedReport这个小工具只会分析是否生成了testng-failed.xml,../reports下的testng-failed.xml只会保留最后一次出错时的记录。没有关系,一句话搞定
<delete dir="${basedir}/.." />
问题目前为止已经全部解决了。
其实很多问题不是太难解决,只是我们在解决问题前不能一味的去埋头解决,而不关乎方式,我要的当然仅仅是一个结果,我上司也是一样,问题是我们如何去分析问题,从而四两拨千斤的去解决他,我觉得这个比有多少年开发经验或者是编程能力神马的要重要的多。先思考,在做事。
相关推荐
Selenium 官方中文文档
Selenium Webdriver使用已打开的浏览器
Selenium WebDriver从入门到精通的电子书和随书代码精讲,学习Selenium自动化所不可或缺的资料。
Selenium官方中文文档
生成的测试脚本可以用Selenium Core手工执行,也能基于Selenium RC放入Java,C#,Ruby的单元测试用例中自动运行。 3. 测试用例调用实际的浏览器(如IE、FireFox)来执行测试。 和有些开源方案自行实现Web解释引擎...
selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium
selenium-doc, selenium 中文文档
Selenium中文API.pdf
selenium中文API,包含selenium的函数使用介绍整理。
selenium中python常用函数
Selenium WebDriver + ReportNG 中文乱码问题解决方案。
python selenium运行失败常见错误.docx
Selenium 中文API 自动化测试工具
selenium中文API.pdf
selenium selenium selenium
开源自动化测试Selenium 中文API,希望对你有用!
Selenium中文API参考手册.pdf
selenium 中文文档 ...这里主要集中了 Selenium 官网的所有文档,和项目 Wiki 中的部分文档翻译。 希望这些文档能帮助大家更好的了解 Selenium 的工作原理,而不仅仅是会使用那些客户端驱动的 API.