[VB] [VB6] [backlog] [個人メモ] [仕事メモ] [アイデア] [TstLink] [ピジョン・ブラッド] [開発] [CE] [LTSA] [自動化] [Qt] [TOOLS]
[RubyForge] [RAA] [Forge] [機能別索引] [逆引きRuby] [マニュアル] [るびま] [標準ライブラリ] [るりまサーチ] [Try! Ruby] [PRaggerまとめ]
[Rubyコーディング規約] [プログラミングのオキテ] [Rubyist SNS] [TOOLBIS]
[RubyネットワークProg] [druby] [コードなにがし] [RDocテンプレ] [Ruby/Tkサンプル]
[WAVE] [Xperia] [github] [twitterなど] [Android] [Java] [EA]
2007-11-17
テスト管理ツールTestLinkでWordなどで書かれたテストケースを使うためのツールpdfPageList2testcase.rb
動作環境:Windows
実行ファイルダウンロード:
http://testlinkjp.org/modules/mydownloads/singlefile.php?cid=1&lid=10
機能:テストケース名とページが書かれたCSVファイルを読み込んでTestLink用のテストケースに変換する
お勧め:日々大量のテストケースを実施し結果を集計している評価チームのリーダー
テスト管理ツールを導入する際に「これまで作ったテストケース」をどうするのかは問題だと思う。
今もWordで数万件くらいのテストケースがあり、これをテスト管理ツールのテストケースに書き直すのはそれだけで数人月かかり現実的ではない。
しかし導入できないとまた次の機種もWordでかかれてテスト管理ツールに乗らないという悪循環になる。
そこで「テスト内容は既存のテストケースを参照し、テスト結果はテスト管理ツールで管理」という方法を考えた。
具体的にはテスト管理ツールのテストケースから既存のテストケース(WordなりをPDF化したもの)のテスト内容を記載した「ページ」へリンクをはり、ブラウザでテスト内容を参照するという方法である。
cf. http://d.hatena.ne.jp/garyo/20071116/1195182501
以下がソース
pdfPageList2testcace.rb
#! /usr/local/bin/ruby -Ks # pdfpagelist2testcase # pdfpagelist -> testcase converter # # 2007/11/15 0.00 garyo release require 'csv' require 'kconv' require 'vr/vruby' require '_frm_pdfpagelist2testcace.rb' class TestCase attr_accessor :name,:summary,:steps,:expectedresults @name @summary @steps @expectedresults @xml def initialize(name,summary,steps,expectedresults) @name=Kconv.toutf8(name) @summary=Kconv.toutf8(summary) @steps=Kconv.toutf8(steps) @expectedresults=Kconv.toutf8(expectedresults) end def getXML @xml="<testcase name=\"#{name}\">" @xml=@xml+"<summary><![CDATA[\n#{summary}\n]]></summary>" @xml=@xml+"<steps><![CDATA[\n#{steps}\n]]></steps>" @xml=@xml+"<expectedresults><![CDATA[\n#{expectedresults}\n]]></expectedresults>\n" @xml=@xml+"</testcase>\n" @xml end end class TestSuite attr_accessor :name,:details,:testcase,:testsuite @name @details @testcase @testsuite @xml def initialize(name,details) @name=Kconv.toutf8(name) @details=Kconv.toutf8(details) @testcase=[] @testsuite=[] end def addTestCase(t) @testcase << t end def addTestSuite(t) @testsuite << t end def getXML @xml="<testsuite name=\"#{name}\"><details><![CDATA[\n#{details}\n]]></details>\n" @testcase.each{|s| @xml = @xml + s.getXML} @testsuite.each{|s| @xml = @xml + s.getXML} @xml=@xml + "</testsuite>\n" @xml end end class AllTestSuite attr_accessor :testsuite @testsuite def initialize(ts) @testsuite=ts end def getXML @xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" @xml=@xml + @testsuite.getXML @xml end end class Pdfpagelist2testcase TestcaseTitle = 0 TestcasePage = 1 attr_accessor :pdfFileName def initialize end def initTestSuite(name,details) @testsuite=TestSuite.new(name,details) end def addTestcase(name,summary,steps,expectedresults) s=TestCase.new(name,summary,steps,expectedresults) @testsuite.addTestCase(s) end def readFile(infile) pdfpagelist = CSV.open(infile, 'r') pdfpagelist.each_with_index {|line, i| if /^#/ =~ line[0] then #commnet elsif /PDF file/ =~ line[0] then #PDF filename @pdfFileName = line[1] elsif /Test Suite Name/ =~ line[0] then #Test Suite Name @testsuite.name = Kconv.toutf8(line[1]) else #page data steps="<p><a href=\"#{@pdfFileName}#page=#{line[TestcasePage]}\" target=\"_blank\">#{line[TestcaseTitle]}</a></p>" addTestcase(line[TestcaseTitle],line[TestcaseTitle],steps,"") end } end def writeFile(outfile) f = File.open(outfile,"w") ats=AllTestSuite.new(@testsuite) f.puts ats.getXML f.close end def convCvs2Testcase(infile,outfile,testSuiteName) initTestSuite(testSuiteName,"") readFile(infile) writeFile(outfile) end end module Frm_form1 def self_created end def open_clicked @edit1.text=openFilenameDialog([["all(*.*)", "*.*"]],0x1000,nil,nil) end def exit_clicked exit(0) end def doConvert_clicked button2_clicked end def button2_clicked if @edit1.text =="" then messageBox "Filename error","MSGBOX",0 else cx=Pdfpagelist2testcase.new file = @edit1.text wrfile = File.dirname(file) + "/" + File.basename(file, ".*") + ".xml" cx.convCvs2Testcase(file,wrfile,"testSuiteName") messageBox "finish","MSGBOX",0 end end end VRLocalScreen.start Frm_form1
_frm_pdfPageList2testcace.rb
## CAUTION!! ## This code was automagically ;-) created by FormDesigner. # NEVER modify manualy -- otherwise, you'll have a terrible experience. require 'vr/vruby' require 'vr/vrcontrol' module Frm_form1 include VRMenuUseable if defined? VRMenuUseable def _form1_init self.caption = 'PDF Page List to Testcase(TestLink) Ver 0.00' self.move(324,379,500,210) #$_addControl(FDOpenDlg,'openDlg1',"openDlg1",16,240,24,24,1342177280) #$_ctn_openDlg1=[16,240,[["all(*.*)", "*.*"]],4096,nil,nil] @mainmenu1 = newMenu.set( [ ["&File",[ ["&Open", "open"], ["sep", "_vrmenusep", 2048], ["E&xit", "exit"]] ], ["&Tool",[ ["&Convert", "doConvert"]] ] ] ) setMenu(@mainmenu1,true) #$_ctn_mainmenu1=[96,224] addControl(VRButton,'button2',"Convert",152,112,152,32,1342177280) addControl(VRStatic,'static1',"PDF Page List FileName",8,24,256,24,1342177280) addControl(VREdit,'edit1',"",8,48,464,24,1342177408) end def construct _form1_init end end #VRLocalScreen.start Frm_form1
コメントを書く
トラックバック - http://ruby.g.hatena.ne.jp/garyo/20071117
