Selenium 的偉大之處在于它是在考慮了 CI 的基礎上從頭創建的,因為你能在像 Ant 那樣的構建工具中運行 Selenium。此外,由于框架設計者的高瞻遠矚,如果任何 Selenium 接受測試失敗,您也可以讓整個構建失敗。例如,清單 7 展示了一個 Ant 任務,該任務使用 Selenium 遠程控制服務器在一個 Web 應用程序中執行一系列表格驅動測試:
清單 7. 使用 Ant 運行 Selenium
<?xml version="1.0" encoding="iso-8859-1"?>
<project name="functional-tests" default="run-selenium-tests" basedir=".">
<property file="${basedir}/selenium.properties"/>
<import file="${basedir}/common-environment.xml"/>
<property name="acceptance.test.lib.dir"
value="${functional.test.dir}" />
<property name="firefox" value="*firefox" />
<property name="base.url"
value="http://${web.host.name}:${web.port}" />
<property name="acceptance.test.list.dir"
value="${functional.test.dir}" />
<property name="acceptance.test.report.dir"
value="${functional.test.dir}" />
<target name="run-selenium-tests">
<mkdir dir="${reports.dir}" />
<java jar="${acceptance.test.lib.dir}/selenium-server.jar"
fork="true">
<arg line="-htmlSuite "${firefox}""/>
<arg line=""${base.url}""/>
<arg line=""${acceptance.test.list.dir}/${test.suite}""/>
<arg line=""${reports.dir}/index.html""/>
<arg line="-timeout ${timeout}"/>
</java>
</target>
<target name="stop-server">
<get taskname="selenium-shutdown"
src="http://${web.host.name}:
${selenium.rc.port}/selenium-server/driver/?cmd=shutDown"
dest="result.txt" ignoreerrors="true" />
<echo taskname="selenium-shutdown"
message="Errors during shutdown are expected" />
</target>
</project>
執行 Selenium 測試時,當框架打開 Web 瀏覽器、閃電般執行測試,然后關閉該瀏覽器并生成 HTML 報告時,不要被嚇到。這是一種在開發生命周期的早期更快更容易地發現問題的方法(此時它們更易處理)。
使用 Cobertura 報告代碼覆蓋率
是否達到 100% 就是問題所在
運行像 Cobertura 或者 Emma 這樣的工具時,記住以下方面很重要:在一個特殊的方法中實現 100% 的行覆蓋并不意味著該方法沒有缺陷或者它已被完全測試。例如,如果您編寫了一個針對 if 語句的測試,該測試包含邏輯 And,而測試針對的是表達式的左側部分,則像 Cobertura 這樣的工具將報告 100% 行覆蓋,但是實際上,您僅執行了該語句的 50%;因此僅完成了 50% 的分支覆蓋。
文章來源于領測軟件測試網 http://www.kjueaiud.com/