Ä¿Ç°£¬ÃæÏò¶ÔÏóÈí¼þµÄ²âÊÔÓÃÀýµÄÉè¼Æ·½·¨£¬»¹´¦ÓÚÑо¿¡¢·¢Õ¹½×¶Î¡£Ó봫ͳÈí¼þ²âÊÔ£¨²âÊÔÓÃÀýµÄÉè¼ÆÓÉÈí¼þµÄÊäÈ몲´¦Àíª²Êä³öÊÓͼ»òµ¥¸öÄ£¿éµÄË㷨ϸ½ÚÇý¶¯£©²»Í¬£¬ÃæÏò¶ÔÏó²âÊÔ¹Ø×¢ÓÚÉè¼ÆÊʵ±µÄ²Ù×÷ÐòÁÐÒÔ¼ì²éÀàµÄ״̬¡£
12.4.1 ²âÊÔÀàµÄ·½·¨
Ç°ÃæÒѾ½²¹ý£¬Èí¼þ²âÊÔ´Ó¡°Ð¡ÐͲâÊÔ¡±¿ªÊ¼£¬Öð²½¹ý¶Éµ½¡°´óÐͲâÊÔ¡±¡£¶ÔÃæÏò¶ÔÏóµÄÈí¼þÀ´Ëµ£¬Ð¡ÐͲâÊÔ×ÅÖزâÊÔµ¥¸öÀàºÍÀàÖзâ×°µÄ·½·¨¡£²âÊÔµ¥¸öÀàµÄ·½·¨Ö÷ÒªÓÐËæ»ú²âÊÔ¡¢»®·Ö²âÊԺͻùÓÚ¹ÊÕϵIJâÊÔµÈ3ÖÖ¡£
1. Ëæ»ú²âÊÔ
ÏÂÃæͨ¹ýÒøÐÐÓ¦ÓÃϵͳµÄÀý×Ó£¬¼òÒªµØ˵Ã÷ÕâÖÖ²âÊÔ·½·¨¡£¸ÃϵͳµÄaccount(ÕË»§£©ÀàÓÐÏÂÁвÙ×÷£º
open(´ò¿ª£©£¬setup(½¨Á¢£©£¬deposit(´æ¿î£©£¬withdraw(È¡¿î£©£¬balance(Óà¶î£©£¬summarize(Çåµ¥£©£¬creditLimit(͸֧Ï޶ºÍclose(¹Ø±Õ£©¡£ÉÏÁÐÿ¸ö²Ù×÷¶¼¿ÉÒÔÓ¦ÓÃÓÚaccountÀàµÄʵÀý£¬µ«ÊÇ£¬¸ÃϵͳµÄÐÔÖÊÒ²¶Ô²Ù×÷µÄÓ¦ÓÃÊ©¼ÓÁËһЩÏÞÖÆ£¬ÀýÈ磬±ØÐëÔÚÓ¦ÓÃÆäËû²Ù×÷֮ǰÏÈ´ò¿ªÕË»§£¬ÔÚÍê³ÉÁËÈ«²¿²Ù×÷Ö®ºó²ÅÄܹرÕÕË»§¡£¼´Ê¹ÓÐÕâЩÏÞÖÆ£¬¿É×öµÄ²Ù×÷Ò²ÓÐÐí¶àÖÖÅÅÁз½·¨¡£Ò»¸öaccountÀàʵÀýµÄ×îСÐÐΪÀúÊ·°üÀ¨ÏÂÁвÙ×÷£º
open¡¤setup¡¤deposit¡¤withdraw¡¤close
|
Õâ¾ÍÊǶÔaccountÀàµÄ×îС²âÊÔÐòÁС£µ«ÊÇ£¬ÔÚÏÂÃæµÄÐòÁÐÖпÉÄÜ·¢ÉúÐí¶àÆäËûÐÐΪ£º
open¡¤setup¡¤deposit¡¤£Ûdeposit|withdraw|balance|summarize|creditLimit£Ýn¡¤withdraw¡¤close |
´ÓÉÏÁÐÐòÁпÉÒÔËæ»úµØ²úÉúһϵÁв»Í¬µÄ²Ù×÷ÐòÁУ¬ÀýÈ磺
²âÊÔÓÃÀý#r1:open¡¤setup¡¤deposit¡¤deposit¡¤balance¡¤summarize¡¤withdraw¡¤close
²âÊÔÓÃÀý#r2:open¡¤setup¡¤deposit¡¤withdraw¡¤deposit¡¤balance¡¤creditLimit¡¤withdraw¡¤close
Ö´ÐÐÉÏÊöÕâЩ¼°ÁíÍâһЩËæ»ú²úÉúµÄ²âÊÔÓÃÀý£¬¿ÉÒÔ²âÊÔÀàʵÀýµÄ²»Í¬Éú´æÀúÊ·¡£
2. »®·Ö²âÊÔ
Óë²âÊÔ´«Í³Èí¼þʱ²ÉÓõȼۻ®·Ö·½·¨ÀàËÆ£¬²ÉÓû®·Ö²âÊÔ£¨partition
testing£©·½·¨¿ÉÒÔ¼õÉÙ²âÊÔÀàʱËùÐèÒªµÄ²âÊÔÓÃÀýµÄÊýÁ¿¡£Ê×ÏÈ£¬°ÑÊäÈëºÍÊä³ö·ÖÀ࣬ȻºóÉè¼Æ²âÊÔÓÃÀýÒÔ²âÊÔ»®·Ö³öµÄÿ¸öÀà±ð¡£ÏÂÃæ½éÉÜ»®·ÖÀà±ðµÄ·½·¨¡£
£¨1£© »ùÓÚ״̬µÄ»®·Ö
ÕâÖÖ·½·¨¸ù¾ÝÀà²Ù×÷¸Ä±äÀà״̬µÄÄÜÁ¦À´»®·ÖÀà²Ù×÷¡£ÔÙÒ»´Î¿¼ÂÇaccountÀ࣬״̬²Ù×÷°üÀ¨depositºÍwithdraw£¬¶ø·Ç״̬²Ù×÷ÓÐbalance,
summarizeºÍcreditLimit¡£Éè¼Æ²âÊÔÓÃÀý£¬ÒÔ·Ö±ð²âÊԸıä״̬µÄ²Ù×÷ºÍ²»¸Ä±ä״̬µÄ²Ù×÷¡£ÀýÈ磬ÓÃÕâÖÖ·½·¨¿ÉÒÔÉè¼Æ³öÈçϵIJâÊÔÓÃÀý£º
²âÊÔÓÃÀý#p1:open¡¤setup¡¤deposit¡¤deposit¡¤withdraw¡¤withdraw¡¤close
²âÊÔÓÃÀý#p2:open¡¤setup¡¤deposit¡¤summarize¡¤creditLimit¡¤withdraw¡¤close
²âÊÔÓÃÀý#P1¸Ä±ä״̬£¬¶ø²âÊÔÓÃÀý#P2²âÊÔ²»¸Ä±ä״̬µÄ²Ù×÷£¨ÔÚ×îС²âÊÔÐòÁÐÖеIJÙ×÷³ýÍ⣩¡£
£¨2£© »ùÓÚÊôÐԵĻ®·Ö
ÕâÖÖ·½·¨¸ù¾ÝÀà²Ù×÷ʹÓõÄÊôÐÔÀ´»®·ÖÀà²Ù×÷¡£¶ÔÓÚaccountÀàÀ´Ëµ£¬¿ÉÒÔʹÓÃÊôÐÔbalanceÀ´¶¨Òå»®·Ö£¬´Ó¶ø°Ñ²Ù×÷»®·Ö³É3¸öÀà±ð£º
. ʹÓÃbalanceµÄ²Ù×÷£»
. ÐÞ¸ÄbalanceµÄ²Ù×÷£»
. ²»Ê¹ÓÃÒ²²»ÐÞ¸ÄbalanceµÄ²Ù×÷¡£
È»ºó£¬ÎªÃ¿¸öÀà±ðÉè¼Æ²âÊÔÐòÁС£
£¨3£© »ùÓÚ¹¦ÄܵĻ®·Ö
ÕâÖÖ·½·¨¸ù¾ÝÀà²Ù×÷ËùÍê³ÉµÄ¹¦ÄÜÀ´»®·ÖÀà²Ù×÷¡£ÀýÈ磬¿ÉÒÔ°ÑaccountÀàÖеIJÙ×÷·ÖÀàΪ³õʼ»¯²Ù×÷£¨open,setup£©£¬¼ÆËã²Ù×÷£¨deposit,
withdraw£©£¬²éѯ²Ù×÷£¨balance, summarize,creditLimit£©ºÍÖÕÖ¹²Ù×÷£¨close£©¡£È»ºóΪÿ¸öÀà±ðÉè¼Æ²âÊÔÐòÁС£
3. »ùÓÚ¹ÊÕϵIJâÊÔ
»ùÓÚ¹ÊÕϵIJâÊÔ£¨fault based testing£©Ó봫ͳµÄ´íÎóÍƲⷨÀàËÆ£¬Ò²ÊÇÊ×ÏÈÍƲâÈí¼þÖпÉÄÜÓеĴíÎó£¬È»ºóÉè¼Æ³ö×î¿ÉÄÜ·¢ÏÖÕâЩ´íÎóµÄ²âÊÔÓÃÀý¡£ÀýÈ磬Èí¼þ¹¤³Ìʦ¾³£ÔÚÎÊÌâµÄ±ß½ç´¦·¸´íÎó£¬Òò´Ë£¬ÔÚ²âÊÔSQRT£¨¼ÆËãƽ·½¸ù£©²Ù×÷£¨¸Ã²Ù×÷ÔÚÊäÈëΪ¸ºÊýʱ·µ»Ø³ö´íÐÅÏ¢£©Ê±£¬Ó¦¸Ã×ÅÖؼì²é±ß½çÇé¿ö£º
Ò»¸ö½Ó½üÁãµÄ¸ºÊýºÍÁã±¾Éí¡£ÆäÖС°Áã±¾Éí¡±ÓÃÓÚ¼ì²é³ÌÐòÔ±ÊÇ·ñ·¸ÁËÈçÏ´íÎó£º
°ÑÓï¾äif(x>=0)calculate_square_root(
);
Îóд³Éif(x>0)calculate_square_root(
);
ΪÁËÍƲâ³öÈí¼þÖпÉÄÜÓеĴíÎó£¬Ó¦¸Ã×ÐϸÑо¿·ÖÎöÄ£ÐͺÍÉè¼ÆÄ£ÐÍ£¬¶øÇÒÔںܴó³Ì¶ÈÉÏÒªÒÀ¿¿²âÊÔÈËÔ±µÄ¾ÑéºÍÖ±¾õ¡£Èç¹ûÍƲâµÃ±È½Ï׼ȷ£¬ÔòʹÓûùÓÚ¹ÊÕϵIJâÊÔ·½·¨Äܹ»ÓÃÏ൱µÍµÄ¹¤×÷Á¿·¢ÏÖ´óÁ¿´íÎó£»·´Ö®£¬Èç¹ûÍƲⲻ׼£¬ÔòÕâÖÖ·½·¨µÄЧ¹û²¢²»±ÈËæ»ú²âÊÔ¼¼ÊõµÄЧ¹ûºÃ¡£
12.4.2 ¼¯³É²âÊÔ·½·¨
¿ªÊ¼¼¯³ÉÃæÏò¶ÔÏóϵͳÒԺ󣬲âÊÔÓÃÀýµÄÉè¼Æ±äµÃ¸ü¼Ó¸´ÔÓ¡£ÔÚÕâ¸ö²âÊԽ׶Σ¬±ØÐë¶ÔÀà¼äÐ×÷½øÐвâÊÔ¡£ÎªÁ˾ÙÀý˵Ã÷Éè¼ÆÀà¼ä²âÊÔÓÃÀýµÄ·½·¨£¬ÎÒÃÇÀ©³ä12.4.1С½ÚÒýÈëµÄÒøÐÐϵͳµÄÀý×Ó£¬Ê¹Ëü°üº¬Í¼12.3ËùʾµÄÀàºÍÐ×÷¡£Í¼ÖмýÍ··½Ïò´ú±íÏûÏ¢µÄ´«µÝ·½Ïò£¬¼ýÍ·ÏßÉϵıê×¢¸ø³öÁË×÷ΪÓÉÏûÏ¢ËùÔ̺¬µÄÐ×÷µÄ½á¹û¶øµ÷ÓõIJÙ×÷¡£
ºÍ²âÊÔµ¥¸öÀàÏàËÆ£¬²âÊÔÀàÐ×÷¿ÉÒÔʹÓÃËæ»ú²âÊÔ·½·¨ºÍ»®·Ö²âÊÔ·½·¨£¬ÒÔ¼°»ùÓÚÇé¾°µÄ²âÊÔºÍÐÐΪ²âÊÔÀ´Íê³É¡£
1. ¶àÀà²âÊÔ
KiraniºÍTsai½¨ÒéʹÓÃÏÂÁв½Ö裬ÒÔÉú³É¶à¸öÀàµÄËæ»ú²âÊÔÓÃÀý¡£
. ¶Ôÿ¸ö¿Í»§À࣬ʹÓÃÀà²Ù×÷·ûÁбíÀ´Éú³ÉһϵÁÐËæ»ú²âÊÔÐòÁС£ÕâЩ²Ù×÷·ûÏò·þÎñÆ÷ÀàʵÀý·¢ËÍÏûÏ¢
. ¶ÔËùÉú³ÉµÄÿ¸öÏûÏ¢£¬È·¶¨Ð×÷ÀàºÍÔÚ·þÎñÆ÷¶ÔÏóÖеĶÔÓ¦²Ù×÷·û¡£
. ¶Ô·þÎñÆ÷¶ÔÏóÖеÄÿ¸ö²Ù×÷·û£¨ÒѾ±»À´×Ô¿Í»§¶ÔÏóµÄÏûÏ¢µ÷Óã©£¬È·¶¨´«µÝµÄÏûÏ¢¡£
. ¶Ôÿ¸öÏûÏ¢£¬È·¶¨ÏÂÒ»²ã±»µ÷ÓõIJÙ×÷·û£¬²¢°ÑÕâЩ²Ù×÷·û½áºÏ½ø²âÊÔÐòÁÐÖС£
. ΪÁË˵Ã÷ÔõÑùÓÃÉÏÊö²½ÖèÉú³É¶à¸öÀàµÄËæ»ú²âÊÔÓÃÀý£¬¿¼ÂÇBankÀàÏà¶ÔÓÚATMÀࣨ¼ûͼ12.3£©µÄ²Ù×÷ÐòÁУº
verifyAcct¡¤verifyPIN¡¤£Û£¨verifyPolicy¡¤withdrawReq£©|depositReq|acctInfoREQ£Ýn |
¶ÔBankÀàµÄËæ»ú²âÊÔÓÃÀý¿ÉÄÜÊÇ£º
²âÊÔÓÃÀý#r3:verifyAcct¡¤verifyPIN¡¤depositReq
ΪÁË¿¼ÂÇÔÚÉÏÊöÕâ¸ö²âÊÔÖÐÉæ¼°µÄÐ×÷Õߣ¬ÐèÒª¿¼ÂÇÓë²âÊÔÓÃÀý#r3ÖеÄÿ¸ö²Ù×÷Ïà¹ØÁªµÄÏûÏ¢¡£Bank±ØÐëºÍValidationInfoÐ×÷ÒÔÖ´ÐÐverifyAcctºÍverifyPIN,Bank»¹±ØÐëºÍAccountÐ×÷ÒÔÖ´ÐÐdepositReq¡£Òò´Ë£¬²âÊÔÉÏÃæÌáµ½µÄÐ×÷µÄвâÊÔÓÃÀýÊÇ£º
²âÊÔÓÃÀý#r4:verifyAcctBank¡¤£ÛvalidAcctValidationInfo£Ý¡¤verifyPINBank¡¤£ÛvalidPINvalidationInfo£Ý¡¤depositReq¡¤£Ûdepositaccount£Ý
¶à¸öÀàµÄ»®·Ö²âÊÔ·½·¨ÀàËÆÓÚµ¥¸öÀàµÄ»®·Ö²âÊÔ·½·¨£¨¼û12.4.1½Ú£©¡£µ«ÊÇ£¬¶ÔÓÚ¶àÀà²âÊÔÀ´Ëµ£¬Ó¦¸ÃÀ©³ä²âÊÔÐòÁÐÒÔ°üÀ¨ÄÇЩͨ¹ý·¢Ë͸øÐ×÷ÀàµÄÏûÏ¢¶ø±»µ÷ÓõIJÙ×÷¡£ÁíÒ»ÖÖ»®·Ö²âÊÔ·½·¨£¬¸ù¾ÝÓëÌض¨ÀàµÄ½Ó¿ÚÀ´»®·ÖÀà²Ù×÷¡£Èçͼ12.3Ëùʾ£¬BankÀà½ÓÊÕÀ´×ÔATMÀàºÍCashierÀàµÄÏûÏ¢£¬Òò´Ë£¬¿ÉÒÔͨ¹ý°ÑBankÀàÖеķ½·¨»®·Ö³É·þÎñÓÚATMµÄºÍ·þÎñÓÚCashierµÄÁ½ÀàÀ´²âÊÔËüÃÇ¡£»¹¿ÉÒÔÓûùÓÚ״̬µÄ»®·Ö£¨¼û12.4.1½Ú£©£¬½øÒ»²½¾«»¯»®·Ö¡£
2. ´Ó¶¯Ì¬Ä£Ð͵¼³ö²âÊÔÓÃÀý
ÔÚµÚ9ÕÂÖÐÒѾ½²¹ý£¬ÔõÑùÓÃ״̬ת»»Í¼×÷Ϊ±íʾÀàµÄ¶¯Ì¬ÐÐΪµÄÄ£ÐÍ¡£ÀàµÄ״̬ͼ¿ÉÒÔ°ïÖúÎÒÃǵ¼³ö²âÊÔ¸ÃÀࣨ¼°ÓëÆäÐ×÷µÄÄÇЩÀࣩµÄ¶¯Ì¬ÐÐΪµÄ²âÊÔÓÃÀý¡£Í¼12.4¸ø³öÁËÇ°ÃæÌÖÂÛ¹ýµÄaccountÀàµÄ״̬ͼ£¬´Óͼ¿É¼û£¬³õʼת»»¾¹ýÁËempty
acctºÍsetup acctÕâÁ½¸ö״̬£¬¶øÀàʵÀýµÄ´ó¶àÊýÐÐΪ·¢ÉúÔÚworking acct״̬ÖУ¬×îÖÕµÄwithdrawºÍcloseʹµÃaccountÀà·Ö±ðÏònonworking
acct״̬ºÍdead acct״̬ת»»¡£
ͼ12.4 accountÀàµÄ״̬ת»»Í¼
Éè¼Æ³öµÄ²âÊÔÓÃÀýÓ¦¸Ã¸²¸ÇËùÓÐ״̬£¬Ò²¾ÍÊÇ˵£¬²Ù×÷ÐòÁÐÓ¦¸ÃʹµÃaccountÀàʵÀý±éÀúËùÓÐÔÊÐíµÄ״̬ת»»£º
²âÊÔÓÃÀý#s1:open¡¤setupAccnt¡¤deposit(initial)¡¤withdraw(final)¡¤close
Ó¦¸Ã×¢Ò⣬ÉÏÃæÁгöµÄÐòÁÐÓë12.4.1½ÚÌÖÂÛµÄ×îС²âÊÔÐòÁÐÏàͬ¡£Ïò×îСÐòÁÐÖмÓÈ븽¼ÓµÄ²âÊÔÐòÁУ¬¿ÉÒԵóöÆäËû²âÊÔÓÃÀý£º
²âÊÔÓÃÀý#s2:open¡¤setupAccnt¡¤deposit(initial)¡¤deposit¡¤balance¡¤credit¡¤withdraw(final)¡¤close
²âÊÔÓÃÀý#s3:open¡¤setupAccnt¡¤deposit(initial)¡¤deposit¡¤withdraw¡¤accntInfo¡¤withdraw(final)¡¤close
»¹¿ÉÒÔµ¼³ö¸ü¶à²âÊÔÓÃÀý£¬ÒÔ±£Ö¤¸ÃÀàµÄËùÓÐÐÐΪ¶¼±»Êʵ±µØ²âÊÔÁË¡£ÔÚÀàµÄÐÐΪµ¼ÖÂÓëÒ»¸ö»ò¶à¸öÀàÐ×÷µÄÇé¿öÏ£¬Ó¦¸ÃʹÓöà¸ö״̬ͼȥ¸ú×ÙϵͳµÄÐÐΪÁ÷¡£
|