තනි ඒකක පරීක්ෂණයකදී බහුවිධ ප්‍රකාශයන් තිබීම හරිද?


434

මෙම ශ්‍රේෂ් post තනතුරට අදහස් දක්වමින් රෝයි ඔෂෙරෝව්, OAPT ව්‍යාපෘතිය ගැන සඳහන් කළේ එක් එක් ප්‍රකාශය තනි පරීක්ෂණයකින් ක්‍රියාත්මක කිරීම සඳහා නිර්මාණය කර ඇති බවයි.

පහත දැක්වෙන්නේ ව්‍යාපෘතියේ මුල් පිටුවේ ය:

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

තවද, රෝයි අදහස් දැක්වීමේදී මෙසේ ලිවීය.

මගේ මාර්ගෝපදේශය සාමාන්‍යයෙන් ඔබ එක් පරීක්ෂණයකට එක් තාර්කික CONCEPT පරීක්‍ෂා කිරීමයි. ඔබට එකම වස්තුව මත බහුවිධ ප්‍රකාශ කළ හැකිය . ඒවා සාමාන්‍යයෙන් එකම සංකල්පයක් වනු ඇත.

මම හිතන්නේ, බහුවිධ ප්‍රකාශයන් අවශ්‍ය වන අවස්ථා තිබේ (උදා: ආරක්ෂක ප්‍රකාශය ), නමුත් පොදුවේ මම මෙය වළක්වා ගැනීමට උත්සාහ කරමි. ඔබගේ මතය කුමක්ද? කරුණාකර බහුවිධ ප්‍රකාශයන් සැබවින්ම අවශ්‍ය වන සැබෑ ලෝක උදාහරණයක් සපයන්න .


2
බහුවිධ ප්‍රකාශයන් නොමැතිව ඔබ සමච්චල් කරන්නේ කෙසේද? සමච්චලයට ඇති සෑම අපේක්ෂාවක්ම ඔබ විසින්ම පනවනු ලබන ඕනෑම ඇමතුම් අනුපිළිවෙලක් ඇතුළුව එයම තහවුරු කිරීමකි.
ක්‍රිස්ටෝපර් ක්‍රෙට්සිග්

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

3
මම හිතන්නේ සාමාන්‍ය රීතියක් ලෙස ඔබ එක් පරීක්ෂණයකට ප්‍රකාශ කරන සංඛ්‍යාව අවම කිරීමට උත්සාහ කළ යුතුයි. කෙසේ වෙතත්, පරීක්ෂණය ප්‍රමාණවත් ලෙස කේතයෙහි නිශ්චිත ස්ථානයකට ගැටළුව පටු කරන තාක් කල් එය ප්‍රයෝජනවත් පරීක්ෂණයකි.
ConditionRacer

2
විවිධාකාර එජ්-කේස් හැසිරීම් පරීක්ෂා කිරීම සඳහා RowTest(MbUnit) / TestCase(NUnit) වෙනුවට බහු ප්‍රකාශයන් භාවිතා කළ අවස්ථා මම දැක ඇත්තෙමි . කාර්යය සඳහා නිසි මෙවලම් භාවිතා කරන්න! (අවාසනාවකට මෙන්, MSTest හට තවමත් පේළි-පරීක්ෂණ හැකියාවක් ඇති බවක් නොපෙනේ.)
GalacticCowboy

@GalacticCowboy ඔබ සමාන ක්රියාකාරිත්වය ලබා ගත හැක RowTestහා TestCaseභාවිතා පරීක්ෂණ දත්ත මූලාශ්ර . මම ඉතා සාර්ථක CSV ගොනුවක් භාවිතා කරමි.
julealgon

Answers:


254

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

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

බහුවිධ ප්‍රකාශයන් ඔබ විසඳන්නේ කෙසේද?


9
මෙම පිළිතුර මෙන් - එනම් එය හරි, නමුත් පොදුවේ ගත් කල එය හොඳ නැත (-:
මර්ෆ්

5
එහ්? ඇයි ඔබ එය කරන්නේ? ක්‍රියාත්මක කිරීමේ ක්‍රමය හරියටම සමානද?
jgauffin

218
ඒකක පරීක්ෂණයකට තනි ප්‍රකාශයක් යනු පා and කයාට ඉහළට සහ පහළට අනුචලනය කිරීමේ හැකියාව පරීක්ෂා කිරීමට හොඳ ක්‍රමයකි.
ටොම්

3
මේ පිටුපස කිසියම් තර්කයක් තිබේද? මේ වත්මන් පිළිතුරෙන් කියැවෙන්නේ එය කුමක් විය යුතුද යන්නයි.
ස්ටීවන් ජියුරිස්

43
තදින්ම එකඟ නොවන්න. පිළිතුර තනි ප්‍රකාශයක් කිරීමෙන් කිසිදු වාසියක් ලැයිස්තුගත නොකරන අතර පැහැදිලිවම අවාසිය නම් ඔබට පරීක්ෂණ පිටපත් කිරීමට අවශ්‍ය වන්නේ අන්තර්ජාලයේ පිළිතුරක් පවසන නිසා පමණි. ඔබට එක් මෙහෙයුමක ප්‍රති fields ල හෝ බහු ප්‍රති results ල පරික්ෂා කිරීමට අවශ්‍ය නම්, ඔබ ඒවා සියල්ලම ස්වාධීන ප්‍රකාශයන් මගින් සහතික කළ යුතුය, මන්ද එය විශාල පිපිරුමකින් පරීක්ෂා කිරීමට වඩා ප්‍රයෝජනවත් තොරතුරු ලබා දෙන බැවිනි. හොඳ පරීක්ෂණයකදී, ඔබ එක් මෙහෙයුමක් පරීක්ෂා කරයි, මෙහෙයුමක එක් ප්‍රති result ලයක් නොවේ.
පීටර්

319

පරීක්ෂණ අසාර්ථක විය යුත්තේ එක් හේතුවක් නිසා පමණි, නමුත් සෑම විටම එක Assertප්‍රකාශයක් පමණක් තිබිය යුතු යැයි එයින් අදහස් නොවේ . IMHO " විධිවිධාන, පනත, තහවුරු කිරීම " රටාව තදින් අල්ලා ගැනීම වඩා වැදගත් ය .

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

එකම ක්‍රියාව පරීක්ෂා කිරීමේ කොටස් වන බහු ප්‍රකාශ ප්‍රකාශ දැකීම සතුටට කරුණකි. උදා

[Test]
public void ValueIsInRange()
{
  int value = GetValueToTest();

  Assert.That(value, Is.GreaterThan(10), "value is too small");
  Assert.That(value, Is.LessThan(100), "value is too large");
} 

හෝ

[Test]
public void ListContainsOneValue()
{
  var list = GetListOf(1);

  Assert.That(list, Is.Not.Null, "List is null");
  Assert.That(list.Count, Is.EqualTo(1), "Should have one item in list");
  Assert.That(list[0], Is.Not.Null, "Item is null");
} 

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

උදා: පළමුවැන්න විය හැකිය

Assert.IsTrue((10 < value) && (value < 100), "Value out of range"); 

නමුත් මෙය වඩා හොඳ නැත - එයින් පිටවන දෝෂ පණිවිඩය අඩු නිශ්චිත වන අතර එයට වෙනත් වාසි නොමැත. දෙකක් හෝ තුනක් (හෝ වැඩි ගණනක්) එක් විශාල බූලියන් තත්වයකට ඒකාබද්ධ කිරීම කියවීම දුෂ්කර, වෙනස් කිරීමට අපහසු සහ එය අසාර්ථක වීමට හේතුව සොයා ගැනීමට අපහසු වන වෙනත් උදාහරණ ගැන ඔබට සිතිය හැකි බව මට විශ්වාසයි. මෙය නීතියක් සඳහා පමණක් කරන්නේ ඇයි?

සැ.යු : මම මෙහි ලියන කේතය NUnit සමඟ C # වේ, නමුත් මූලධර්ම වෙනත් භාෂා හා රාමු සමඟ රැඳෙනු ඇත. වාක්‍ය ඛණ්ඩය ද බොහෝ සමාන විය හැකිය.


38
ප්රධාන දෙය නම් ඔබට ඇත්තේ එක් ක්රමයක් පමණක් වන අතර පසුව ඔබ එම ක්රියාවලියේ ප්රති results ල තහවුරු කර ගනිමින් පරීක්ෂා කරයි.
අමිතාබා

1
සැකැස්ම කාලය මිල අධික නම්, එක් ප්‍රකාශයක් ලෙස වැඩි ප්‍රමාණයක් තිබීම ද සිත්ගන්නා සුළු යැයි මම සිතමි.
රෙක්ෂිනෝ

1
Ek රෙක්ෂිනෝ, විධිවිධාන කාලය මිල අධික නම්, අපට විධිවිධාන කේතය බෙදා ගත හැකිය, නිදසුනක් ලෙස, පරීක්ෂණ කේතය පරීක්ෂණ ආරම්භක ක්‍රියාවලියට ඇතුළත් කිරීමෙන්.
ෂෝන් ලුටින්

2
එබැවින් මම ජාකෝගේ පිළිතුර හා සසඳන විට, “එකම එක ප්‍රකාශයක්” මට වඩා අර්ථවත් වන “එක් ප්‍රකාශයක් පමණක්” බවට පත්වේ.
වොල්ෆ්‍රට්

2
මෙය හොඳ පිළිතුරකි, නමුත් එක ප්‍රකාශයක් වඩා හොඳ නොවන බවට මම එකඟ නොවෙමි. නරක ප්‍රකාශ කිරීමේ උදාහරණය වඩා හොඳ නැත, නමුත් එයින් අදහස් කරන්නේ නිවැරදිව කළහොත් තනි ප්‍රකාශයක් වඩා හොඳ නොවන බවයි. බොහෝ පුස්තකාල අභිරුචි ප්‍රකාශ / මැචර් වලට ඉඩ දෙයි, එබැවින් දැනටමත් නොමැති නම් යමක් නිර්මාණය කළ හැකිය. උදාහරණයක් ලෙස Assert.IsBetween(10, 100, value)පිටපත් බව Expected 8 to be between 10 and 100 වෙනම දෙකක් මගේ මතය තරයේ ප්රකාශ වඩා හොඳ. එය අවශ්‍ය නොවන බව ඔබට නිසැකවම තර්ක කළ හැකිය, නමුත් සාමාන්‍යයෙන් ඒවායින් එකක් සෑදීමට පෙර තනි ප්‍රකාශයක් දක්වා අඩු කිරීම පහසු ද යන්න සලකා බැලීම වටී.
Thor84no

87

එකකට වඩා ප්‍රකාශ කිරීම නරක දෙයක් යැයි මම කිසි විටෙකත් නොසිතුවෙමි.

මම එය සැමවිටම කරමි:

public void ToPredicateTest()
{
    ResultField rf = new ResultField(ResultFieldType.Measurement, "name", 100);
    Predicate<ResultField> p = (new ConditionBuilder()).LessThanConst(400)
                                                       .Or()
                                                       .OpenParenthesis()
                                                       .GreaterThanConst(500)
                                                       .And()
                                                       .LessThanConst(1000)
                                                       .And().Not()
                                                       .EqualsConst(666)
                                                       .CloseParenthesis()
                                                       .ToPredicate();
    Assert.IsTrue(p(ResultField.FillResult(rf, 399)));
    Assert.IsTrue(p(ResultField.FillResult(rf, 567)));
    Assert.IsFalse(p(ResultField.FillResult(rf, 400)));
    Assert.IsFalse(p(ResultField.FillResult(rf, 666)));
    Assert.IsFalse(p(ResultField.FillResult(rf, 1001)));

    Predicate<ResultField> p2 = (new ConditionBuilder()).EqualsConst(true).ToPredicate();

    Assert.IsTrue(p2(new ResultField(ResultFieldType.Confirmation, "Is True", true)));
    Assert.IsFalse(p2(new ResultField(ResultFieldType.Confirmation, "Is False", false)));
}

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

මම පරීක්ෂා කරන්නේ එක් ඒකකයක් ( ToPredicateක්‍රමය) පමණි, නමුත් පරීක්ෂණයෙන් මට සිතිය හැකි සියල්ල ආවරණය කරමි.


50
දෝෂ හඳුනාගැනීම නිසා බහු ප්‍රකාශයන් නරක ය. ඔබගේ පළමු ප්‍රකාශය ඔබ අසමත් වී ඇත්නම්, වෙනත් ප්‍රකාශයන් ක්‍රියාත්මක නොවනු ඇත, එවිට ඔබට ඔවුන්ගෙන් කිසිදු තොරතුරක් නොලැබෙනු ඇත. අනෙක් අතට ඔබට සහතික 5 ක් සමඟ 1 වෙනුවට පරීක්ෂණ 5 ක් තිබුනේ නම් ඔබට ප්‍රයෝජනවත් යමක් ලබා ගත හැකිය
Sly

6
සියලු ප්‍රකාශයන් එකම ආකාරයේ ක්‍රියාකාරීත්වයක් පරීක්ෂා කරන්නේ නම් එය තවමත් නරක යැයි ඔබ සිතනවාද? ඉහත පරිදි, උදාහරණය කොන්දේසි පරීක්ෂා කරන අතර මේ කිසිවක් අසමත් වුවහොත් ඔබ එය නිවැරදි කළ යුතුය. කලින් ප්‍රකාශයක් අසමත් වුවහොත් අවසාන ප්‍රකාශ 2 ඔබට මග හැරෙනු ඇතැයි යන්න ඔබට වැදගත් ද?
cringe

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

20
ඔබේ නඩුව ඉතා නියෝජිතය, එබැවින් NUnit ට TestCase හි අතිරේක ගුණාංග ඇත - nunit.org/?p=testCase&r=2.5
Restuta

10
google C ++ පරීක්ෂණ රාමුවට ASSERT () සහ EXPECT () ඇත. EXPECT () අඛණ්ඩව සිදුවන අතර ASSERT () අසමත් වීම මත නතර වේ. පරීක්ෂණයෙන් එකකට වඩා වැඩි ප්‍රමාණයක් වලංගු කිරීමට ඔබට අවශ්‍ය විට එය ඉතා පහසුය.
ratkok

22

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

@Test
public void testAlarmSent() {
    assertAllUnitsAvailable();
    assertNewAlarmMessages(0);

    pulseMainProcessor();

    assertAllUnitsAlerting();
    assertAllNotificationsSent();
    assertAllNotificationsUnclosed();
    assertNewAlarmMessages(1);
}

කේතය මා අපේක්ෂා කරන ආකාරයට හැසිරෙන බවට මට විශ්වාසයක් ඇති කර ගැනීම සඳහා ක්‍රියාවලියේ සෑම පියවරකදීම පැවතිය යුතු කොන්දේසි එය නියෝජනය කරයි. එක ප්‍රකාශයක් අසමත් වුවහොත්, ඉතිරි ඒවා ක්‍රියාත්මක නොවනු ඇතැයි මම නොසිතමි. පද්ධතියේ රාජ්ය තවදුරටත් වලංගු නිසා, එම පසු කථනයන් මට වටිනා දෙයක් කියන්න නැහැ. * නම් assertAllUnitsAlerting()අසාර්ථක, මම මොනවා කරන්නද දන්නේ නැහැ assertAllNotificationSent()සාර්ථකත්වය හෝ අසාර්ථකත්වය ගේ මම පෙර දෝෂය ඇති දේ තීරණය වන තෙක් එය නිවැරදි කළා.

(* - හරි, ඒවා ගැටලුව නිරාකරණය සඳහා ප්‍රයෝජනවත් යැයි සිතිය හැකිය. නමුත් පරීක්ෂණය අසාර්ථක වූ වැදගත්ම තොරතුරු දැනටමත් ලැබී ඇත.)


ඔබ එසේ කරන විට ඔබ යැපෙන පරීක්ෂණ සමඟ පරීක්ෂණ රාමු භාවිතා කිරීම වඩා හොඳය (උදා: testng මෙම අංගයට සහය දක්වයි)
Kemoda

8
කේතය කරන්නේ කුමක්ද සහ තත්වය වෙනස් වන්නේද යන්න පිළිබඳව ඔබට විශ්වාසයක් ඇති කර ගැනීම සඳහා මම මේ වගේ පරීක්ෂණ ලියමි, මෙය ඒකක පරීක්ෂණයක් යැයි මම නොසිතමි.
mdma

එය නැවත තහවුරු කිරීම පිළිබඳ ඔබේ මතය කුමක්ද? AlarmStatus (int numberOfAlarmMessages);
බෝර්ජාබ්

1
ඔබේ ප්‍රකාශයන් ඉතා හොඳ පරීක්ෂණ නම් සඳහා යොදා ගනී.
ජෝර්න්

අවලංගු ආදානය මත වුවද පරීක්ෂණය ක්‍රියාත්මක කිරීමට ඉඩ දීම වඩා හොඳය. එය ඔබට තවත් තොරතුරු ඒ ආකාරයෙන් ලබා දෙයි (විශේෂයෙන් ඔබ බලාපොරොත්තු නොවූ විට එය තවමත් සමත් වුවහොත්).
CurtainDog

8

මා සිතීමට තවත් හේතුවක් නම්, එක් ක්‍රමයක බහුවිධ ප්‍රකාශයන් නරක දෙයක් නොවන බව පහත කේතයේ විස්තර කර ඇත:

class Service {
    Result process();
}

class Result {
    Inner inner;
}

class Inner {
    int number;
}

මගේ පරීක්ෂණයේදී මට අවශ්‍ය වන්නේ පන්ති අවස්ථා service.process()වලදී නිවැරදි අංකය ලබා දෙන බව පරීක්ෂා කිරීමයි Inner.

පරීක්ෂා කරනවා වෙනුවට ...

@Test
public void test() {
    Result res = service.process();
    if ( res != null && res.getInner() != null ) Assert.assertEquals( ..., res.getInner() );
}

මම කරනවා

@Test
public void test() {
    Result res = service.process();
    Assert.notNull(res);
    Assert.notNull(res.getInner());
    Assert.assertEquals( ..., res.getInner() );
}

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

2
ඔබගේ Assert.notNullඅතිරික්තය, ඔබේ පරීක්ෂණය අක්‍රීය නම් NPE සමඟ අසමත් වනු ඇත.
සාරා

1
එසේම, ඔබගේ පළමු උදාහරණය (සමඟ if) නම් සමත් වනු resඇතnull
සාරා

1
akai notNull ගේ අතිරික්තය, මම එකඟ වෙමි, නමුත් ව්‍යතිරේකය වෙනුවට (සහ මම නිසි පණිවිඩයක් සමඟ කම්මැලි නොවන්නේ නම්) එය වඩා පිරිසිදු බව මට හැඟේ ...
Betlista

1
අසාර්ථක ප්‍රකාශයක් ද ව්‍යතිරේකයක් විසි කරන අතර, අවස්ථා දෙකේදීම ඔබට එය හරියටම පේළියට link ජු සම්බන්ධයක් ලැබෙනු ඇත. Assert.assertEquals(..., service.process().getInner());රේඛාව “දිග වැඩියි” නම් උපුටා ගත් විචල්‍යයන් සමඟ හැකි ඔනෙලිනර් la ලාට මම කැමතියි
සාරා

7

එක් හේතුවක් නිසා පමණක් පරීක්ෂණය අසමත් විය යුතුය යන රීතිය තුළ බහුවිධ ප්‍රකාශ ලිවීම වලංගු වන අවස්ථා ඕනෑ තරම් ඇතැයි මම සිතමි.

නිදසුනක් ලෙස, දිනය නූලක් විග්‍රහ කරන ශ්‍රිතයක් සිතන්න:

function testParseValidDateYMD() {
    var date = Date.parse("2016-01-02");

    Assert.That(date.Year).Equals(2016);
    Assert.That(date.Month).Equals(1);
    Assert.That(date.Day).Equals(0);
}

පරීක්ෂණය අසමත් වුවහොත් එය එක් හේතුවක් නිසා, විග්‍රහ කිරීම වැරදිය. විවිධ හේතු තුනක් නිසා මෙම පරීක්ෂණය අසමත් විය හැකි යැයි ඔබ තර්ක කරන්නේ නම්, “එක් හේතුවක්” පිළිබඳ ඔබේ අර්ථ දැක්වීමේදී ඔබ IMHO ඉතා හොඳින් කටයුතු කරනු ඇත.


3

[ටෙස්ට්] ක්‍රමය තුළම බහුවිධ ප්‍රකාශයන් තිබීම හොඳ අදහසක් වන කිසිදු තත්වයක් ගැන මම නොදනිමි. බහුවිධ ප්‍රකාශයන් ලබා ගැනීමට මිනිසුන් කැමති වීමට ප්‍රධාන හේතුව වන්නේ ඔවුන් එක් එක් පන්තිය පරීක්ෂා කිරීම සඳහා එක් [TestFixture] පන්තියක් ලබා ගැනීමට උත්සාහ කිරීමයි. ඒ වෙනුවට, ඔබට තවත් [TestFixture] පන්ති වලට ඔබේ පරීක්ෂණ බිඳ දැමිය හැකිය. පළමු ප්‍රකාශය අසාර්ථක වූ ස්ථානය වෙනුවට කේතය ඔබ අපේක්ෂා කළ ආකාරයට ප්‍රතික්‍රියා නොකළ ආකාර කිහිපයක් බැලීමට මෙය ඔබට ඉඩ සලසයි. ඔබ මෙය සාක්ෂාත් කර ගන්නා ආකාරය නම්, ඔබට පන්තියකට අවම වශයෙන් එක් ඩිරෙක්ටරියක්වත් ඇතුළත [TestFixture] පන්ති රාශියක් පරීක්ෂා කර ඇත. සෑම [TestFixture] පන්තියක්ම ඔබ විසින් පරීක්ෂා කරනු ලබන වස්තුවක නිශ්චිත තත්වයට නම් කරනු ලැබේ. [SetUp] ක්‍රමය මඟින් පන්ති නාමයෙන් විස්තර කර ඇති තත්වයට වස්තුව ලැබෙනු ඇත. එවිට ඔබට වස්තුවේ වත්මන් තත්වය අනුව, සත්‍ය යැයි අපේක්ෂා කරන විවිධ දේ තහවුරු කරන බහු [පරීක්ෂණ] ක්‍රම තිබේ. සෑම [ටෙස්ට්] ක්‍රමයක්ම එය තහවුරු කරන දෙයට නම් කර ඇත, සමහර විට එය කේතයේ ඉංග්‍රීසි කියවීමක් වෙනුවට සංකල්පයට නම් කළ හැකිය. එවිට සෑම [පරීක්ෂණ] ක්‍රමයක්ම ක්‍රියාත්මක කිරීමට අවශ්‍ය වන්නේ එය යමක් තහවුරු කරන කේත පේළියක් පමණි. මෙම ප්‍රවේශයේ තවත් වාසියක් නම්, ඔබ පරීක්‍ෂා කරන්නේ කුමක් ද යන්න සහ පන්තියේ සහ ක්‍රමයේ නම් දෙස බැලීමෙන් ඔබ අපේක්ෂා කරන දේ පැහැදිලි වන හෙයින් එය පරීක්ෂණ ඉතා පහසුවෙන් කියවිය හැකි ය. ඔබට පරීක්ෂා කිරීමට අවශ්‍ය කුඩා අවස්ථා සියල්ලම ඔබ තේරුම් ගැනීමට පටන් ගන්නා විට සහ දෝෂ සොයා ගන්නා විට මෙයද වඩා හොඳ වනු ඇත. සමහර විට එය කේතයේ ඉංග්‍රීසි කියවීමක් වෙනුවට සංකල්පයට නම් කළ හැකිය. එවිට සෑම [පරීක්ෂණ] ක්‍රමයක්ම ක්‍රියාත්මක කිරීමට අවශ්‍ය වන්නේ එය යමක් තහවුරු කරන කේත පේළියක් පමණි. මෙම ප්‍රවේශයේ තවත් වාසියක් නම්, ඔබ පරීක්‍ෂා කරන්නේ කුමක් ද යන්න සහ පන්තියේ සහ ක්‍රමයේ නම් දෙස බැලීමෙන් ඔබ අපේක්ෂා කරන දේ පැහැදිලි වන හෙයින් එය පරීක්ෂණ ඉතා පහසුවෙන් කියවිය හැකි ය. ඔබට පරීක්ෂා කිරීමට අවශ්‍ය කුඩා අවස්ථා සියල්ලම ඔබ තේරුම් ගැනීමට පටන් ගන්නා විට සහ දෝෂ සොයා ගන්නා විට මෙයද වඩා හොඳ වනු ඇත. සමහර විට එය කේතයේ ඉංග්‍රීසි කියවීමක් වෙනුවට සංකල්පයට නම් කළ හැකිය. එවිට සෑම [පරීක්ෂණ] ක්‍රමයක්ම ක්‍රියාත්මක කිරීමට අවශ්‍ය වන්නේ එය යමක් තහවුරු කරන කේත පේළියක් පමණි. මෙම ප්‍රවේශයේ තවත් වාසියක් නම්, ඔබ පරීක්‍ෂා කරන්නේ කුමක් ද යන්න සහ පන්තියේ සහ ක්‍රමයේ නම් දෙස බැලීමෙන් ඔබ අපේක්ෂා කරන දේ පැහැදිලි වන හෙයින් එය පරීක්ෂණ ඉතා පහසුවෙන් කියවිය හැකි ය. ඔබට පරීක්ෂා කිරීමට අවශ්‍ය කුඩා අවස්ථා සියල්ලම ඔබ තේරුම් ගැනීමට පටන් ගන්නා විට සහ දෝෂ සොයා ගන්නා විට මෙයද වඩා හොඳ වනු ඇත. පංතියේ සහ ක්‍රම නාම දෙස බැලීමෙන් ඔබ අපේක්ෂා කරන දේ. ඔබට පරීක්ෂා කිරීමට අවශ්‍ය කුඩා අවස්ථා සියල්ලම ඔබ තේරුම් ගැනීමට පටන් ගන්නා විට සහ දෝෂ සොයා ගන්නා විට මෙයද වඩා හොඳ වනු ඇත. පංතියේ සහ ක්‍රම නාම දෙස බැලීමෙන් ඔබ අපේක්ෂා කරන දේ. ඔබට පරීක්ෂා කිරීමට අවශ්‍ය කුඩා අවස්ථා සියල්ලම ඔබ තේරුම් ගැනීමට පටන් ගන්නා විට සහ දෝෂ සොයා ගන්නා විට මෙයද වඩා හොඳ වනු ඇත.

සාමාන්‍යයෙන් මෙයින් අදහස් කරන්නේ [SetUp] ක්‍රමය තුළ ඇති කේතයේ අවසාන පේළිය [TestFixture] හි පුද්ගලික නිදර්ශන විචල්‍යයක දේපල වටිනාකමක් හෝ ප්‍රතිලාභ අගයක් ගබඩා කළ යුතු බවයි. එවිට ඔබට මෙම උදාහරණ විචල්‍යය පිළිබඳ විවිධ [ටෙස්ට්] ක්‍රම වලින් විවිධ දේ ප්‍රකාශ කළ හැකිය. පරීක්ෂණයට භාජනය වන වස්තුවෙහි අපේක්ෂිත තත්වයේ පවතින බවට දැන් සකසා ඇති විවිධ ගුණාංග මොනවාද යන්න පිළිබඳවද ඔබට ප්‍රකාශ කළ හැකිය.

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

ඔබ මුහුණ දිය හැකි තවත් ගැටළුවක් නම් ඔබ විසි කිරීමට බලාපොරොත්තු වූ ව්‍යතිරේකයක් පරීක්ෂා කිරීමයි. ඉහත ආකෘතිය අනුගමනය නොකිරීමට මෙය ඔබව පොළඹවනු ඇත. කෙසේ වෙතත්, [SetUp] ක්‍රමය තුළ ඇති ව්‍යතිරේකය අල්ලා එය නිදර්ශන විචල්‍යයකට ගබඩා කිරීමෙන් එය තවමත් සාක්ෂාත් කරගත හැකිය. ව්‍යතිරේකය පිළිබඳ විවිධ දේ ප්‍රකාශ කිරීමට මෙය ඔබට ඉඩ සලසයි. පරීක්‍ෂාවට භාජනය වන වස්තුව පිළිබඳ වෙනත් කරුණු ද ඔබට ප්‍රකාශ කළ හැකිය. විසි කිරීම හැරුණු විට අනපේක්ෂිත අතුරු ආබාධ නොමැති බව තහවුරු කර ගන්න.

උදාහරණය (මෙය බහු ලිපිගොනු වලට වෙන් කරනු ඇත):

namespace Tests.AcctTests
{
    [TestFixture]
    public class no_events
    {
        private Acct _acct;

        [SetUp]
        public void SetUp() {
            _acct = new Acct();
        }

        [Test]
        public void balance_0() {
            Assert.That(_acct.Balance, Is.EqualTo(0m));
        }
    }

    [TestFixture]
    public class try_withdraw_0
    {
        private Acct _acct;
        private List<string> _problems;

        [SetUp]
        public void SetUp() {
            _acct = new Acct();
            Assert.That(_acct.Balance, Is.EqualTo(0));
            _problems = _acct.Withdraw(0m);
        }

        [Test]
        public void has_problem() {
            Assert.That(_problems, Is.EquivalentTo(new string[] { "Withdraw amount must be greater than zero." }));
        }

        [Test]
        public void balance_not_changed() {
            Assert.That(_acct.Balance, Is.EqualTo(0m));
        }
    }

    [TestFixture]
    public class try_withdraw_negative
    {
        private Acct _acct;
        private List<string> _problems;

        [SetUp]
        public void SetUp() {
            _acct = new Acct();
            Assert.That(_acct.Balance, Is.EqualTo(0));
            _problems = _acct.Withdraw(-0.01m);
        }

        [Test]
        public void has_problem() {
            Assert.That(_problems, Is.EquivalentTo(new string[] { "Withdraw amount must be greater than zero." }));
        }

        [Test]
        public void balance_not_changed() {
            Assert.That(_acct.Balance, Is.EqualTo(0m));
        }
    }
}

මෙම අවස්ථාවේදී ඔබ ටෙස්ට් කේස් ආදානය හසුරුවන්නේ කෙසේද?
සයිමන් ගිල්බි

ඉතින්, මගේ වර්තමාන සංවිධානයේ, ඔබ පෙන්වන දෙයට සමාන 20,000+ ඒකක පරීක්ෂණ අප සතුව ඇත. මෙය බියකරු සිහිනයකි. පරීක්ෂණ සැකසුම් කේතයෙන් වැඩි ප්‍රමාණයක් පිටපත් කර / අලවා ඇති අතර එහි ප්‍රති test ලයක් ලෙස වැරදි පරීක්ෂණ සැකසුම සහ අවලංගු පරීක්ෂණ සමත් වේ. සෑම [Test]ක්‍රමයක් සඳහාම , එම පන්තිය නැවත ස්ථාපනය කර නැවත [SetUp]ක්‍රමය ක්‍රියාත්මක කරනු ලැබේ. මෙය .NET කසළ එකතු කරන්නා මරා දමන අතර පරීක්ෂණ ඉතා සෙමින් ක්‍රියාත්මක වීමට හේතු වේ: දේශීයව මිනිත්තු 5+, ගොඩ නැගීමේ සේවාදායකයේ විනාඩි 20+. 20K පරීක්ෂණ විනාඩි 2 - 3 කින් පමණ ක්‍රියාත්මක විය යුතුය. මෙම පරීක්ෂණ විලාසය මම කිසිසේත් නිර්දේශ නොකරමි , විශේෂයෙන් විශාල ප්‍රමාණයේ පරීක්ෂණ කට්ටලයක් සඳහා.
fourpastmidnight

ourfourpastmidnight ඔබ කියූ බොහෝ දේ වලංගු විවේචනයක් සේ පෙනේ, නමුත් සැකසුම් කේතය පිටපත් කිරීම හා ඇලවීම පිළිබඳ කාරණය සහ එබැවින් වැරදියි, එය ව්‍යුහයේ ගැටළුවක් නොව වගකීම් විරහිත ක්‍රමලේඛකයින්ගේ (වගකීම් විරහිත කළමනාකරුවන්ගේ හෝ negative ණාත්මක පරිසරයක ප්‍රති result ලයක් විය හැකිය) නරක ක්‍රමලේඛකයන්ට වඩා). මිනිසුන් කේතය පිටපත් කර අලවා එය නිවැරදි යැයි සිතන්නේ නම් සහ කේතය තේරුම් ගැනීමට කරදර නොවන්නේ නම්, කිසියම් සන්දර්භයක් තුළ කිසියම් හේතුවක් නිසා, මෙය සිදු නොකිරීමට ඔවුන් පුහුණු කළ යුතුය. පුහුණු. එය ක්‍රමලේඛනයේ සෑම හොඳ විදුහල්පතිවරයකුටම පටහැනිය.
still_dreaming_1

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

@ still_dreaming_1 wrt "වගකීම් විරහිත ක්‍රමලේඛකයින්": මෙම හැසිරීම ප්‍රධාන ගැටළුවක් බව මම එකඟ වෙමි. කෙසේ වෙතත්, මේ ආකාරයේ පරීක්ෂණ ව්‍යුහය සැබවින්ම මෙවැනි හැසිරීම් වලට වඩා හොඳ හෝ නරක සඳහා ආරාධනා කරයි. අයහපත් සංවර්ධන භාවිතයන් පසෙකට දැමූ විට, මෙම පෝරමයට මගේ ප්‍රධාන විරෝධය නම් එය පරීක්ෂණ කාර්ය සාධනය සැබවින්ම විනාශ කිරීමයි. මන්දගාමී ධාවන පරීක්ෂණ කට්ටලයකට වඩා නරක දෙයක් නැත. මන්දගාමී ධාවන පරීක්ෂණ කට්ටලයක් යනු මිනිසුන් දේශීයව පරීක්ෂණ සිදු නොකරන අතර අතරමැදි ගොඩනැඟිලි මඟ හැරීමට පවා පෙළඹෙනු ඇත - නැවතත්, ජනතාවගේ ගැටලුවක්, නමුත් එය සිදු වේ - මේ සියල්ල වළක්වා ගත හැක්කේ ඔබට වේගයෙන් ධාවනය වන පරීක්ෂණ ආරම්භ කිරීම සහතික කිරීමෙනි සමග.
fourpastmidnight

2

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

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


2
ඔබ එක් කොන්දේසියකට බහුවිධ කොන්දේසි ඒකාබද්ධ කරන්නේ නම්, අසාර්ථක වූ විට ඔබ දන්නා දෙය නම් එය අසාර්ථක වූ බවයි. බහුවිධ ප්‍රකාශයන් සමඟ ඔබ ඒවායින් සමහරක් ගැන විශේෂයෙන් දනී (අසමත් වීම දක්වා සහ ඇතුළුව). ආපසු ලබා දුන් අරාව පරීක්ෂා කිරීම තනි අගයක් අඩංගු බව සලකා බලන්න: එය ශුන්‍ය නොවන බව පරීක්ෂා කරන්න, ඉන්පසු එය හරියටම එක් මූලද්‍රව්‍යයක් ඇති අතර පසුව එම මූලද්‍රව්‍යයේ අගය. (වේදිකාව මත පදනම්ව) වහාම අගය පරීක්ෂා කිරීමෙන් ශුන්‍ය විරූපණයක් ලබා දිය හැකිය (ශුන්‍ය ප්‍රකාශය අසාර්ථක වීමට වඩා අඩු උපකාරී වේ) සහ අරාවෙහි දිග පරීක්ෂා නොකරයි.
රිචඩ්

Ic රිචඩ්: ප්‍රති result ලයක් ලබා ගැනීම සහ එම ප්‍රති result ලයෙන් යමක් උකහා ගැනීම පියවර කිහිපයකින් ක්‍රියාවලියක් වනු ඇත, එබැවින් පිළිතුරේ දෙවන ඡේදයේ මම එය ආවරණය කළෙමි.
ගුෆා

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

NCrunch වැනි ගුණාත්මක පරීක්ෂණ ධාවකයෙකු භාවිතා කිරීමෙන් පරීක්ෂණය අසමත් වූ රේඛාව, පරීක්ෂණ කේතය සහ පරීක්ෂණය යටතේ ඇති කේතය යන දෙකම ඔබට හරියටම පෙන්වනු ඇත.
fourpastmidnight

2

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

String actual = "val1="+val1+"\nval2="+val2;
assertEquals(
    "val1=5\n" +
    "val2=hello"
    , actual
);

සියලු අසාර්ථක ප්‍රකාශයන් එකවර බැලීමට එය මට ඉඩ දෙයි. මම පේළි කිහිපයක් භාවිතා කරමි, මන්ද බොහෝ IDEs එක පැත්තකින් සංසන්දනය කිරීමේ සංවාදයක වචන වෙනස්කම් පෙන්වනු ඇත.


2

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

@Test
test_Is_Date_segments_correct {

   // It is okay if you have multiple asserts checking dd, mm, yyyy, hh, mm, ss, etc. 
   // But you would not have any assert statement checking if it is string or number,
   // that is a different test and may be with multiple or single assert statement.
}

බොහෝ පරීක්ෂණ තිබීම (එය අධික ලෙස මරා දැමීමක් යැයි ඔබට හැඟෙන විට පවා) නරක දෙයක් නොවේ. අත්‍යවශ්‍ය හා අත්‍යවශ්‍ය පරීක්ෂණ පැවැත්වීම වඩා වැදගත් යැයි ඔබට තර්ක කළ හැකිය. SO, ඔබ අවධාරනය කරන විට, බහු ප්‍රකාශයන් ගැන ඕනෑවට වඩා කනස්සල්ලට පත්වීමට වඩා ඔබේ ප්‍රකාශයන් නිවැරදිව ස්ථානගත කර ඇති බවට වග බලා ගන්න. ඔබට එකකට වඩා අවශ්‍ය නම්, එකකට වඩා භාවිතා කරන්න.


1

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

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


1

ඔව්, අසමත් වූ පරීක්‍ෂණයක් මඟින් අසාර්ථකත්වය හඳුනා ගැනීමට ප්‍රමාණවත් තොරතුරු ලබා දෙන තාක් කල් බහුවිධ ප්‍රකාශයන් තිබීම සුදුසුය . මෙය ඔබ පරීක්‍ෂා කරන දේ සහ අසාර්ථක ප්‍රකාරයන් මත රඳා පවතී.

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

එවැනි සූත්‍රයන් ප්‍රයෝජනවත් යැයි මා කිසි විටෙකත් සොයාගෙන නැත (පංතියක් වෙනස් කිරීමට එක් හේතුවක් තිබිය යුතුය යන්න එවැනි උදව්වක් නොවන කියමනකට උදාහරණයකි). නූල් දෙකක් සමාන යැයි ප්‍රකාශයක් සලකා බලන්න, මෙය අර්ථකථන දෙකෙහි දිග සමාන වන අතර අනුරූප දර්ශකයේ එක් එක් අක්‍ෂරය සමාන වේ.

ඕනෑම ප්‍රකාශයක් ඕනෑම ප්‍රකාශයක් තනි ප්‍රකාශයක් ලෙස නැවත ලිවිය හැකි බවත්, ඕනෑම තනි ප්‍රකාශයක් කුඩා ප්‍රකාශ සමූහයකට දිරාපත් කළ හැකි බවත් අපට සාමාන්‍යකරණය කළ හැකිය.

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


0

මෙම ප්‍රශ්නය ස්පැගටි සහ ලස ag ් code ා කේත ගැටළු අතර තුලනය කිරීමේ සම්භාව්‍ය ගැටලුවට සම්බන්ධ වේ.

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

සමහර ව්‍යතිරේක ඇත, නමුත් මේ අවස්ථාවේ දී පෙන්ඩලය මැද තබා ගැනීම පිළිතුර වේ.


0

පිළිතුර ඉතා සරලයි - ඔබ එකම ගුණාංගයක, එකම වස්තුවක හෝ වෙනස් වස්තූන් දෙකකට වඩා වෙනස් කරන ශ්‍රිතයක් පරීක්ෂා කරන්නේ නම් සහ ශ්‍රිතයේ නිරවද්‍යතාවය එම සියලු වෙනස්කම්වල ප්‍රති results ල මත රඳා පවතී නම්, ඔබට තහවුරු කිරීමට අවශ්‍යය එම සෑම වෙනස්කමක්ම නිසියාකාරව සිදු කර ඇති බව!

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

බැංකු ගනුදෙනුවක තාර්කික සංකල්පය ගන්න - බොහෝ අවස්ථාවන්හිදී එක් බැංකු ගිණුමකින් මුදලක් ආපසු ගැනීම එම මුදල වෙනත් ගිණුමකට එකතු කිරීම ඇතුළත් කළ යුතුය. ඔබට එම කරුණු දෙක වෙන් කිරීමට අවශ්‍ය නැත, ඒවා පරමාණුක ඒකකයක් සාදයි. ඔබට කාර්යයන් දෙකක් කිරීමට අවශ්‍ය විය හැකිය (ඉවත් කර ගන්න / එකතු කරන්න) ඒ අනුව වෙනස් ඒකක පරීක්ෂණ දෙකක් ලියන්න - ඊට අමතරව. නමුත් එම ක්‍රියාවන් දෙක එක් ගනුදෙනුවක් තුළ සිදුවිය යුතු අතර ගනුදෙනුව ක්‍රියාත්මක වන බවට සහතික කර ගැනීමටද ඔබට අවශ්‍යය. එවැනි අවස්ථාවකදී තනි පියවර සාර්ථක වූ බවට සහතික කර ගැනීම පමණක් ප්‍රමාණවත් නොවේ. ඔබගේ පරීක්ෂණයෙන් ඔබ බැංකු ගිණුම් දෙකම පරීක්ෂා කළ යුතුය.

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


-3

පොදුවේ “එක් හේතුවක් නිසා පමණක් අසමත් වීම” සමඟ මම එකඟ නොවෙමි. වඩා වැදගත් දෙය නම් පරීක්ෂණ කෙටි වන අතර පැහැදිලිව කියවන ඉමෝ ය.

මෙය සැමවිටම සාක්ෂාත් කරගත නොහැකි අතර පරීක්ෂණයක් සංකීර්ණ වූ විට (දිගු) විස්තරාත්මක නමක් සහ අඩු දේවල් පරීක්ෂා කිරීම වඩාත් අර්ථවත් කරයි.

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.