推廣系統,有如下測試場景:

pIdList-->單品/庫存/API-->JavaBean-->redis-->FreeMarker-->xml文件-->NFS-->nginx-->合作方push/pull

推廣系統的合作方定義meta data,有JSON格式的,也有xml格式的,之前通過Python反序列化JSON文件進行檢查,對於xml可以使用xmllint進行檢查。

通過品id調用單品API獲取對象緩存至redis步驟經過多個項目測試考驗,已經比較成熟。對於新接入的項目,有一個很重要的測試環節,根據FreeMarker模板將JavaBean生成的xml進行測試,除了針對模板本身的測試,也要對基於模板生成的xml進行測試。

A、根據meta xml生成schema文件

使用trang.jar,通過meta xml生成xsd規則文件。

java -jar trang.jar demo.xml demo.xsd

B、編寫shell腳本進行批量檢查

# 對於當前目錄下xml,通過xmllint配合schema進行標籤及內容類型檢查,將標準錯誤輸出重定向到文件
for i in *.xml
do
xmllint --noout --schema demo.xsd "$i" > _"$i".rs 2>&1
echo -n .
done

mv _*.rs xmllint_rs/
cd xmllint_rs/
find . -name _*.rs -type f -size -25c -exec rm -rf {} ;
echo .
echo 請立即查看結果文件夾....

C、結果檢查

[root@Centos64 xmllint_rs]# cat _99964.xml.rs
99964.xml:4: parser error : Opening and ending tag mismatch: data line 3 and product_id
product_id><![CDATA[20622471]]></product_id>
^
99964.xml:30: parser error : Opening and ending tag mismatch: dataset line 2 and data
</data>
^
99964.xml:31: parser error : Extra content at the end of the document
<data>
^

#################################################

[root@Centos64 xmllint_rs]# cat _99881.xml.rs
99881.xml:211: element total_comment_num: Schemas validity error : Element total_comment_num: 1,004 is not a valid value of the atomic type xs:integer.
99881.xml fails to validate

推薦閱讀:

相关文章