<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 一種高可靠性軟件測試方案

一種高可靠性軟件測試方案

作者: 時(shí)間:2016-12-23 來(lái)源:網(wǎng)絡(luò ) 收藏
  1 引言

  高可靠性軟件泛指一類(lèi)軟件:該類(lèi)軟件運行過(guò)程中若出現故障會(huì )引發(fā)重大災難性事故或經(jīng)濟損失。通常航天型號軟件、銀行系統軟件、醫療行業(yè)軟件、通訊行業(yè)軟件等均屬此范疇。目前,越來(lái)越多的軟件企業(yè)涉及高可靠性軟件項目,如何保證軟件質(zhì)量成為眾多企業(yè)面臨的一個(gè)很重要的課題。這篇文章結合某航天項目地面應用系統模型(本文命名為CraftGS),重點(diǎn)討論如何從軟件測試的角度保證此類(lèi)產(chǎn)品的軟件質(zhì)量。

本文引用地址:http://dyxdggzs.com/article/201612/333218.htm

  2 CraftGS項目簡(jiǎn)介

  CraftGS是一個(gè)很經(jīng)典的衛星地面應用系統模擬項目。它分為5個(gè)子系統:數據接收子系統(DAS)、數據預處理子系統(DPS)、運行管理子系統(OMS)、數據管理子系統(DMS)以及數據產(chǎn)品實(shí)現(DPRS)子系統。CraftGS的總體可靠度要求是0.95。各分系統分配到的可靠度指標是如下:

  分系統名 可靠度指標

  DAS 0.99994

  DPS 0.99865

  OMS 0.99910

  DMS 0.99950

  DPRS 0.99502

  CraftGS的業(yè)務(wù)邏輯是Data Package從衛星傳入DAS,DAS負責解包,將解包后數據傳入OMS及DPS,OMS通過(guò)DAS傳來(lái)的數據檢測衛星是否正常運行并負責衛星飛行姿態(tài)調整;DPS負責調制DAS傳來(lái)的數據,轉換成有意義的邏輯數據。DPS處理后的邏輯數據傳入DMS以及DPRS。其中DMS負責數據備份、數據查詢(xún)及數據鏈路維護等操作;DPRS負責將DPS處理過(guò)的邏輯數據分門(mén)別類(lèi)地轉換成數據產(chǎn)品,并封裝發(fā)布。

  考慮到項目固有的可靠性安全性要求,CraftGS系統采用Java+Unix技術(shù)架構實(shí)現。該架構從編程語(yǔ)言級和系統級對軟件產(chǎn)品質(zhì)量做了保證。為了控制軟件產(chǎn)品開(kāi)發(fā)過(guò)程中的質(zhì)量,筆者推薦采用如下軟件測試方案。

  3 測試方案:軟件驗證技術(shù)+軟件確認技術(shù)+軟件測試管理

  CraftGS系統的軟件測試方案由三個(gè)部分組成,即軟件驗證技術(shù)、軟件確認技術(shù)和軟件測試管理技術(shù)。它們內涵及相互之間的關(guān)系如下圖所示:YSR中國可靠性資源網(wǎng)

  CraftGS測試方案

  測試技術(shù)層面 測試管理層面

  軟件驗證技術(shù) 需求規格說(shuō)明驗證 軟件測試團隊組織管理

  設計規格說(shuō)明驗證

  代碼驗證 軟件測試計劃管理

  交付驗證

  軟件確認技術(shù) 單元測試 軟件缺陷(錯誤)跟蹤管理

  集成測試

  系統測試 軟件測試件管理

  交付測試

  YSR中國可靠性資源網(wǎng)

  其中,軟件驗證技術(shù)著(zhù)眼于排除軟件開(kāi)發(fā)文檔中的錯誤。驗證活動(dòng)涉及的文檔按開(kāi)發(fā)流程主要涉及需求規格說(shuō)明、設計規格說(shuō)明(包括概要設計規格說(shuō)明、詳細設計規格說(shuō)明、數據庫設計規格說(shuō)明)、編碼規格說(shuō)明、產(chǎn)品交付文檔等一系列書(shū)面材料。目前驗證技術(shù)的實(shí)施在很大程度上是依靠測試人員手工完成的。驗證活動(dòng)視實(shí)際需要有時(shí)還會(huì )涉及到開(kāi)發(fā)人員和目標客戶(hù),需要得到他們必要的理解和支持。驗證測試采用的主要測試手段有:面對面質(zhì)詢(xún)、文檔抽查、非正式會(huì )議、同行評審等等。

  相對于軟件驗證技術(shù),軟件確認技術(shù)則主要著(zhù)眼于排除程序代碼中的錯誤?;顒?dòng)涉及的對象主要是程序部件的代碼或軟件成品。在實(shí)施過(guò)程中,常常按被測代碼的規模和測試所處的層次將軟件確認測試分為四個(gè)階段,即:?jiǎn)卧獪y試(也叫類(lèi)測試)、集成測試(也叫組裝測試)、系統測試和交付測試。確認測試基本上由軟件測試人員對照相關(guān)開(kāi)發(fā)文檔運行程序獨立完成的。必要時(shí),也可讓設計人員帶領(lǐng)測試人員閱讀程序代碼共同發(fā)現其中的錯誤,(即所謂代碼評審會(huì ))。有意見(jiàn)認為,在單元測試(或類(lèi)測試)階段,應該有軟件編碼人員參與,這樣能減輕測試人員閱讀代碼障礙。原則上,測試理論不提倡程序作者負責把關(guān)自己編寫(xiě)的程序的質(zhì)量。在實(shí)際實(shí)施過(guò)程中,可視實(shí)際情況靈活處理。(如成對編程可能會(huì )較好的處理單元測試這個(gè)難題,上面提到的代碼評審會(huì )也是為應對這個(gè)難題而想出的一個(gè)好辦法。),軟件確認技術(shù)目前已經(jīng)部分地實(shí)現了測試工具的自動(dòng)化,市面上已有不少自動(dòng)化工具能在測試人員的輔助下完成相應的測試工作(例如用于Java代碼單元測試的Junit工具,又如用于GUI測試的Rational Visual Test工具,等等)。

  軟件驗證技術(shù)和軟件確認技術(shù)均屬于測試技術(shù)層面的東西。然而對于工程質(zhì)量的保證而言,光靠軟件測試技術(shù)還遠遠不夠,還需要技術(shù)管理層面上的東西。軟件測試管理技術(shù)的誕生正是為彌補這個(gè)不足。按照管理的對象不同,測試管理技術(shù)大致涵蓋軟件測試團隊組織管理、軟件測試計劃管理、軟件缺陷(錯誤)跟蹤管理以及軟件測試件管理四大部分。下面,筆者將結合CraftGS項目對該測試方案做一個(gè)詳細的詮釋。

  4 在CraftGS項目中具體應用上述測試方案

  CraftGS五個(gè)分系統的開(kāi)發(fā)過(guò)程均在CraftGS測試團隊的質(zhì)量控制下有序進(jìn)行,嚴格地實(shí)施了上述測試方案。經(jīng)專(zhuān)家評定,各分系統及最后集成后的系統總體均達到了任務(wù)書(shū)中所分配的可靠性指標。

  4.1 在CraftGS項目中應用軟件驗證技術(shù)

  CraftGS項目中應用的軟件驗證技術(shù)主要包括需求規格說(shuō)明驗證、設計規格說(shuō)明驗證、代碼驗證以及交付驗證。以下逐一說(shuō)明。

  需求規格說(shuō)明驗證的主要任務(wù)是保證用戶(hù)的功能需求、業(yè)務(wù)需求、以及其他的一些需求(如非功能性需求、約束性需求等等)都已經(jīng)被分配到軟件需求規格說(shuō)明的各需求項中。

  設計規格說(shuō)明驗證相對需求規格說(shuō)明驗證而言,稍微復雜些,它包括3個(gè)部分的內容:即概要設計規格說(shuō)明驗證、詳細設計規格說(shuō)明驗證以及數據庫設計規格說(shuō)明驗證。其中概要設計規格說(shuō)明驗證的主要任務(wù)是確保軟件需求規格說(shuō)明中的需求項全部已經(jīng)分配到了概要設計規格說(shuō)明的各軟件模塊之中并且無(wú)多余物,詳細設計規格說(shuō)明驗證的主要任務(wù)是確保概要設計規格說(shuō)明中的模塊已經(jīng)全部分配到詳細設計規格說(shuō)明的各軟件單元之中并且無(wú)多余物,數據庫設計規格說(shuō)明雖然從范疇上講應該屬于詳細設計規格說(shuō)明范疇,但筆者認為因改把它獨立出來(lái)實(shí)施驗證活動(dòng)。(數據庫設計和軟件設計畢竟有很多不同之處。)數據庫設計規格說(shuō)明驗證的重點(diǎn)任務(wù)是驗證數據庫與外部應用程序的接口是否正確、數據操作實(shí)現界面是否清晰、數據庫整體設計是否合理、數據表設計是否符合3NF要求(如違反范式要說(shuō)明詳細理由)以及數據表中的字段(鍵)和索引的設計是否高效合理等等。完成設計規格說(shuō)明以后,下一步要做代碼驗證。

  代碼驗證的內容包括:代碼編寫(xiě)規范審查、代碼審查和代碼靜態(tài)分析三個(gè)部分。代碼編寫(xiě)規范審查主要是審核代碼排版的格式以及注解的格式是否符合開(kāi)發(fā)團隊的相應規范;代碼審查的任務(wù)主要是驗證詳細設計中的軟件單元是否都已被代碼覆蓋并正確實(shí)現,并且代碼中不含冗余物;代碼靜態(tài)分析技術(shù)主要任務(wù)是檢查變量或標號的定義與使用、表達式運算以及程序的流程設計上是否存在缺陷或錯誤。

  做完代碼驗證以后,軟件系統需要依次做單元測試、集成測試和系統測試,這部分內容屬軟件確認技術(shù)范疇,下面有專(zhuān)門(mén)的論述。軟件系統在做完系統測試后,就面臨著(zhù)交付使用的問(wèn)題,在系統正式移交給用戶(hù)之前,還需要做交付驗證和交付測試。交付測試技術(shù)下文有專(zhuān)門(mén)的論述,不贅述,這里主要談交付驗證技術(shù)。交付驗證包括安裝驗證和使用驗證兩部分內容。其中,安裝驗證的主要任務(wù)是保證程序能按照用戶(hù)手冊的提示正確安裝到目標機器上,使用驗證的主要任務(wù)是確保程序能按照用戶(hù)手冊的提示的操作正確完成某項功能或事務(wù)處理。這兩部分工作通常是由測試人員完成的,用以核實(shí)相關(guān)安裝和使用手冊是否正確無(wú)誤。

4.2 在CraftGS項目中應用軟件確認技術(shù)

  CraftGS中應用的軟件確認技術(shù)包括單元測試技術(shù)、集成測試技術(shù)、系統測試技術(shù)和交付測試技術(shù)。

  其中單元測試的主要任務(wù)是驗證詳細設計規格說(shuō)明中所劃分出來(lái)的軟件單元是否被程序編制人員用代碼形式正確地實(shí)現了。這里軟件單元可能是某個(gè)函數(或稱(chēng)方法)也可能是某個(gè)抽象數據類(lèi)型(如類(lèi)、數據結構或者模板)。單元測試在實(shí)際測試當中也常常被稱(chēng)為類(lèi)測試(在面向對象的設計中)或白盒測試(白盒的意思是面向代碼)。單元測試的工作原理是建構樁模塊和驅動(dòng)模塊以驅動(dòng)被測單元運行,然后,測試人員輸入設計好的測試用例,測試被測單元能否按照設計要求處理這些測試用例,對出現異常的測試用例,測試人員應做記載并反饋給軟件開(kāi)發(fā)團隊。

  做完單元測試以后,下一步的工作是對照軟件概要設計規格說(shuō)明,驗證各軟件單元組裝后形成模塊能否達到概要設計規格說(shuō)明中模塊的設計目標;在模塊級集成工作完成之后,測試人員還應測試各模塊組裝后形成的用戶(hù)系統內部存在沖突,各模塊能否正常工作。這里,模塊可能是指某個(gè)軟件部件,也可能是指某個(gè)或某幾個(gè)分系統。通常在做集成測試時(shí)先是從分系統內部的集成測試開(kāi)始做起,做完以后再測試各分系統是否能集成為最終要實(shí)現的大系統。也有其他做法(如自頂向下集成測試方法、核心系統先做集成測試或每日集成測試等等)??傊?,萬(wàn)變不離其宗。集成測試要保證模塊的內部正確性以及保證模塊能最終集成為大系統。集成測試有時(shí)也被稱(chēng)為組裝測試(在型號軟件中)或灰盒測試(有人認為集成測試介于白盒與黑盒之間)。

  做完集成測試以后,下一步工作就是做系統測試。系統測試的主要任務(wù)是驗證經(jīng)集成測試后形成的軟件系統是否滿(mǎn)足軟件需求規格說(shuō)明中的各需求項。這些需求項包括:業(yè)務(wù)需求、功能需求、非功能性需求(如:性能、可靠性、安全性、系統維護等方面的要求)以及一些約束性需求(如開(kāi)發(fā)標準、編程語(yǔ)言、通訊協(xié)議)等等。由于需求項涉及的領(lǐng)域很廣泛,這就導致了系統測試中對應的測試門(mén)類(lèi)相當龐雜。如:功能測試、執行路徑測試、可靠性測試、壓力測試、可恢復性測試、可移植性測試等等。這些測試最顯著(zhù)的特征是在一定環(huán)境條件下(如:模擬現場(chǎng)或極端條件),設計各種測試用例,輸入并運行完整的軟件系統,根據軟件系統運行過(guò)程中的實(shí)際表現,評估軟件系統是否符合軟件需求項的各類(lèi)要求。由于這類(lèi)測試一般不涉及內部代碼,因此,也有人把系統測試稱(chēng)做是黑盒測試。

  在做完系統測試以后,軟件產(chǎn)品就到了交付用戶(hù)使用這個(gè)階段了。交付過(guò)程中的重要一環(huán)就是交付測試,交付測試的目標是保證用戶(hù)對所交付的系統的滿(mǎn)意。與前面所討論的測試不同,交付測試主要的參與者應該是目標客戶(hù)??蛻?hù)參與越多越好。交付測試的內容一般包括安裝測試、可用性測試、alpha測試、beta測試等。其中安裝測試的主要任務(wù)是測試軟件系統能否在模擬環(huán)境下或實(shí)際現場(chǎng)由目標用戶(hù)順利完成在目標機器上的安裝;可用性測試的主要任務(wù)是測試軟件系統在完成安裝以后能否完成用戶(hù)的模擬任務(wù)或現場(chǎng)任務(wù);alpha測試采用的形式一般是由一個(gè)用戶(hù)在開(kāi)發(fā)環(huán)境下對軟件系統進(jìn)行類(lèi)似于黑盒的測試,測試的目的是從用戶(hù)的角度評價(jià)軟件產(chǎn)品的功能、可使用性、可靠性、性能和支持,尤其注重產(chǎn)品的界面和特色;beta測試采用的形式一般是先由軟件的多個(gè)用戶(hù)在實(shí)際使用環(huán)境下使用beta版軟件系統一段時(shí)間,然后把使用中出現的各類(lèi)故障或缺陷反饋給beta測試負責人員,再由測試負責人員移交給軟件開(kāi)發(fā)者,由開(kāi)發(fā)人員負責修正并完善軟件系統。Beta測試的目的是確保軟件產(chǎn)品交付給全體用戶(hù)之前能部分或全面地修正其在實(shí)際應用中可能出現的各類(lèi)BUG或不足。

  4.3 在CraftGS項目中應用軟件測試管理技術(shù)

  一如前文所述,測試技術(shù)解決了測試采用的方法和技術(shù)問(wèn)題,然而,對于一個(gè)工程而言,還需要相應的測試管理才能保證各項測試活動(dòng)的有序開(kāi)展。因此,在CraftGS項目中,軟件測試管理技術(shù)要解決的問(wèn)題是如何確保軟件測試技術(shù)(包括軟件驗證技術(shù)和軟件確認技術(shù))能在軟件項目在軟件生命內得到順利實(shí)施,并產(chǎn)生預期的效果。

  按照軟件測試管理面對的管理對象的差異,軟件測試管理技術(shù)大致分為軟件測試團隊組織管理、軟件測試計劃管理、軟件缺陷(錯誤)跟蹤管理以及軟件測試件管理四大部分。以下一一詮釋?zhuān)?/p>

  軟件測試團隊組織管理通俗地講就是測試團隊應該如何組建。在實(shí)際項目開(kāi)發(fā)中,我們常??吹接行﹩挝缓鲆暅y試團隊存在的意義,當要實(shí)施測試時(shí),往往臨時(shí)找幾個(gè)程序員充當測試人員;也有些單位盡管認識到了組建測試團隊的重要性,但在具體落實(shí)的時(shí)候往往安排一些毫無(wú)開(kāi)發(fā)經(jīng)驗的行業(yè)新手去做測試工作,這常常導致測試效率的低下,測試人員對測試工作索然無(wú)味。CraftGS項目的測試團隊首先聘有一名資深的測試領(lǐng)域專(zhuān)家,他具有極為豐富的航天項目軟件測試經(jīng)驗,對軟件開(kāi)發(fā)過(guò)程中常見(jiàn)的缺陷或錯誤了然于胸,此外,他還具有較好的親和力和人格魅力。其次,CraftGS項目測試團隊還具有很多具備一技之長(cháng)的成員,如對某些自動(dòng)化測試工具運用嫻熟或能輕而易舉地編寫(xiě)自動(dòng)化測試腳本。另外,測試團隊還聘有兼職成員。如驗證測試實(shí)施過(guò)程中,同行評審是最常使用的一種形式,這些同行專(zhuān)家就屬于兼職測試團隊成員的范疇。至于測試團隊里里的測試新手,這部分人可以安排去從事交付驗證或黑盒測試之類(lèi)的工作。

  軟件測試計劃管理通俗地講就是安排好測試流程。這部分內容具體涵蓋軟件測試策劃、軟件測試技術(shù)剪裁、測試進(jìn)度管理、成本管理等幾個(gè)部分。其中測試策劃工作主要是指具體測試活動(dòng)實(shí)施之前做好策劃工作,如起草測試大綱以及測試計劃;軟件測試技術(shù)剪裁工作主要是指測試團隊應根據軟件項目的具體實(shí)際剪裁出所要實(shí)施的測試技術(shù);測試進(jìn)度管理工作主要是指排出各項測試的時(shí)間進(jìn)度及人員安排,如有變動(dòng)時(shí)應做相應調整;測試成本管理工作的內容即開(kāi)列出測試活動(dòng)中會(huì )涉及到的資源需求。CraftGS項目測試團隊較好地按照上述要求,完成了軟件測試計劃管理。

  軟件缺陷(錯誤)跟蹤管理通俗地講就是確保發(fā)現的缺陷(錯誤)已經(jīng)被開(kāi)發(fā)團隊糾正或處理過(guò)并且沒(méi)有引入新的缺陷(錯誤)。具體來(lái)講,當測試團隊通過(guò)各種途徑發(fā)現了文檔或代碼中的缺陷或錯誤以后,并不是交一份測試報告就草草了事,而是在遞交報告以后繼續督促開(kāi)發(fā)團隊及時(shí)關(guān)閉已知缺陷或錯誤(當然,如有必要應對這些缺陷、錯誤做嚴重程度排序,以便開(kāi)發(fā)團隊能視輕重緩急安排處理順序)。當開(kāi)發(fā)團隊關(guān)閉了測試報告中的缺陷(錯誤)以后,測試團隊還需驗證開(kāi)發(fā)團隊在關(guān)閉過(guò)程中有沒(méi)有引入新的錯誤。通常,這個(gè)過(guò)程稱(chēng)為回歸測試?;貧w測試如發(fā)現問(wèn)題,繼續報開(kāi)發(fā)團組,按上述流程循環(huán),直至回歸測試最終通過(guò)。這部分工作在CraftGS項目中是使用自動(dòng)化的測試管理工具完成的,(市面上可選擇的工具有華創(chuàng )缺陷管理系統(BMS) 和Rational ClearQuest等等),這么做非常有效率。

  軟件測試件管理通俗地講就是指努力建設好測試團隊的財富庫并對測試團隊成員進(jìn)行技能培訓以幫助他們能使用好這個(gè)財富庫。這里,財富庫是指軟件測試件。測試件(Testware,指測試工作形成的產(chǎn)品)是一個(gè)不常見(jiàn)到的詞匯,它包括是測試團隊在長(cháng)期實(shí)踐過(guò)程中逐步積累起來(lái)的經(jīng)驗教訓、測試技巧、測試工具、規格文檔以及一些經(jīng)過(guò)少量修改能推廣至通用的測試腳本程序。測試件管理工作做得越好,測試團隊在實(shí)際測試過(guò)程中就能越少走彎路,測試團隊內部的知識交流和傳遞就越充分,測試腳本或規格文檔的重復開(kāi)發(fā)工作也就能被有效地避免。軟件測試件管理工作包括兩部分,一是建設,另一個(gè)是培訓。建設工作大抵是收集各類(lèi)測試外文檔、測試工具、測試腳本,也包括收集整理測試人員的會(huì )議發(fā)言、總結報告、技術(shù)心得等等。培訓工作大抵是通過(guò)技術(shù)講座、正式或非正式團隊會(huì )議、印發(fā)學(xué)習資料等形式進(jìn)行。CraftGS項目組考慮到測試團隊的長(cháng)久發(fā)展,較好地完成了測試件管理,測試團隊成員的技能水平在較短的時(shí)間內都有了非常迅速的進(jìn)步。

  5 結語(yǔ):高試技術(shù)需要更多關(guān)注

  以上筆者結合CraftGS項目對從測試技術(shù)和測試管理的角度對高試方案一個(gè)略粗淺的探討。筆者希望此文的發(fā)表能對相關(guān)軟件企業(yè)和軟件項目實(shí)施軟件測試技術(shù)起一定的參考和指導作用。需要說(shuō)明的是目前對高可靠性軟件如何實(shí)施軟件測試技術(shù)仍是一個(gè)頗不成熟的領(lǐng)域,缺少一種體系化的方法。各個(gè)企業(yè)可能都有一定的經(jīng)驗積累,不妨整理出來(lái),相互借鑒。




關(guān)鍵詞: 可靠性軟件測

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>