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

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

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

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

Avatar for Kazushige Tominaga

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 ( ) ) ; } }