සත්‍ය කේතයට වඩා වැඩි කාලයක් ගත නොවන්නේ නම් කාලය ලිවීමේ පරීක්ෂණ සාමාන්‍ය දෙයක්ද?


216

ඔවුන් පරීක්‍ෂා කරන සත්‍ය කේතයට වඩා පරීක්ෂණ බොහෝ උපක්‍රමශීලී හා ලිවීමට අපහසු බව මට පෙනේ. පරීක්ෂණය ලිවීමට වඩා වැඩි කාලයක් ගත කිරීම මට අසාමාන්‍ය දෙයක් නොවේ.

එය සාමාන්‍ය දෙයක්ද නැත්නම් මම වැරදි දෙයක් කරනවාද?

ඒකක පරීක්ෂණ හෝ පරීක්ෂණ මගින් මෙහෙයවන සංවර්ධනය වටී ද? ”,“ පද්ධතිය ක්‍රියාත්මක කිරීමට වඩා ක්‍රියාකාරී පරීක්ෂණ ක්‍රියාත්මක කිරීමට අපි වැඩි කාලයක් ගත කරනවා, මෙය සාමාන්‍ය දෙයක්ද? ”සහ ඔවුන්ගේ පිළිතුරු පරීක්ෂා කිරීම වටී ද යන්න පිළිබඳ වැඩි යමක් වේ (“ අපි ලිවීමේ පරීක්ෂණ මුළුමනින්ම මඟ හැරිය යුතුද? ”). පරීක්ෂණ වැදගත් යැයි මට ඒත්තු ගියද, මම කල්පනා කරන්නේ සත්‍ය කේතයට වඩා වැඩි කාලයක් මගේ පරීක්ෂණ සඳහා වැය කිරීම සාමාන්‍ය දෙයක්ද නැතිනම් එය මා පමණක්ද යන්නයි.

මගේ ප්‍රශ්නයට ලැබුණු අදහස්, පිළිතුරු සහ උඩු යටිකුරු ගණන අනුව විනිශ්චය කිරීමෙන්, මට එය උපකල්පනය කළ හැක්කේ වෙබ් අඩවියේ වෙනත් කිසිදු ප්‍රශ්නයකට විසඳුම් නොලැබෙන නීත්‍යානුකූල සැලකිල්ලක් පමණි.


20
සාරාංශය, නමුත් මම ටීඩීඩී කරන විට කේත ලිවීමේ තරම් දළ වශයෙන් පරීක්ෂණ ලිවීමට කාලය ගත කරන බව මට පෙනේ. කේතයට වඩා මම පරීක්ෂණ සඳහා වැඩි කාලයක් ගත කිරීමෙන් පසුව මම ලිස්සා ගොස් පරීක්ෂණ ලියන විට ය.
රබර් ඩක්

10
ඔබේ කේතය ලිවීමට වඩා කියවීමට වැඩි කාලයක් ගත කරයි.
Thorbj Rrn Ravn Andersen

27
එසේම, පරීක්ෂණ වේ සැබෑ කේතය. ඔබ එම කොටස ගනුදෙනුකරුවන්ට නැව්ගත නොකරන්න.
Thorbj Rrn Ravn Andersen

5
ඔබේ කේතය ලිවීමට වඩා වැඩි කාලයක් ඔබ ධාවනය කරනු ඇත. (එසේ නොමැතිනම්, ඔබ එම කාර්යය අතින් කළ යුතුය.)
ජෝෂුවා ටේලර්

5
Ub රබර් ඩක්: මෙහි ප්‍රතිවිරුද්ධ අත්දැකීම්. සමහර විට මම පරීක්ෂණ ලියන විට කේතය සහ සැලසුම දැනටමත් පිළිවෙලට ඇති බැවින් කේතය සහ පරීක්ෂණ නැවත ලිවීමට අවශ්‍ය නොවේ. එබැවින් පරීක්ෂණ ලිවීමට අඩු කාලයක් ගතවේ. එය නීතියක් නොවේ, නමුත් එය බොහෝ විට මට සිදු වේ.
ජෝර්ජියෝ

Answers:


206

මෘදුකාංග ඉංජිනේරු පා course මාලාවක සිට මට මතකයි, එක් අයෙක් සංවර්ධන කේතයෙන් 10% ක් නව කේත ලිවීමට වැය කරන අතර අනෙක 90% නිදොස් කිරීම, පරීක්ෂා කිරීම සහ ලේඛනගත කිරීම ය.

ඒකක පරීක්ෂණ මඟින් නිදොස් කිරීම සහ ස්වයංක්‍රීයව කළ හැකි කේතයක් තුළට උත්සාහ කිරීම ග්‍රහණය කර ඇති හෙයින්, වැඩි උත්සාහයක් ඔවුන් තුළට යන බව හැඟේ; ලබාගත් සත්‍ය කාලය පරීක්ෂණ ලිවීමකින් තොරව නිදොස් කිරීම සහ පරීක්ෂා කිරීම වඩා වැඩි නොවිය යුතුය.

අවසාන වශයෙන් පරීක්ෂණ ද ලේඛන මෙන් දෙගුණයක් විය යුතුය! කේතය භාවිතා කිරීමට අදහස් කරන ආකාරයට යමෙක් ඒකක පරීක්ෂණ ලිවිය යුතුය; එනම් පරීක්ෂණ (සහ භාවිතය) සරල විය යුතුය, ක්‍රියාත්මක කිරීමේදී සංකීර්ණ දේවල් දමන්න.

ඔබේ පරීක්ෂණ ලිවීමට අපහසු නම්, ඔවුන් පරීක්ෂා කරන කේතය භාවිතා කිරීම දුෂ්කර විය හැකිය!


4
කේතය පරීක්ෂා කිරීම එතරම් අපහසු ඇයිදැයි සොයා බැලීමට මෙය හොඳ කාලයක් විය හැකිය :) දැවැන්ත ලෙස කැදැලි සහිත ද්විමය / තෘතීය ක්‍රියාකරුවන් මෙන් දැඩි ලෙස අවශ්‍ය නොවන සංකීර්ණ බහු ක්‍රියාකාරී රේඛා "ඉවත් කිරීමට" උත්සාහ කරන්න ... මම අනවශ්‍ය ද්විමයට වෛර කරමි / ද්විමය / ත්‍රික ක්‍රියාකරු ද එක් මාර්ගයක් ලෙස ඇති ...
නෙල්සන්

55
අවසාන කොටස සමඟ එකඟ නොවන්නැයි මම අයැද සිටිමි. ඔබ ඉලක්ක කරන්නේ ඉතා ඉහළ ඒකක පරීක්ෂණ ආවරණයක් නම්, ඔබේ කේතය අපේක්ෂිත භාවිතයට එරෙහිව දුර්ලභ හා සමහර විට සම්පූර්ණයෙන්ම භාවිතා වන අවස්ථා ආවරණය කිරීමට ඔබට අවශ්‍යය. එම මූලික අවස්ථා සඳහා පරීක්ෂණ ලිවීම සමස්ත කාර්යයේ වැඩි කාලයක් ගතවන කොටස විය හැකිය.
ඔටෝ

මම මෙය වෙනත් තැනක පවසා ඇත, නමුත් ඒකක පරීක්ෂාව බොහෝ දුරට ධාවනය වීමට නැඹුරු වේ, මන්ද බොහෝ කේතයන් "පැරේටෝ මූලධර්මය" රටාවක් අනුගමනය කිරීමට නැඹුරු වන බැවිනි: ඔබේ තර්කනයෙන් 80% ක් ආවරණය කළ හැකි කේතයෙන් 20% ක් පමණ ආවරණය කළ හැකිය. ඔබේ තර්කනයෙන් 100% ක් ආවරණය කරන්න (එනම් සියලු අද්දර සිද්ධීන් ආවරණය කිරීම ඒකක පරීක්ෂණ කේතයට වඩා පස් ගුණයක් පමණ ගත වේ). ඇත්ත වශයෙන්ම, රාමුව මත පදනම්ව, ඔබට බහුවිධ පරීක්ෂණ සඳහා පරිසරය ආරම්භ කළ හැකිය, අවශ්‍ය සමස්ත කේතය අඩු කළ හැකි නමුත් අතිරේක සැලසුම් කිරීමක් අවශ්‍ය වේ. 100% විශ්වාසය ළඟා කර ගැනීම සඳහා ප්‍රධාන මාර්ග පරීක්ෂා කිරීමට වඩා වැඩි කාලයක් අවශ්‍ය වේ.
phyrfox

2
@phyrfox මම හිතන්නේ එය ඉතා පරිස්සම් සහගතයි, එය "අනෙක් 99% කේතය එජ් කේස්" වැනි ය. ඒ කියන්නේ අනෙක් 99% පරීක්ෂණ එම දාර සඳහා වේ.
Móż

@ නෙල්සන්, කැදැලි ත්‍රිමාණ ක්‍රියාකරුවන්ට කියවීමට අපහසු බව මම එකඟ වෙමි, නමුත් ඔවුන් පරීක්ෂා කිරීම විශේෂයෙන් දුෂ්කර යැයි මම නොසිතමි (හොඳ ආවරණ මෙවලමක් ඔබට හැකි සංයෝජන වලින් එකක් මග හැරී ඇත්දැයි ඔබට කියනු ඇත). IMO, මෘදුකාංගය තදින් බැඳී ඇති විට එය පරීක්ෂා කිරීම අසීරු ය, නැතහොත් පරාමිති ලෙස සම්මත නොවූ දෘඩ දත්ත හෝ දත්ත මත රඳා පවතී (උදා: කොන්දේසියක් වත්මන් කාලය මත රඳා පවතින විට මෙය පරාමිතියක් ලෙස සම්මත නොවේ). කේතය "කියවිය හැකි" ආකාරය සමඟ මෙය කෙලින්ම සම්බන්ධ නොවේ, ඇත්ත වශයෙන්ම, අනෙක් සියල්ලම සමාන වුවත්, කියවිය හැකි කේතය වඩා හොඳය!
ඇන්ඩ්‍රස් එෆ්.

97

එය.

ඔබ හුදෙක් ඒකක පරීක්ෂණයක් කළත්, සත්‍ය වශයෙන්ම පරීක්‍ෂා කළ කේතයට වඩා වැඩි කේතයක් පරීක්ෂණ තුළ තිබීම අසාමාන්‍ය දෙයක් නොවේ. එහි කිසිදු වරදක් නැත.

සරල කේතයක් සලකා බලන්න:

public void SayHello(string personName)
{
    if (personName == null) throw new NullArgumentException("personName");

    Console.WriteLine("Hello, {0}!", personName);
}

පරීක්ෂණ මොනවාද? මෙහි පරීක්ෂා කිරීම සඳහා අවම වශයෙන් සරල අවස්ථා හතරක් ඇත:

  1. පුද්ගලයාගේ නම null. ව්යතිරේකය ඇත්ත වශයෙන්ම විසි කර තිබේද? එය ලිවීමට අවම වශයෙන් පරීක්ෂණ කේත පේළි තුනක් වත් ඇත.

  2. පුද්ගලයාගේ නම "Jeff". අපට "Hello, Jeff!"ප්‍රතිචාරයක් ලැබෙනවාද? එය පරීක්ෂණ කේත පේළි හතරකි.

  3. පුද්ගලයාගේ නම හිස් නූලකි. අප බලාපොරොත්තු වන ප්‍රතිදානය කුමක්ද? සත්‍ය ප්‍රතිදානය කුමක්ද? පැති ප්‍රශ්නය: එය ක්‍රියාකාරී අවශ්‍යතාවන්ට ගැලපේද? ඒ කියන්නේ ඒකක පරීක්ෂණය සඳහා තවත් කේත පේළි හතරක්.

  4. පුද්ගලයාගේ නම නූලක් සඳහා ප්‍රමාණවත් තරම් කෙටි නමුත් ඒකාබද්ධ කිරීමට තරම් දිගු "Hello, "හා විශ්මය ජනක ලක්ෂ්‍යය. මොකද වෙන්නේ?

මේ සඳහා බොහෝ පරීක්ෂණ කේත අවශ්‍ය වේ. එපමණක් නොව, වඩාත් මූලික කේත කැබලි වලට බොහෝ විට සැකසුම් කේතයක් අවශ්‍ය වන අතර එය පරීක්ෂණයට ලක්වන කේතයට අවශ්‍ය වස්තූන් ආරම්භ කරයි.

අනුපාතය ඉතා විශාල නම්, ඔබට කරුණු කිහිපයක් පරීක්ෂා කළ හැකිය:

  • පරීක්ෂණ හරහා කේත අනුපිටපත් තිබේද? එය පරීක්ෂණ කේතය යන කාරණයෙන් සමාන පරීක්ෂණ අතර කේතය අනුපිටපත් කළ යුතු යැයි අදහස් නොකෙරේ (පිටපත්-ඇලවිය යුතුය): එවැනි අනුපිටපත් මඟින් එම පරීක්ෂණ නඩත්තු කිරීම දුෂ්කර වනු ඇත.

  • අතිරික්ත පරීක්ෂණ තිබේද? රීතියක් ලෙස, ඔබ ඒකක පරීක්ෂණයක් ඉවත් කරන්නේ නම්, ශාඛා ආවරණය අඩු විය යුතුය. එය එසේ නොවේ නම්, මාර්ග දැනටමත් වෙනත් පරීක්ෂණ මගින් ආවරණය කර ඇති බැවින් පරීක්ෂණය අවශ්‍ය නොවන බව එයින් ඇඟවෙනු ඇත.

  • ඔබ පරීක්ෂා කළ යුත්තේ ඔබ පරීක්ෂා කළ යුතු කේතය පමණක්ද? තෙවන පාර්ශවීය පුස්තකාලවල යටින් පවතින රාමුව පරීක්ෂා කිරීමට ඔබ අපේක්ෂා නොකරන නමුත් ව්‍යාපෘතියේ කේතය පමණක්ම වේ.

දුම් පරීක්ෂණ, පද්ධති සහ ඒකාබද්ධතා පරීක්ෂණ, ක්‍රියාකාරී සහ පිළිගැනීමේ පරීක්ෂණ සහ ආතතිය සහ බර පැටවීමේ පරීක්ෂණ සමඟ ඔබ ඊටත් වඩා පරීක්ෂණ කේත එකතු කරයි, එබැවින් සත්‍ය කේතයේ සෑම LOC සඳහාම LOC පරීක්ෂණ හතරක් හෝ පහක් තිබීම ඔබ කනස්සල්ලට පත්විය යුතු දෙයක් නොවේ.

TDD පිළිබඳ සටහනක්

ඔබේ කේතය පරීක්ෂා කිරීමට ගතවන කාලය ගැන ඔබ සැලකිලිමත් වන්නේ නම්, සමහර විට ඔබ එය වැරදියට කරනවා විය හැකිය, එය පළමුව කේතය, පසුව පරීක්ෂණ. මෙම අවස්ථාවෙහිදී, තත්පර 15-45 අතර පුනරාවර්තනයන්හි වැඩ කිරීමට ඔබව දිරිමත් කිරීමෙන්, කේත සහ පරීක්ෂණ අතර මාරුවීමෙන් TDD උදව් විය හැකිය. TDD හි යෝජකයින්ට අනුව, එය ඔබ විසින් කළ යුතු පරීක්ෂණ ගණන අඩු කිරීමෙන් සහ වඩාත් වැදගත් ලෙස, ලිවීමට ඇති ව්‍යාපාර කේතයේ ප්‍රමාණය සහ විශේෂයෙන් පරීක්ෂා කිරීම සඳහා නැවත ලිවීම මගින් සංවර්ධන ක්‍රියාවලිය වේගවත් කරයි .


¹ කරමු n විය වැලක් උපරිම දිග . අපට ඇමතුමක් SayHelloලබා දී සම්මත කර ගත හැකිය n - 1 දිග නූලක් . දැන්, Console.WriteLineපියවරේදී, හැඩතල ගැන්වීම n + 8 දිගකින් අවසන් විය යුතු අතර , එමඟින් ව්‍යතිරේකයක් ලැබෙනු ඇත. මතක සීමාවන් නිසා, n / 2 අක්ෂර අඩංගු නූලක් පවා ව්‍යතිරේකයකට තුඩු දෙනු ඇත. යමෙකු ඇසිය යුතු ප්‍රශ්නය නම්, මෙම සිව්වන පරීක්ෂණය ඒකක පරීක්ෂණයක් ද යන්නයි (එය එකක් මෙන් පෙනේ, නමුත් සාමාන්‍ය ඒකක පරීක්ෂණ හා සසඳන විට සම්පත් සම්බන්ධයෙන් වඩා ඉහළ බලපෑමක් ඇති කළ හැකිය) සහ එය සත්‍ය කේතය හෝ යටින් පවතින රාමුව පරීක්ෂා කරන්නේ නම්.


5
පුද්ගලයෙකුට නමක් ද තිබිය හැකි බව අමතක නොකරන්න. stackoverflow.com/questions/4456438/…
psatek

1
@JacobRaihle මම @MainMa වටිනාකම අදහස් උපකල්පනය personNameදී පණ අදිමින් වුවත් string, නමුත් වටිනාකම personNameඑකතු concatenated වටිනාකම් පිටාර ගලා string.
woz

A ජාකොබ් රයිහෙල්: මෙම කරුණ පැහැදිලි කිරීම සඳහා මම මගේ පිළිතුර සංස්කරණය කළෙමි. පාද සටහන බලන්න.
අර්සෙනී මෝර්සෙන්කෝ

4
As a rule of thumb, if you remove a unit test, the branch coverage should decrease.ඔබ ඉහත සඳහන් කළ පරීක්ෂණ හතරම ලියා, 3 වන පරීක්ෂණය ඉවත් කළහොත්, ආවරණය අඩු වේද?
විවේක්

3
"දිගු ප්රමාණවත්" → "දිග වැඩිය" (4 වන කරුණ)
Paŭlo Ebermann

62

පරීක්ෂණ ක්‍රමෝපායන් දෙකක් අතර වෙනස හඳුනා ගැනීම වැදගත් යැයි මම සිතමි: ඒකක පරීක්ෂාව සහ ඒකාබද්ධ කිරීම / පිළිගැනීමේ පරීක්ෂණය.

සමහර අවස්ථාවලදී ඒකක පරීක්ෂාව අවශ්‍ය වුවද, එය නිතරම බලාපොරොත්තු රහිතව අධික ලෙස සිදු වේ. "100% ආවරණය" වැනි සංවර්ධකයින් මත බල කරන අර්ථ විරහිත ප්‍රමිතික මගින් මෙය උග්‍ර කරයි. http://www.rbcs-us.com/documents/Why-Most-Unit-Testing-is-Waste.pdf මේ සඳහා ප්‍රබල තර්කයක් සපයයි. ආක්‍රමණශීලී ඒකක පරීක්ෂණ සමඟ පහත සඳහන් කරුණු සලකා බලන්න:

  • ව්‍යාපාර වටිනාකමක් ලේඛනගත නොකරන, නමුත් එම 100% ආවරණයට සමීප වීමට සරලවම පවතින අර්ථ විරහිත පරීක්ෂණ රාශියක්. මා වැඩ කරන තැන, අප විසින් කර්මාන්තශාලා සඳහා ඒකක පරීක්ෂණ ලිවිය යුතු අතර එය වෙන කිසිවක් නොකරන අතර පන්තිවල නව අවස්ථා නිර්මාණය කරයි. එය කිසිදු වටිනාකමක් එක් නොකරයි. හෝ සූර්යග්‍රහණය මඟින් ජනනය කරන ලද දීර්. .සමාජ () ක්‍රම - මේවා පරීක්ෂා කිරීමට අවශ්‍ය නොවේ.
  • පරීක්ෂා කිරීම පහසු කිරීම සඳහා, සංවර්ධකයින් විසින් සංකීර්ණ ඇල්ගොරිතම කුඩා පරීක්ෂණ ඒකකවලට බෙදා ඇත. ජයග්‍රහණයක් වගේ නේද? පොදු කේත මාර්ගයක් අනුගමනය කිරීම සඳහා ඔබට පන්ති 12 ක් විවෘත කිරීමට අවශ්‍ය නම් නොවේ. මෙම අවස්ථා වලදී, ඒකක පරීක්ෂණ මගින් කේත කියවීමේ හැකියාව අඩු කළ හැකිය. මෙහි ඇති තවත් ගැටළුවක් නම්, ඔබ ඔබේ කේතය ඉතා කුඩා කැබලිවලට කපා දැමුවහොත්, ඔබ අවසන් වන්නේ පංති විශාලත්වයකින් (හෝ කේත කෑලි) වෙනත් කේත කැබැල්ලක උප කුලකයක් වීම හැර වෙනත් කිසිදු සාධාරණත්වයක් නොමැති බව පෙනේ.
  • ඔබ ද එය ද, වැඩ කරන මත රඳා පවතින බව ඒකකය පරීක්ෂණ බහුලත්වය පවත්වා ගැනීමට අවශ්ය වන නිසා, ඉතා coveraged කේත Refactoring අපහසු විය හැකි ඉතින් . මෙය චර්යාත්මක ඒකක පරීක්ෂණ මගින් උග්‍ර කරනු ලැබේ, එහිදී ඔබේ පරීක්ෂණයේ කොටසක් පන්තියේ සහකරුවන්ගේ අන්තර්ක්‍රියාකාරිත්වය ද සනාථ කරයි (සාමාන්‍යයෙන් සමච්චල් කරනු ලැබේ).

අනෙක් අතට, ඒකාබද්ධ කිරීම / පිළිගැනීම පරීක්ෂා කිරීම මෘදුකාංගයේ ගුණාත්මක භාවයේ ඉතා වැදගත් අංගයක් වන අතර මගේ අත්දැකීම් අනුව ඔබ ඒවා නිවැරදි කර ගැනීම සඳහා සැලකිය යුතු කාලයක් ගත කළ යුතුය.

සාප්පු විශාල ප්‍රමාණයක් ටීඩීඩී කූල් ආධාර පානය කර ඇති නමුත් ඉහත සබැඳියෙන් පෙන්නුම් කරන පරිදි අධ්‍යයන ගණනාවක් පෙන්නුම් කරන්නේ එහි ප්‍රතිලාභ අවිනිශ්චිත බවය.


10
ප්‍රතිනිර්මාණය කිරීමේ ලක්ෂ්‍යය සඳහා +1. මම දශකයකට වැඩි කාලයක් තිස්සේ පැච් කර ඇලවූ පැරණි නිෂ්පාදනයක් සඳහා වැඩ කළෙමි. කිසියම් ක්‍රමයක් සඳහා පරායත්තතාවයන් තීරණය කිරීමට උත්සාහ කිරීමෙන් දිනකට වඩා හොඳ කාලයක් ගත විය හැකි අතර, පසුව ඔවුන් සමච්චල් කරන්නේ කෙසේදැයි සොයා ගැනීමට උත්සාහ කිරීම ඊටත් වඩා කාලයක් ගතවනු ඇත. පේළි පහක වෙනසක් සඳහා පරීක්ෂණ කේත පේළි 200 කට වඩා අවශ්‍ය වීම අසාමාන්‍ය දෙයක් නොවූ අතර සතියකට වඩා හොඳ කොටසක් සෑදීම සඳහා.
ටීඑම්එන්

3
මෙය. MainMa හි පිළිතුරු පරීක්ෂණය 4 හි සිදු නොකළ යුතුය (ශාස්ත්‍රීය සන්දර්භයකට පිටින්), මන්ද එය ප්‍රායෝගිකව සිදුවන්නේ කෙසේද යන්න ගැන සිතා බලන්න ... පුද්ගලයෙකුගේ නම නූලක් සඳහා උපරිම ප්‍රමාණයට ආසන්න නම් යමක් වැරදී ඇත. පරීක්ෂා නොකරන්න, බොහෝ අවස්ථාවලදී එය හඳුනා ගැනීමට කේත මාර්ගයක් නොමැත. සුදුසු ප්‍රතිචාරය නම්, රාමුව යටින් පවතින මතක ව්‍යතිරේකයෙන් ඉවතට විසි කිරීමට ඉඩ දීමයි, මන්ද එය සැබෑ ගැටළුවයි.
Móż

3
.equals()"සූර්යග්‍රහණය මගින් ජනනය කරන ලද දීර් methods ක්‍රම අත්හදා බැලීමට අවශ්‍ය නොවන" තෙක් මම ඔබව දිරිමත් කරමි . මම ටෙස්ට් පටි ලියූ equals()හා compareTo() github.com/GlenKPeterson/TestUtils මම කවදා හෝ පරීක්ෂා කර ක්රියාත්මක කිරීම සෑම පාහේ තිබුණේ නැත. නිවැරදිව හා කාර්යක්ෂමව එකට වැඩ නොකරන්නේ නම් equals()සහ එකතු කරන්නේ hashCode()කෙසේද? ඔබගේ ඉතිරි පිළිතුර ගැන මම නැවත ප්‍රීති and ෝෂා කර එය ඉහළ ඡන්දය ප්‍රකාශ කර ඇත්තෙමි. මම ඒ ලබා සමහර ස්වයංක්රීය-ජනනය සමානයන් () ක්රම විය පරීක්ෂා, නමුත් මම එය මට ස්නායු කරවන දුප්පත් නිර්මාණයන් සමග බොහෝ දෝෂ තිබුනා අවශ්ය නැහැ.
ග්ලෙන් පීටර්සන්

1
@ ග්ලෙන් පීටර්සන් එකඟයි. මගේ සගයකු මේ සඳහා EqualsVerifier ලිවීය. Github.com/jqno/equalsverifier
Tohnmeister

Still නැත, ඔබ තවමත් පිළිගත නොහැකි ආදානය පරීක්ෂා කළ යුතුව ඇත, මිනිසුන් ආරක්ෂක සූරාකෑම සොයා ගන්නේ එලෙසිනි.
gbjbaanb

12

සාමාන්‍යකරණය කළ නොහැක.

භෞතිකව පදනම් වූ විදැහුම්කරණයෙන් මට සූත්‍රයක් හෝ ඇල්ගොරිතමයක් ක්‍රියාත්මක කිරීමට අවශ්‍ය නම්, මා විසින් පැය 10 ක් පාරනායිඩ් ඒකක පරීක්ෂණ සඳහා වැය කිරීම ඉතා හොඳ විය හැකිය, මා දන්නා පරිදි සුළු දෝෂයක් හෝ නිරවද්‍යතාවයක් හඳුනා ගැනීමට නොහැකි දෝෂ වලට හේතු විය හැකි බව මාස ගණනාවකට පසුව .

මට තර්කානුකූලව කේත පේළි කිහිපයක් එකට එකතු කර නමක් ලබා දීමට අවශ්‍ය නම්, එය ගොනු විෂය පථයට පමණක් භාවිතා කරයි, මම එය කිසිසේත් පරීක්‍ෂා නොකරමි (සෑම කාර්යයක් සඳහාම පරීක්ෂණ ලිවීමට ඔබ බල කරන්නේ නම්, ව්‍යතිරේකයකින් තොරව, ක්‍රමලේඛකයින් පසුබසිනු ඇත හැකි තරම් කාර්යයන් ලිවීමට).


මෙය සැබවින්ම වටිනා දෘෂ්ටි කෝණයකි. සම්පුර්ණයෙන්ම පිළිතුරු සැපයීම සඳහා ප්‍රශ්නයට තවත් සන්දර්භයක් අවශ්‍ය වේ.
සීඑල්එෆ්

4

එය වඩාත්ම වැදගත් කොටස ලෙස මම දකිමි.

ඒකක පරීක්ෂාව සැමවිටම "එය නිවැරදිව ක්‍රියාත්මක වේදැයි බැලීම" ගැන නොවේ, එය ඉගෙනීම ගැන ය. ඔබ ප්‍රමාණවත් දෙයක් පරික්ෂා කළ පසු එය ඔබේ මොළයට “දෘ c කේත” බවට පත්වන අතර අවසානයේදී ඔබ ඔබේ ඒකක පරීක්ෂණ කාලය අඩු කරන අතර ඔබ සිදු කරන තුරු කිසිවක් පරීක්ෂා නොකර සම්පූර්ණ පන්ති සහ ක්‍රම ලිවීමට ඔබට හැකිය.

"පා course මාලාවක්" තුළ ඔවුන් 90% ක පරීක්ෂණයක් කළ බව මෙම පිටුවේ ඇති අනෙක් පිළිතුරු වලින් එකක් සඳහන් වන්නේ මේ නිසා, සෑම කෙනෙකුම ඔවුන්ගේ පරමාර්ථයේ අවවාද ඉගෙන ගත යුතු බැවිනි.

ඒකක පරීක්ෂාව යනු ඔබේ කාලය වචනාර්ථයෙන් ඔබේ කුසලතා වැඩි දියුණු කරන බැවින් එය ඉතා වටිනා ලෙස භාවිතා කිරීම පමණක් නොව, ඔබේම කේතය හරහා ගොස් නැවත තාර්කික වැරැද්දක් සොයා ගැනීම හොඳ ක්‍රමයකි.


3

ඔව්, ඔබ TDDing ගැන කතා කරන්නේ නම් එය සාමාන්‍ය දෙයකි. ඔබ ස්වයංක්‍රීය පරීක්ෂණ සිදු කළ විට, ඔබේ කේතයේ අපේක්ෂිත හැසිරීම ඔබ සුරක්ෂිත කරයි. ඔබ පළමුව ඔබේ පරීක්ෂණ ලියන විට, පවතින කේතයට දැනටමත් ඔබ කැමති හැසිරීමක් තිබේද යන්න තීරණය කරයි.

මෙයින් අදහස් කරන්නේ:

  • ඔබ අසමත් වන පරීක්ෂණයක් ලියන්නේ නම්, වැඩ කරන සරලම දේ සමඟ කේතය නිවැරදි කිරීම පරීක්ෂණය ලිවීමට වඩා කෙටි වේ.
  • ඔබ සමත් වන පරීක්ෂණයක් ලියන්නේ නම්, ඔබට ලිවීමට අමතර කේතයක් නොමැත, කේතයට වඩා පරීක්ෂණය ලිවීමට effectively ලදායී ලෙස වැඩි කාලයක් ගත කරයි.

.

ඔව්, ඔබ සත්‍යයෙන් පසුව පරීක්ෂණ ලිවීම ගැන කතා කරන්නේ නම්, ඔබ වැඩි කාලයක් ගත කරනු ඇත:

  • අපේක්ෂිත හැසිරීම තීරණය කිරීම.
  • අපේක්ෂිත හැසිරීම පරීක්ෂා කිරීමේ ක්‍රම තීරණය කිරීම.
  • පරීක්ෂණ ලිවීමට හැකිවන පරිදි කේත පරායත්තතා සපුරාලීම.
  • අසමත් වන පරීක්ෂණ සඳහා කේතය නිවැරදි කිරීම.

ඔබ ඇත්ත වශයෙන්ම කේත ලිවීමට වැය කරනවාට වඩා.

ඉතින් ඔව්, එය අපේක්ෂිත මිනුමකි.


2

එය බොහෝ මිනිසුන් සඳහා විය හැකි නමුත් එය රඳා පවතී.

ඔබ පළමුව පරීක්ෂණ ලියන්නේ නම් (ටීඩීඩී), කේතය ලිවීමට ඇත්ත වශයෙන්ම පරීක්ෂණය ලිවීමට වැය කළ කාලය තුළ ඔබට යම් අතිච්ඡාදනය අත්විඳිය හැකිය. සලකා බලන්න:

  • ප්‍රති results ල සහ යෙදවුම් තීරණය කිරීම (පරාමිතීන්)
  • සම්මුති නම් කිරීම
  • ව්‍යුහය - දේවල් දැමිය යුතු ස්ථානය.
  • සරල පැරණි චින්තනය

කේතය ලිවීමෙන් පසු පරීක්ෂණ ලිවීමේදී, ඔබේ කේතය පහසුවෙන් පරීක්ෂා කළ නොහැකි බව ඔබට වැටහෙනු ඇත, එබැවින් පරීක්ෂණ ලිවීම දුෂ්කර / වැඩි කාලයක් ගතවේ.

බොහෝ ක්‍රමලේඛකයින් පරීක්ෂණ වලට වඩා බොහෝ කාලයක් කේත ලිවීය, එබැවින් ඔවුන්ගෙන් බොහෝ දෙනෙක් චතුර ලෙස කතා නොකරනු ඇතැයි මම අපේක්ෂා කරමි. ඔබේ පරීක්ෂණ රාමුව අවබෝධ කර ගැනීමට සහ භාවිතා කිරීමට ගතවන කාලය එකතු කිරීමට ඔබට ලැබේ.

කේත කිරීමට කොපමණ කාලයක් ගතවේද සහ ඒකක පරීක්ෂාවට සම්බන්ධ වන්නේ කෙසේද යන්න පිළිබඳව අපගේ මානසිකත්වය වෙනස් කළ යුතු යැයි මම සිතමි. කෙටිකාලීනව එය දෙස නොබලන්න, කිසියම් අංගයක් ලබා දීමට ගතවන මුළු කාලය කිසි විටෙකත් සංසන්දනය නොකරන්න, මන්ද ඔබ සලකා බැලිය යුත්තේ ඔබ වඩා හොඳ / අඩු දෝෂ සහිත කේතයක් ලිවීම පමණක් නොව, වෙනස් කිරීමට පහසු වන කේතයක් වන අතර තවමත් එය සාදන්න වඩා හොඳ / අඩු දෝෂ සහිතයි.

යම් අවස්ථාවක දී, අප සියල්ලන්ටම එතරම් හොඳ කේත ලිවීමේ හැකියාව ඇත, එබැවින් සමහර මෙවලම් සහ ශිල්පීය ක්‍රම මගින් අපගේ කුසලතා වැඩි දියුණු කිරීම සඳහා පමණක් ඉදිරිපත් කළ හැකිය. මට ලේසර් මඟ පෙන්වන කියත් පමණක් තිබුනේ නම් මට නිවසක් තැනිය හැකි නොවේ.


2

සත්‍ය කේතයට වඩා වැඩි කාලයක් ගත නොවන්නේ නම් කාලය ලිවීමේ පරීක්ෂණ සාමාන්‍ය දෙයක්ද?

ඔව් එය තමයි. සමහර අවවාද සමඟ.

පළමුවෙන්ම, බොහෝ විශාල වෙළඳසැල් මේ ආකාරයෙන් වැඩ කරයි යන අර්ථයෙන් එය "සාමාන්‍ය" ය, එබැවින් මෙම මාර්ගය මුළුමනින්ම නොමඟ යවා ගොළු වුවද, බොහෝ විශාල වෙළඳසැල් මේ ආකාරයෙන් වැඩ කිරීම නිසා එය "සාමාන්‍ය" වේ.

මෙයින් මා අදහස් කරන්නේ එය පරීක්ෂා කිරීම වැරදියි කියා ඇඟවීමට නොවේ. මම කිසිදු පරීක්‍ෂණයක් නොමැති පරිසරවල සහ උමතු-බලහත්කාරයෙන් පරීක්‍ෂා කරන පරිසරවල වැඩ කර ඇති අතර, උමතු-බලහත්කාරක පරීක්‍ෂණය පවා පරීක්‍ෂණයකට වඩා හොඳ බව මට තවමත් ඔබට පැවසිය හැකිය.

මම තවම TDD කරන්නේ නැත, (කවුද දන්නේ, මම අනාගතයේදී විය හැකිය), නමුත් මම මගේ සංස්කරණය-ධාවනය-නිදොස් කිරීමේ චක්‍රයන්ගෙන් වැඩි ප්‍රමාණයක් කරන්නේ පරීක්ෂණ ක්‍රියාත්මක කිරීමෙනි, සැබෑ යෙදුම නොවේ, එබැවින් ස්වාභාවිකවම, මම බොහෝ වැඩ කරමි සත්‍ය පරීක්‍ෂණය ක්‍රියාත්මක කිරීම වළක්වා ගැනීම සඳහා මගේ පරීක්ෂණ වලදී.

කෙසේ වෙතත්, අධික පරීක්ෂාවේ අන්තරායන් ඇති බව මතක තබා ගන්න, සහ විශේෂයෙන් පරීක්ෂණ නඩත්තු කිරීම සඳහා වැය කරන කාලය . (මම මූලිකවම මෙම පිළිතුර ලියන්නේ මෙය විශේෂයෙන් පෙන්වා දීම සඳහා ය.)

රෝයි ඔෂෙරෝව්ගේ The Art of Unit Testing (Manning, 2009) හි පෙරවදනෙහි කතුවරයා පිළිගන්නේ නරක ලෙස සැලසුම් කරන ලද ඒකක පරීක්ෂණ මගින් පනවා ඇති දැවැන්ත සංවර්ධන බර හේතුවෙන් විශාල වශයෙන් අසාර්ථක වූ ව්‍යාපෘතියකට සහභාගී වූ බවයි. සංවර්ධන උත්සාහයේ කාලසීමාව. එබැවින්, ඔබේ පරීක්ෂණ පවත්වා ගැනීම හැර වෙන කිසිවක් නොකර ඔබ වැඩි කාලයක් ගත කරන බව ඔබට පෙනේ නම්, මෙය "සාමාන්‍ය" බැවින් ඔබ නිවැරදි මාවතේ යන බවක් අදහස් නොවේ. ඔබේ සංවර්ධන උත්සාහය සෞඛ්‍ය සම්පන්න නොවන මාදිලියකට ඇතුළු වී ඇති අතර, ව්‍යාපෘතිය සුරැකීම සඳහා ඔබේ පරීක්ෂණ ක්‍රමවේදය පිළිබඳ රැඩිකල් ලෙස නැවත සිතා බැලීම අවශ්‍ය විය හැකිය.


1

සත්‍ය කේතයට වඩා වැඩි කාලයක් ගත නොවන්නේ නම් කාලය ලිවීමේ පරීක්ෂණ සාමාන්‍ය දෙයක්ද?

  • ඔව් ලිවීම සඳහා ඒකකයක්-පරීක්ෂණ කේතය නම් (ටෙස්ට් හුදකලාව මොඩියුල මොඩියුල) ඉතා දැනුමින් (උරුමය, ප්රමාණවත් නොවන අවධානය වෙන් , අතුරුදහන් පරායත්ත එන්නත් නොව සංවර්ධිත TDD )
  • පරීක්‍ෂා කළ යුතු තර්කනය ගයි-කේතය හරහා පමණක් ළඟා විය හැකි නම්, ඒකාබද්ධ කිරීම / පිළිගැනීම-පරීක්ෂණ ලිවීම සඳහා ඔව්
  • කිසිදු කල් GUI-කේතය හා ලෙස ඒකාබද්ධ / පිළිගැනීම-පරීක්ෂණ ලිවීම සඳහා ව්යාපාර තර්කනය වෙන් (මෙම පරීක්ෂණය සඳහා GUI සමග අන්තර් ක්රියා කිරීමට අවශ්ය වන්නේ නැත)
  • උත්සුකතාවන්, පරායත්තතා එන්නත් කිරීම, කේතය ටෙස්ට් ඩ්‍රයිවන් සංවර්ධනය කර ඇත්නම් (tdd) ඒකක පරීක්ෂණ ලිවීම සඳහා නැත.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.