分布在多個(gè)IT基礎(chǔ)設(shè)施上的數(shù)據(jù)讓軟件測(cè)試變的困難。虛擬化新技術(shù)提供了一些環(huán)節(jié)問題的方案。
軟件開發(fā)測(cè)試階段變得越來越困難。沙盒、容器和數(shù)據(jù)虛擬化將是軟件測(cè)試問題的解藥。
應(yīng)用程序不僅是物理和地理位置上相互關(guān)聯(lián),同時(shí)還必須處理一些跨越組織邊界的場(chǎng)景,如公有和私有云軟件。涉及到數(shù)據(jù)訪問的應(yīng)用場(chǎng)景時(shí)尤其如此:從社交媒體和公有云獲得的數(shù)據(jù)必須成為傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)和商業(yè)智能應(yīng)用的一部分。
最好的測(cè)試環(huán)境,是將正式環(huán)境做一個(gè)完全鏡像。要如何才能通過一個(gè)遠(yuǎn)程服務(wù)或者一部分軟件設(shè)計(jì)就能抽象出物理硬件的所有細(xì)節(jié)?
試試采用分布式數(shù)據(jù)庫(kù)、沙盒、容器和數(shù)據(jù)虛擬化來解決這些問題,能夠更好的提供更接近服務(wù)實(shí)際情況的測(cè)試環(huán)境。
沙盒測(cè)試
進(jìn)行軟件測(cè)試時(shí),把該服務(wù)器從運(yùn)行環(huán)境中隔離出來,在以前是件難事。在同一臺(tái)硬件上運(yùn)行企業(yè)級(jí)應(yīng)用程序測(cè)試,會(huì)大大增加生產(chǎn)環(huán)境停機(jī)的可能性。
現(xiàn)在虛擬化技術(shù)已經(jīng)可以實(shí)現(xiàn)硬件與軟件的隔離。測(cè)試人員在一個(gè)看起來像正式運(yùn)行環(huán)境的沙箱中操作——事實(shí)上這就是運(yùn)行環(huán)境的一部分,而企業(yè)應(yīng)用程序則安全運(yùn)行,猶如沙盒不存在一樣。
隨著分布式數(shù)據(jù)庫(kù)的使用,應(yīng)用程序、數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)分區(qū)都運(yùn)行在不同的硬件上;實(shí)際的測(cè)試架構(gòu)則更為復(fù)雜。盡管如此,方法是想通的:在每臺(tái)服務(wù)器上創(chuàng)建包含測(cè)試應(yīng)用程序的沙盒、數(shù)據(jù)庫(kù)和數(shù)據(jù)存儲(chǔ),然后假設(shè)沙盒控制著整臺(tái)機(jī)器那樣運(yùn)行測(cè)試。
軟件測(cè)試沙盒技術(shù)可能是目前可以得到的最接近真實(shí)運(yùn)行環(huán)境的方案。沙盒只使用每臺(tái)服務(wù)器的一部分資源;但應(yīng)用程序的實(shí)際運(yùn)行常常只用到類似的部分。
容器與應(yīng)用程序性能
虛擬機(jī)有很多有點(diǎn),但它被設(shè)計(jì)為運(yùn)行在一個(gè)OS內(nèi)核上,無法運(yùn)行在同一臺(tái)服務(wù)器上或者被OS優(yōu)化。這樣會(huì)導(dǎo)致性能、費(fèi)用的顯著增加,使得其難以在運(yùn)行測(cè)試期間更精確的模擬運(yùn)行性能。
容器的作用就像虛擬機(jī),但可以使用相同操作系統(tǒng)的內(nèi)核,并且在較低的級(jí)別訪問內(nèi)核。因此,考慮到在z/OS內(nèi)核上運(yùn)行Linux系統(tǒng)的代價(jià),容器可以實(shí)現(xiàn)接近原生性能的在虛擬化Linux操作系統(tǒng)上運(yùn)行Linux應(yīng)用。這個(gè)軟件測(cè)試技術(shù)能夠提供更好的模擬運(yùn)行時(shí)性能。
大多數(shù)分布式數(shù)據(jù)庫(kù)都作為應(yīng)用程序運(yùn)行在相同的操作系統(tǒng)上。重新設(shè)計(jì)應(yīng)用程序,使其容器化,接著就可以在沙盒中測(cè)試他們,同時(shí)還能獲得和運(yùn)行環(huán)境一樣的性能優(yōu)勢(shì),并更準(zhǔn)確的反映出來。
數(shù)據(jù)虛擬化
數(shù)據(jù)虛擬化是個(gè)特例,但邏輯在于測(cè)試需要考慮一些特殊情況,如某些數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)/數(shù)據(jù)拷貝不可用——例如鏡像存儲(chǔ)的兩個(gè)鏡像之一不可用。
數(shù)據(jù)虛擬化軟件可以讓其變得姜丹:軟件測(cè)試人員可以關(guān)閉一些數(shù)據(jù)庫(kù)拷貝來模擬硬件故障,并要求應(yīng)用程序?qū)τ嘞碌臄?shù)據(jù)庫(kù)進(jìn)行分析,重新定義數(shù)據(jù)虛擬化軟件的其余數(shù)據(jù)庫(kù)。在數(shù)據(jù)虛擬化中,應(yīng)用程序并不關(guān)心數(shù)據(jù)實(shí)際駐留在哪個(gè)硬件上。
完整的分布式數(shù)據(jù)庫(kù)測(cè)試
將這種軟件測(cè)試架構(gòu)整合起來的一種方法是編寫一個(gè)服務(wù),可以遠(yuǎn)程調(diào)用測(cè)試指令,抽象并實(shí)現(xiàn)軟件具體位置和架構(gòu)的用戶填充。每個(gè)物理位置都有一個(gè)代理可以同時(shí)模擬應(yīng)用程序用戶輸入流,采用沙盒中的容器來完成軟件的實(shí)際測(cè)試。在適當(dāng)?shù)那闆r下,采用數(shù)據(jù)虛擬化軟件模擬特定的IT基礎(chǔ)設(shè)施故障。