Professional Documents
Culture Documents
ST Ch5 2 SourceSyntax PF
ST Ch5 2 SourceSyntax PF
ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ
ﺷﻬﺮﻗﺪس
واﺣﺪ ﺷ ﻗﺪ
اﺳﻼﻣﻲ – ا ﺪ
داﻧﺸﮕﺎه آزاد ا ﻼ
داﻧﺸﮕﺎ
آزﻣﺎﻳﺶ ﻣﺒﺘﻨﻲ ﺑﺮ ﻧﺤﻮ ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻫﺎ
• آزﻣﺎﻳﺶ ﻣﺒﺘﻨﻲ ﺑﺮ ﻧﺤﻮ از اﺑﺘﺪا ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﻃﺮاﺣﻲ ﺷﺪ و اﻏﻠﺐ ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺑﻪ ﻛﺎر ﻣﻲ رود.
• ﻣﻌﻴﺎرﻫﺎي آزﻣﺎﻳﺶ ﺟﻬﺶ ﺑﻴﺸﺘﺮ ﺑﺮاي آزﻣﺎﻳﺶ واﺣﺪ ) (unit testingو آزﻣﺎﻳﺶ ﻳﻜﭙﺎرﭼﻪ
ﺳﺎزي ) (integration testingﻛﻼﺳﻬﺎ ﺑﻪ ﻛﺎر ﻣﻲ رود.
2 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﮔﺮاﻣﺮﻫﺎي ﻣﺒﺘﻨﻲ ﺑﺮ ﺑﺮﻧﺎﻣﻪ
• ﻛﺎرﺑﺮد اوﻟﻴﻪ و وﺳﻴﻊ ﺗﺮﻳﻦ ﻛﺎرﺑﺮد از آزﻣﺎﻳﺶ ﻣﺒﺘﻨﻲ ﺑﺮ ﻧﺤﻮ ،ﺗﻐﻴﻴﺮ دادن ﺑﺮﻧﺎﻣﻪ ﻫﺎ اﺳﺖ.
• اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ ،ﻳﻚ رﺷﺘﻪ ﭘﺎﻳﻪ )ﻛﻪ ﻫﻤﺎن ﺑﺮﻧﺎﻣﻪ ﺗﺤﺖ ﺗﺴﺖ اﺳﺖ( را ﺗﻐﻴﻴﺮ ﻣﻲ دﻫﻨﺪ ﺗﺎ
ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﺟﻬﺸﮕﺮ را اﻳﺠﺎد ﻛﻨﻨﺪ.
• ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﺟﻬﺸﮕﺮ ﺑﺎﻳﺪ ﺑﻪ درﺳﺘﻲ ﻛﺎﻣﭙﺎﻳﻞ ﺷﻮﻧﺪ )رﺷﺘﻪ ﻣﻌﺘﺒﺮ ﺑﺎﺷﻨﺪ(.
• ﺟﻬﺸﮕﺮﻫﺎ آزﻣﻮن ﻧﻴﺴﺘﻨﺪ ،وﻟﻲ ﺑﺮاي ﻳﺎﻓﺘﻦ آزﻣﻮﻧﻬﺎ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲ ﮔﻴﺮﻧﺪ.
• وﻗﺘﻲ ﺟﻬﺸﮕﺮﻫﺎ ﺗﻌﺮﻳﻒ ﺷﺪﻧﺪ ،ﺑﺎﻳﺪ آزﻣﻮﻧﻬﺎﻳﻲ را ﺑﻴﺎﺑﻴﻢ ﻛﻪ ﻣﻮﺟﺐ ﺧﺮاﺑﻲ در اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﺷﻮد.
• و اﻳﻦ ﻳﻌﻨﻲ ﻛﺸﺘﻦ ﺟﻬﺸﮕﺮﻫﺎ.
3 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﻛﺸﺘﻦ ﺟﻬﺸﮕﺮﻫﺎ
اﮔﺮ m ∈ Mﺟﻬﺸﮕﺮي ﺑﺮاي ﻳﻚ ﺑﺮﻧﺎﻣﻪ ) Pﺑﻪ ﻋﻨﻮان رﺷﺘﻪ ﭘﺎﻳﻪ( ،و t
ﻳﻚ آزﻣﻮن ﺑﺎﺷﺪ ،ﻣﻲﮔﻮﻳﻴﻢ m ،tرا ﻣﻲ ﻛُﺸﺪ اﮔﺮ و ﻓﻘﻂ اﮔﺮ ﺧﺮوﺟﻲ t
ﺑﺎﺷﺪ. روي Pﺎﺑﺎ ﺧﺮوﺟﻲ آآن روي mﺎ
ﻣﺘﻔﺎوت ﺎﺷ
ﺧﻮاﻫﻨﺪ
ﻮي ﻮ ﻫ
ﺑﺴﻴﺎرر ﻗﻮي
ي ﺑﺑﻪ دﺳﺖ آﻣﺪه ﺑ ﻴ
آزﻣﻮﻧﻬﺎي
ﻲ ﺷﺪه ﺑﺑﺎﺷﻨﺪ ،ز ﻮ ﻬ
ﻃﺮاﺣﻲ
ﻮﺑﻲ ﺮ
ي ﺟﻬﺶ ﺑﺑﻪ ﺧﻮﺑﻲ • اﮔﺮﺮ ﭘﺮ ﻮرﻫ
اﭘﺮاﺗﻮرﻫﺎي
ﺑﻮد.
ﺗﻌﺮﻳﻒ ﻛﻛﺮد.
را ﺗ ﻒﻣﺨﺘﻠﻔﻲ ا
اﭘﺮاﺗﻮرﻫﺎي ﺨﺘﻠﻔ
ﺑﺎﻳﺪ ا اﺗ ﺎ
ﻣﺘﻔﺎوت ،ﺎ ﺪ
اﻫﺪاف ﺘﻔﺎ ت
ﻣﺨﺘﻠﻒ و ا ﺪاف
زﺑﺎﻧﻬﺎي ﺨﺘﻠﻒ • ا
ﺑﺮاي ز ﺎﻧ ﺎ
ﻲ دﻫﺪ.
ﺶ اداﻣﻪ ﻣﻲ
آزﻣﻮﻧﮕﺮﺮ ﺑﺑﻪ آزﻣﺎﻳﺶ
ﺷﻮﻧﺪ ،ﻮ
ﺟﻬﺸﮕﺮﻫﺎ ﻛﺸﺘﻪ ﻮ • ﺗﺎ ووﻗﺘﻲ
ﻲ ﻛﻪ ﻫﻤﻪ ﺟﻬ ﺮ
ﺟﻬﺸﮕﺮ ﻣﺮده ) :(dead mutantﺟﻬﺸﮕﺮي ﻛﻪ ﻳﻚ آزﻣﻮن آن را ﻛﺸﺘﻪ اﺳﺖ. –
ﺟﻬﺸﮕﺮ ﻣﺮده ﺑﻪ دﻧﻴﺎ آﻣﺪه ) :(stillborn mutantﺟﻬﺸﮕﺮي ﻛﻪ از ﻧﻈﺮ ﻧﺤﻮي ﺻﺤﻴﺢ ﻧﻴﺴﺖ. –
ن ررا ﺑﺑﻜﺸﺪ.
ﺗﻮاﻧﺪ آن
ﻲ ﻮﻲ ﻣﻲ
آزﻣﻮﻧﻲ ﻳﻬﻲ ) :(trivial mutantﺗﻘﺮﻳﺒ
ﺮﻳﺒﺎً ﻫﺮﺮ ز ﻮ ﺟﻬﺸﮕﺮﺮ ﺑﺑﺪﻳﻬﻲ
ﺟﻬ –
ﺟﻬﺸﮕﺮ ﻣﻌﺎدل ) :(equivalent mutantﻫﻴﭻ آزﻣﻮﻧﻲ ﻧﻤﻲ ﺗﻮاﻧﺪ آن را ﺑﻜﺸﺪ )ﻣﻌﺎدل ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ اﺳﺖ(. –
4 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﮔﺮاﻣﺮﻫﺎي ﻣﺒﺘﻨﻲ ﺑﺮ ﺑﺮﻧﺎﻣﻪ
ﻣﺘﺪ اوﻟﻴﻪ ﻣﺘﺪ ﺑﺎ ﺟﺎﺳﺎزي ﭼﻨﺪ ﺟﻬﺸﮕﺮ
))int Min ((int A, int B )int Min (int A, int B ﻣﺘﻐﻴﺮ ﺑﺑﻪ
ﺟﺎﻳﮕﺬاري ﻳﻳﻚ ﻴﺮ
ﺟ ﻳ ري
{ { ﺟﺎي دﻳﮕﺮي
;int minVal ;int minVal
;minVal = A
;minVal = A ﺗﻐﻴﻴﺮ ﻋﻤﻠﮕﺮ
)if (B < A ;∆ 1 minVal = B
)if (B < A
{ اﻳﺠﺎد ﺧﺮاﺑﻲ آﻧﻲ در زﻣﺎن اﺟﺮا ﺑﻪ
)∆ 2 if (B > A
;minVal = B ﻣﺤﺾ رﺳﻴﺪن ﺑﻪ اﻳﻦ دﺳﺘﻮر
))∆ 3 if ((B < minVal
}
{
;)return (minVal ;minVal = B
اﻳﺠﺎد ﺧﺮاﺑﻲ آﻧﻲ در زﻣﺎن اﺟﺮا ﺑﻪ
ﺷﺮط آن ﻛﻪ B==0ﺷﻮد .در ﻏﻴﺮ
} // end Min ∆4 ;)( Bomb اﻳﻦ ﺻﻮرت ﻛﺎري ﻧﻤﻲ ﻛﻨﺪ.
∆5 minVal
;i V l = A
A
6ﺟﻬﺸﮕﺮ ﻛﻪ ﻫﺮ ﻳﻚ، ∆6 ;)minVal = failOnZero (B
ﻧﺸﺎن دﻫﻨﺪه ﺑﺮﻧﺎﻣﻪ }
ﻣﺠﺰاﻳﻲ ااﺳﺖ.
ا ;)return (minVal
} // end Min
5 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﻣﻌﻴﺎرﻫﺎي ﭘﻮﺷﺶ ﻣﺒﺘﻨﻲ ﺑﺮ ﻧﺤﻮ
ﭘﻮﺷﺶ ﺟﻬﺶ ):(MC) (Mutation Coverage
ﺑﺮاي ﻫﺮ ﺟﻬﺸﮕﺮ TR ،m ∈ Mدﻗﻴﻘﺎً داراي ﻳﻚ ﻧﻴﺎزﻣﻨﺪي اﺳﺖ :ﻛﺸﺘﻦ .m
– آﻟﻮده ﺳﺎزي ) :(Infectionآزﻣﻮن ﻣﻮﺟﺐ ﻣﻲ ﺷﻮد ﻛﻪ ﻋﺒﺎرت داراي ﻧﻘﺺ ﻣﻨﺠﺮ ﺑﻪ ﻳﻚ ﺣﺎﻟﺖ اﺷﺘﺒﺎه
ﺷﻮد.
• ﻣﺪل RIPﻣﻨﺠﺮ ﺑﻪ دو ﮔﻮﻧﻪ ﭘﻮﺷﺶ ﺟﻬﺶ ﻣﻲ ﺷﻮد :ﻛﺸﺘﻦ ﻗﻮي ﺟﻬﺸﮕﺮﻫﺎ و ﻛﺸﺘﻦ ﺿﻌﻴﻒ ﺟﻬﺸﮕﺮﻫﺎ
6 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﻣﻌﻴﺎرﻫﺎي ﭘﻮﺷﺶ ﻣﺒﺘﻨﻲ ﺑﺮ ﻧﺤﻮ...
• (1ﻛﺸﺘﻦ ﻗﻮي ﺟﻬﺸﮕﺮﻫﺎ
• اﮔﺮ m ∈ Mﺟﻬﺸﮕﺮي ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ،Pو tﻳﻚ آزﻣﻮن ﺑﺎﺷﺪ ،ﻣﻲﮔﻮﻳﻴﻢ m ،tرا ﺑﻪ ﻃﻮر ﻗﻮي
روي mﺘﻔﺎوت
ﻣﺘﻔﺎوت ﺑﺎﺷﺪ. روي Pﺑﺎ ﺧ وﺟ
ﺧﺮوﺟﻲ آن وي ﺧﺮوﺟﻲ tوي
اﮔﺮ ﺧ وﺟ
اﮔﺮ و ﻓﻘﻂ اﮔ
ﻛﺸﺪ اﮔ
ﻣﻲﻛُﺸﺪ
– در واﻗﻊ ،ﻛﺸﺘﻦ ﺿﻌﻴﻒ ،دﺳﺘﺮس ﭘﺬﻳﺮي و آﻟﻮده ﺳﺎزي را ﺑﺮآورده ﻣﻲ ﻛﻨﺪ وﻟﻲ اﻧﺘﺸﺎر را ﺧﻴﺮ.
7 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﺟﻬﺶ ﺿﻌﻴﻒ
ﭘﻮﺷﺶ ﺟﻬﺶ ﺿﻌﻴﻒ ):(WMC) (Weak Mutation Coverage
ﺑﺮاي ﻫﺮ ﺟﻬﺸﮕﺮ TR ،m ∈ Mدﻗﻴﻘﺎً داراي ﻳﻚ ﻧﻴﺎزﻣﻨﺪي اﺳﺖ :ﻛﺸﺘﻦ mﺑﻪ
ﺿﻌﻴﻒ.
ﻃﻮر ﺿﻌ ﻒ
ﻃ
• ﺟﻬﺶ ﺿﻌﻴﻒ ،از آن ﺟﻬﺖ ﺑﻪ اﻳﻦ ﺷﻜﻞ ﻧﺎﻣﮕﺬاري ﺷﺪه ﻛﻪ ﻛﺸﺘﻦ ﺟﻬﺸﮕﺮﻫﺎ در آن آﺳﺎﻧﺘﺮ اﺳﺖ و ﺑﻪ
ﺗﺤﻠﻴﻞ ﻛﻤﺘﺮي ﻫﻢ ﻧﻴﺎز دارد.
• ﺑﺮﺧﻲ ﺟﻬﺸﮕﺮﻫﺎ را ﻣﻲ ﺗﻮان ﺑﻪ ﻃﻮر ﺿﻌﻴﻒ ﻛﺸﺖ ،وﻟﻲ ﻧﻤﻲ ﺗﻮان ﺑﻪ ﻃﻮر ﻗﻮي ﻛﺸﺖ )داراي ﺧﺎﺻﻴﺖ
اﻧﺘﺸﺎر ﻧﻴﺴﺘﻨﺪ(!
8 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﻣﺜﺎل از ﺟﻬﺶ )ﻗﻮي(
;minVal = A • ﺟﻬﺸﮕﺮ 1در ﻣﺜﺎل )( Minﺑﻪ اﻳﻦ ﺷﻜﻞ اﺳﺖ:
;∆ 1 minVal = B
)if (B < A
;minVal = B
• ﻣﺸﺨﺼﺎت ﻛﺎﻣﻞ آزﻣﻮﻧﻲ ﻛﻪ ﺑﺘﻮاﻧﺪ ﺟﻬﺸﮕﺮ 1را ﺑﻜﺸﺪ ﺑﻪ ﺷﺮح زﻳﺮ اﺳﺖ:
ﺑﻨﺎ ﺑﺮ اﻳﻦ آزﻣﻮﻧﻲ ﻣﺎﻧﻨﺪ )) (A = 2, B =1و اﻟﺒﺘﻪ آزﻣﻮن اﺳﻼﻳﺪ ﻗﺒﻞ ﻳﻌﻨﻲ ) ((A = 5, B = 7ﺟﻬﺸﮕﺮ 1را
»ﺑﻪ ﻃﻮر ﺿﻌﻴﻒ« ﺧﻮاﻫﺪ ﻛﺸﺖ.
*/واﺿﺢ اﺳﺖ ﻛﻪ آزﻣﻮﻧﻲ ﻛﻪ ﺑﺘﻮاﻧﺪ ﺟﻬﺸﮕﺮي را ﺑﻪ ﻃﻮر ﻗﻮي ﺑﻜﺸﺪ ،ﻣﻲ ﺗﻮاﻧﺪ آن را ﺑﻪ ﻃﻮر ﺿﻌﻴﻒ ﻫﻢ ﺑﻜﺸﺪ*\.
10 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﻣﺜﺎل از ﺟﻬﺸﮕﺮ ﻣﻌﺎدل
;minVal = A • ﺟﻬﺸﮕﺮ 3در ﻣﺜﺎل )( Minﺑﻪ اﻳﻦ ﺷﻜﻞ اﺳﺖ:
)if (B < A
)∆ 3 if (B < minVal
• وﻟﻲ ﻋﺒﺎرت ﻗﺒﻠﻲ minVal = Aﺑﻮد .اﮔﺮ ﺟﺎﻳﮕﺬاري ﻛﻨﻴﻢ ﺧﻮاﻫﻴﻢ داﺷﺖ:
)(B < A) != (B < A
11 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﺟﻬﺶ ﻗﻮي در ﺑﺮاﺑﺮ ﺟﻬﺶ ﺿﻌﻴﻒ
ﺑﺮﻧﺎﻣﻪ ﺗﺸﺨﻴﺺ زوج ﺑﻮدن ﻳﻚ ﻋﺪد
)1 boolean isEven (int X
{ 2 دﺳﺘﺮس ﭘﺬﻳﺮيX < 0 :
3 )if (X < 0
4 ;X = 0 - X آﻟﻮدﮔﻲX != 0 :
∆4 ;X = 0
5 if (float) (X/2) == ((float) X) / 2.0 آزﻣﻮﻧﻲ ﻣﺜﻞ ) (X = -6ﺟﻬﺸﮕﺮ 4
6 ;)return (true را ﺑﺎ ﺟﻬﺶ ﺿﻌﻴﻒ ﺧﻮاﻫﺪ ﻛﺸﺖ.
7 else
اﻧﺘﺸﺎر :ﺑﺎﻳﺪ اﺛﺮ آﻟﻮدﮔﻲ را ﺑﻪ ﺧﺮوﺟﻲ ﺑﺮﺳﺎﻧﻴﻢ .اﮔﺮ ﺧﺮوﺟﻲ true
8 ;)return (false ﺑﺎﺷﺪ ،ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻳﻦ ﻛﻪ ﺻﻔﺮ زوج اﺳﺖ ،ﺧﺮوﺟﻲ درﺳﺘﻲ اﺳﺖ .ﭘﺲ
9 } ﺧﺮوﺟﻲ ﺑﺎﻳﺪ falseﺑﺎﺷﺪ ﻳﻌﻨﻲ ﺷﺮط ifﻫﻢ ﺑﺎﻳﺪ falseﺑﺎﺷﺪ.
ﺣﺬف ﻣﻮارد
ﺑﻪ آﺳﺘﺎﻧﻪ
ﻧﺎﻣﺆﺛﺮﺮ
آزﻣﻮن ﺆ
ﻮ
ﺪ ؟
رﺳﻴﺪﻳﻢ؟
اﺻﻼح ﺧﻴﺮ
ﻴﺮ )P (T
P ﺖ
درﺳﺖ ﻠﻪ
ﺑﻠﻪ
اﺳﺖ؟
13 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﭼﺮا ﺟﻬﺶ ﻛﺎر ﻣﻲ ﻛﻨﺪ؟
ﻗﻀﻴﻪ ﺑﻨﻴﺎدي آزﻣﺎﻳﺶ ﺟﻬﺶ
وﺟﻮد
ﺟﻬﺸﮕﺮﻫﺎ و ﻮ
ﻣﺠﻤﻮﻋﻪ اي از ﻬ ﺮ
ﻮ ﻲ ﺑﺑﺎﺷﺪ ،ﻣﻌﻤﻮﻮ ًﻻ
اﻓﺰار داراي ﻧﻘﺼﻲ
ﺮم ﺰاﮔﺮﺮ ﻧﺮم
دارﻧﺪ ﻛﻪ ﺗﻨﻬﺎ ﺑﺎ ﻣﻮرد آزﻣﻮﻧﻲ ﻣﻲ ﺗﻮاﻧﻨﺪ ﻛﺸﺘﻪ ﺷﻮﻧﺪ ﻛﻪ آن ﻧﻘﺺ را ﻧﻴﺰ
ﺗﺸﺨﻴﺺ ﻣﻲ دﻫﺪ.
• اﻳﻦ ﻣﻮﺿﻮع ،ﻣﻄﻠﻖ ﻧﻴﺴﺖ!
ﻫﺪاﻳﺖ ﻣﻲ ﻛﻨﺪ.
ﻣﻮﺛﺮ ﻫﺪا ﺖ
ﺑﺴﻴﺎر ﺛ
آزﻣﻮﻧﻬﺎي ﺎ
ﻣﺠﻤﻮﻋﻪ ااي از آز ﻧ ﺎ
ﻪ را ﻪ
ﺑﻪ آزﻣﻮﻧﮕﺮ ا
ﺟﻬﺸﮕﺮﻫﺎ آز ﻧﮕ
ﺸﮕ ﻫﺎ •
ﻲ ﺑﺮاي ﺟﻬﺶ
ﺶ ﺺ و ﻣﺠﻤﻮﻋﻪ اي از آزﻣﻮﻧﻬﺎي ﻛﺎﻓﻲ
ﻦ ﻳﻚ ﻧﻘﺺ
ﺶ ﺑﺮاﻧﮕﻴﺰ ،ﻳﺎﻓﺘﻦ
ﭼﺎﻟﺶ • ﻳﻚ ﻣﺴﺎﻟﻪ ﺑﺴﻴﺎر ﭼ
اﺳﺖ ﻛﻪ آن ﻧﻘﺺ را ﭘﻴﺪا ﻧﻜﻨﻨﺪ.
ﺑﺴﺘﮕﻲ دارد.
اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ ﺑ ﺘﮕ
ﭼﻴﺰ ﺑﻪ اﭘ اﺗﻮرﻫﺎي
ﻫﻤﻪ ﭼ ﺰ • اﻟ ﺘﻪ
اﻟﺒﺘﻪ ﻫ ﻪ
14 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﻃﺮاﺣﻲ اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ
• در ﺳﻄﺢ ﻣﺘﺪ ،اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ ﺑﺮاي زﺑﺎﻧﻬﺎي ﻣﺨﺘﻠﻒ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﺒﻴﻪ ﻫﻤﻨﺪ.
• ﻣﺤﻘﻘﺎن اﭘﺮاﺗﻮرﻫﺎي زﻳﺎدي را ﻃﺮاﺣﻲ ﻛﺮده اﻧﺪ و ﺳﭙﺲ ﺑﻪ ﻃﻮر ﺗﺠﺮﺑﻲ ﻣﻔﻴﺪﺗﺮﻳﻦ آﻧﻬﺎ را
اﻧﺘﺨﺎب ﻛﺮده اﻧﺪ.
اﭘﺮاﺗﻮر ﻣﺆﺛﺮ ﺟﻬﺶ
ﻣﺠﻤﻮﻋﻪ ااي از
ﻪ ﺟﻬﺸﮕﺮ ﻛﻪ ﺎﺑﺎ
ﻳﻚ ﺳﺮي ﺸﮕ ﻛﺸﺘﻦ ﻚ ﺑﺮاي ﻛﺸﺘآزﻣﻮﻧﻬﺎﻳﻲ ﻛﻪ ا
اﮔﺮ آز ﻧ ﺎ
اﮔ
اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ ﻣﺜﻼً }… O = {o1, o2,اﻳﺠﺎد ﺷﺪه اﻧﺪ ،ﺑﺘﻮاﻧﻨﺪ ﺟﻬﺸﮕﺮﻫﺎي
اﻳﺠﺎد ﺷﺪه ﺗﻮﺳﻂ ﻫﻤﻪ اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ دﻳﮕﺮ را ﻫﻢ -ﺑﺎ اﺣﺘﻤﺎل ﺑﺎﻻ -ﺑﻜﺸﻨﺪ،
آﻧﮕﺎه Oﻣﺠﻤﻮﻋﻪ اي ﻣﺆﺛﺮ از اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ ﺧﻮاﻫﺪ ﺑﻮد.
15 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ ﺑﺮاي ﺟﺎوا
: (ABS –– Absolute
Ab l t Value
V l Insertion
I ﻣﻄﻠﻖ ) ti
.1درج ﻗﻗﺪر ﻄﻠ
ﻫﺮ ﻋﺒﺎرت )و زﻳﺮ ﻋﺒﺎرت( ﺣﺴﺎﺑﻲ را ﺑﺎ ﺗﻮاﺑﻊ )( ،negAbs() ،absو )( failOnZeroﺗﻐﻴﻴﺮ دﻫﻴﺪ.
ﻣﺘﺪ )( failOnZeroاﭘﺮاﺗﻮر ﺟﻬﺶ ﻣﺨﺼﻮﺻﻲ اﺳﺖ ﻛﻪ اﮔﺮ ﭘﺎراﻣﺘﺮ آن ﺻﻔﺮ ﺑﺎﺷﺪ ،ﻣﻮﺟﺐ ﺧﺮاﺑﻲ ﻣﻲ ﺷﻮد و در ﻏﻴﺮ اﻳﻦ
ﺻﻮرت ﻛﺎري اﻧﺠﺎم ﻧﻤﻲ دﻫﺪ .اﻳﻦ ﻳﻌﻨﻲ آزﻣﻮﻧﮕﺮ ﺳﻌﻲ ﻛﻨﺪ ﻫﺮ ﻣﺘﻐﻴﺮ ﻳﺎ ﻋﺒﺎرت ﺣﺴﺎﺑﻲ را ﺑﺎ ﺻﻔﺮ ﻣﻘﺪار دﻫﻲ ﻛﻨﺪ.
17 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ ﺑﺮاي ﺟﺎوا...
.5ﺟﺎﻳﮕﺰﻳﻨﻲ ﻋﻤﻠﮕﺮ ﺷﻴﻔﺖ ): (SOR –– Shift Operator Replacement
ﻋﻤﻠﮕﺮﻫﺎي ﺷ ﻔﺖ
ﺷﻴﻔﺖ اﺳﺖ ﺑﺎ ﻫﻫﺮ ﻳﻚ از ﻋ ﻠﮕ ﻫﺎي
ﻇﺎﻫﺮ ﺷﺪه ا ﺖ ﺷﻴﻔﺖ )<< ،>> ،و >>>( ﻫﻫﺮ ﺑﺎر ﻛﻪ در ﺑﺑﺮﻧﺎﻣﻪ
ﻧﺎﻣﻪ ﻇﺎﻫ ﻋﻤﻠﮕﺮ ﺷ ﻔﺖ
ﻫﻫﺮ ﻋ ﻠﮕ
دﻳﮕﺮ و ﺑﻪ ﻋﻼوه ،ﺑﺎ ﻋﻤﻠﮕﺮ)( leftOpﺟﺎﻳﮕﺰﻳﻦ ﻣﻲﺷﻮد.
18 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ ﺑﺮاي ﺟﺎوا...
.7ﺟﺎﻳﮕﺰﻳﻨﻲ ﻋﻤﻠﮕﺮ اﻧﺘﺴﺎب ): (ASR –– Assignment Operator Replacement
ﻫﺮ ﻋﻤﻠﮕﺮ اﻧﺘﺴﺎب )=>>> (=,+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=,ﻫﺮ ﺑﺎر ﻛﻪ در
ﺑﺮﻧﺎﻣﻪ ﻇﺎﻫﺮ ﺷﺪه اﺳﺖ ﺑﺎ ﻫﺮ ﻳﻚ از ﻋﻤﻠﮕﺮﻫﺎي اﻧﺘﺴﺎب دﻳﮕﺮ ﺟﺎﻳﮕﺰﻳﻦ ﻣﻲﺷﻮد.
ﻣﺜﻼً x+=y :ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ x=x+y x oper= yﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ x = x oper y
19 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ ﺑﺮاي ﺟﺎوا...
20 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﺧﻼﺻﻪ اﭘﺮاﺗﻮرﻫﺎي ﺟﻬﺶ
ﻋﻤﻠﻜﺮد ﻛﺪ ﺷﻤﺎره ﻋﻤﻠﻜﺮد ﻛﺪ ﺷﻤﺎره
ﺟﺎﻳﮕﺰﻳﻨﻲ ﻋﻤﻠﮕﺮﻫﺎي اﻧﺘﺴﺎب +=, -=, ASR 7 و ﻋﻤﻠﮕﺮ )(negAbs() ،Abs درج ABS 1
* /=,
*=, / % %=, &=,
& |=, | ^=,
^ <<=,
<< )(Assignment ﺣﺴﺎﺑﻲ
ﻋﺒﺎرت ﺎ )( failOnZeroاي
ﺑﺮاي ﻫﻫﺮ ﻋ ﺎ ت )(Absolute
=>>> >>=,ﺑﺎ ﻫﻢ اﻧﺘﺴﺎب ﻗﺪر ﻣﻄﻠﻖ
درج ﻋﻤﻠﮕﺮﻫﺎي ﻳﻜﺎﻧﻲ ) +ﺣﺴﺎﺑﻲ- ، UOI 8 ﺟﺎﻳﮕﺰﻳﻨﻲ ﻋﻤﻠﮕﺮﻫﺎي ﺣﺴﺎﺑﻲ / ،* ،- ،+و % AOR 2
ﺣﺴﺎﺑﻲ ! ،ﺷﺮﻃﻲ ~ ،ﻣﻨﻄﻘﻲ( ﻗﺒﻞ از ﻫﺮ )(Unary Insert ﺑﺎ ﻫﻢ و ﺑﺎ )( leftOpو )(rightOp )( Arithmetic
ﻋﺒﺎرت ﻣﻨﺎﺳﺐ درج ﻳﻜﺎﻧﻲ ﺣﺴﺎﺑﻲ
ﺣﺬف ﻫﺮ ﻋﻤﻠﮕﺮ ﻳﻜﺎﻧﻲ ) +ﺣﺴﺎﺑﻲ- ، UOD 9 ﺟﺎﻳﮕﺰﻳﻨﻲ ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪ اي ≠ <, ≤, >, ≥, =, ROR 3
ﺣﺴﺎﺑﻲ ! ،ﺷﺮﻃﻲ ~ ،ﻣﻨﻄﻘﻲ( )(Unary Delete ﺑﺎ ﻫﻢ و ﺑﺎ )( trueOpو )(falseOp )(Relational
ﺣﺬف ﻳﻜﺎﻧﻲ راﺑﻄﻪ اي
ﻣﺘﻐﻴﺮﻫﺎي
ﻫﻤﻪ ﺘﻐ ﺎﻣﺘﻐﻴﺮ ﺎﺑﺎ ﻪ
ﺟﺎﻳﮕﺰﻳﻨﻲ ﻫﺮ ﺘﻐ
ﺎﮕ ﻨ SVR 1
10 ﺷﺮﻃﻲ xor ،or ،andو ...
ﻋﻤﻠﮕﺮﻫﺎي ﺷ ﻃ
ﺟﺎﻳﮕﺰﻳﻨﻲ ﻠﮕ ﺎ
ﺎﮕ COR 4
ﻣﻨﺎﺳﺐ دﻳﮕﺮ )(Variable ﺑﺎ ﻫﻢ و ﺑﺎ )( leftOpو )( rightOpو )(trueOp )(Conditional
ﻣﺘﻐﻴﺮ و )(falseOp ﺷﺮﻃﻲ
ﺟﺎﻳﮕﺰﻳﻨﻲ ﻫﺮ ﻋﺒﺎرت ﺑﺎ دﺳﺘﻮر )(Bomb BSR 11 ﺟﺎﻳﮕﺰﻳﻨﻲ ﻋﻤﻠﮕﺮﻫﺎي ﺷﻴﻔﺖ << ،>> ،و >>> SOR 5
)(Bomb ﺑﺎ ﻫﻫﻢ و ﺑﺎ )(leftOp )(Shift
ﺑﻤﺐ ﺷﻴﻔﺖ
ﺟﺎﻳﮕﺰﻳﻨﻲ ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ andﺑﻴﺘﻲ )&(or ، LOR 6
ﺑﻴﺘﻲ )|( ،و xorﺑﻴﺘﻲ )^( )(Logical
ﺑﺎ ﻫﻢ و ﺑﺎ )( leftOpو )(rightOp ﻣﻨﻄﻘﻲ
21 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
راﺑﻄﻪ در ﺑﺮ داﺷﺘﻦ ﺑﺎ ﺳﺎﻳﺮ ﻣﻌﻴﺎرﻫﺎ
• ﺟﻬﺶ ﻗﻮﻳﺘﺮﻳﻦ و ﮔﺮاﻧﺘﺮﻳﻦ ﻣﻌﻴﺎر آزﻣﺎﻳﺶ ﻣﺤﺴﻮب ﻣﻲ ﺷﻮد.
22 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5
ﭘﭘﺎﻳﺎن ﺟﻠﺴﻪ ﻧﻬﻢ
23 ﺻﺪﻳﻘﻪ ﺧﻮﺷﻨﻮﻳﺲ -داﻧﺸﮕﺎه آزاد اﺳﻼﻣﻲ واﺣﺪ ﺷﻬﺮﻗﺪس آزﻣﻮن ﻧﺮم اﻓﺰار )ﻓﺼﻞ (5