Upgrade to Pro — share decks privately, control downloads, hide ads and more …

レガシーなプロダクトをテストしたかった話

 レガシーなプロダクトをテストしたかった話

Kazushige Tominaga

July 20, 2016
Tweet

More Decks by Kazushige Tominaga

Other Decks in Programming

Transcript

  1. テストしたかったもの forSurvey 弊社の主要プロダクト マー ケティングリサー チツー ル 運用実績10 年 Web

    フレー ムワー ク無し バリバリの現役選手 作りなおす予定無し レガシー コー ド
  2. レガシ~ ① require 地獄 < ? p h p r

    e q u i r e _ o n c e ( " D B / h o g e . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " T L / h o g e . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " T L / h o g e 2 . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " T L / h o g e 3 . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " T L / h o g e 4 . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " C M / f u g a . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " C M / f u g a 2 . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " C M / f u g a 3 . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " C M / f u g a 4 . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " C M / f u g a 5 . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " C M / f u g a 6 . c l a s s . p h p " ) ; r e q u i r e _ o n c e ( " h o g e h o g e . p h p " ) ; r e q u i r e _ o n c e ( " f u g a f u g a . p h p " ) ; r e q u i r e _ o n c e ( " X M L / h o g e f u g a . c l a s s . p h p " ) ; . . . 以下略
  3. レガシ~ ② 途中でexit i f ( $ _ S E

    S S I O N [ ' i d ' ] = = " " ) { e r r o r ( " S e s s i o n E r r o r . P l e a s e l o g i n a g a i n . " ) ; e x i t ; } i f ( ! $ _ S E S S I O N [ " a c c e s s _ p r i v i l e g e " ] ) { e r r o r ( " Y o u c a n n o t a c c e s s o n t h i s s e r v e r . " ) ; e x i t ; } $ d b C o n = n e w D B C o n ( ) ; i f ( ! $ d b C o n - > c o n n e c t ( k D B _ N A M E ) ) { e r r o r ( " F a i l e d t o c o n n e c t D B . " ) ; e x i t ; } . . . 以下略
  4. レガシ~ ③ コンテキストで変わる定数 c o n f i g /

    ├ 0 0 1 / │ └ c o n s t . p h p └ 0 0 2 / └ c o n s t . p h p config/001/const.php d e f i n e ( " H O G E " , 1 ) ; config/002/const.php d e f i n e ( " H O G E " , 2 ) ;
  5. index.php < ? p h p h e a d

    e r ( " C o n t e n t - T y p e : t e x t / h t m l " ) ; h e a d e r ( ' L o c a t i o n : h t t p : / / w w w . e x a m p l e . c o m / ' ) ; s e s s i o n _ s t a r t ( ) ; $ i d = $ _ S E S S I O N [ ' i d ' ] ; $ u s e r n a m e = $ _ G E T [ ' u s e r n a m e ' ] ; . . . e c h o ( ' O K ' ) ; e x i t ; ? >
  6. < ? p h p c l a s s

    I n d e x T e s t e x t e n d s P H P U n i t _ F r a m e w o r k _ T e s t C a s e { p u b l i c f u n c t i o n t e s t I n d e x ( ) { $ t e s t e r = n e w F u n c t i o n a l T e s t e r \ F u n c t i o n a l T e s t e r ( ) ; $ t e s t e r - > s e t S e s s i o n ( [ ' i d ' = > ' h o g e h o g e ' ] ) ; $ t e s t e r - > s e t D o c u m e n t R o o t ( ' / p a t h / t o / s r c ' ) ; $ t e s t e r - > s e t I n c l u d e P a t h ( ' . : / u s r / b i n / p h p ' ) ; $ r e s p o n s e = $ t e s t e r - > g e t ( ' i n d e x . p h p ' , [ ' u s e r n a m e ' = > ' h o g e h o g e ' $ t h i s - > a s s e r t E q u a l s ( 2 0 0 , $ r e s p o n s e - > g e t S t a t u s C o d e ( ) ) ; $ t h i s - > a s s e r t E q u a l s ( ' O K ' , $ r e s p o n s e - > g e t B o d y ( ) ) ; } }