Ö÷Òª½áÂÛ
1.²âÊÔ×Ô¶¯»¯ÊÇÒ»ÖÖÍ×ÉÆ¼Ç¼²¢¾ß±¸ÇåÎú¶¨ÒåµÄ·½·¨£¬½è´Ë¿ÉÒÔ·´¸´ÔËÐÐͬһÌײâÊԽű¾¡£È»¶øÓë´Ëͬʱ£¬ÕâÖÖ²âÊÔ×Ô¶¯»¯½Å±¾»¹¿É½øÒ»²½ÊµÏÖÆäËû¸üÓд´ÒâµÄÓ¦Óá£
2.ËäÈ»×Ô¶¯»¯µÄ·ÖÎö˼άºÜÄÑʵÏÖ£¬µ«ÎÒÃǵĽű¾ÖÐÎÞÒÉ¿ÉÒԾ߱¸Ò»¶¨µÄËæ»úÐÔ¡£
3.²âÊÔÖС°Ëæ»úÐÔ¡±µÄ¾ßÌå³Ì¶È¸÷Ò죺´ÓËæ»úÊäÈëºÍ²ÎÊý£¬ÔÙµ½È«ÃæµÄËæ»ú²âÊÔÓÃÀý£¬Çé¿ö²»Ò»¶ø×ã¡£
4.ºÜÄѽ«Ëæ»ú²½ÖèÓëÏàÓ¦µÄÑéÖ¤´ëʩƥÅäÆðÀ´£¬µ«ÎÒÃÇ¿ÉÒÔʹÓò»Í¬µÄÑéÖ¤²ßÂÔÈ·±£Ó¦ÓóÌÐòÄܹ»°´ÕÕÔ¤ÆÚ¹¤×÷¡£
5.Ëæ»ú²âÊÔÎÞ·¨È¡´úÖ÷¹Û»ò´«Í³²âÊÔ¼¼Êõ£¬µ«¿ÉÔڻعé²âÊÔ¹ý³ÌÖÐÈÃÎÒÃǶÔÓ¦ÓóÌÐòÖÊÁ¿¸üΪ×ÔÐÅ¡£
ÕýÈçCem KanerÔÚËûµÄһƬ½Ì³ÌÖÐËù˵£¬Ì½Ë÷ʽ²âÊÔÊÇÒ»ÖÖÇ¿µ÷¸öÈË×ÔÓɶȺ͸öÌå²âÊÔÈËÔ±ÔðÈεÄÈí¼þ²âÊÔ·½Ê½£¬¿Éͨ¹ý½«Óë²âÊÔÓйصÄѧϰ¡¢²âÊÔÉè¼Æ¡¢²âÊÔÖ´ÐУ¬ÒÔ¼°²âÊÔ½á¹ûµÄÀí½âÊÓ×÷һϵÁб˴ËÌáЯ£¬ÔÚÏîÄ¿ÍêÕû¹ý³ÌÖв¢ÐÐÖ´ÐеĻ£¬½è´Ë¶Ô²âÊÔ¹¤×÷µÄ³É¹û½øÐгÖÐø²»¶ÏµÄÓÅ»¯¡£
¼ò¶øÑÔÖ®£¬°´ÕÕËûµÄ¶¨Ò壬ÖÚËùÖÜÖªµÄ¡°Èí¼þÖÊÁ¿ºÍÏû·ÑÕߣ¨Software
Quality and Consumer£©¡±Ö÷ÕÅΪ²âÊÔÈËÔ±ÌṩÁËÔÚÏîÄ¿Öа´ÕÕ×Ô¼ºÈÏΪºÏÊʵķ½Ê½½øÐвâÊÔµÄ×ÔÓɺÍÔðÈΡ£ÑÐò½¥½øµØ¼Ç¼ËùÓй淶£¬ÕâÖÖ×ö·¨ÒѾ²»ÔÙÊDZØÐ룬ÔÒòÒ²ºÜ¼òµ¥£¬´´Òâ¹ý³Ì»ù±¾Ê½ÎÞ·¨¼Ç¼µÄ£¬¶Ô°É£¡ÔÚËûÔÚTestBash
3´ó»áÉÏÓйزâÊÔÖоö²ß¹¤×÷µÄÑݽ²ÖУ¬Mark Tomlinson¶ÔϵͳµÄÖ÷¹ÛÀí½âÕâÒ»Ïë·¨±íʾ֧³Ö¡£Èç¹û½«Æä×÷Ϊ̽Ë÷ʽµÄ£¬»ùÓÚ·çÏպͻùÓڻỰµÄ²âÊÔ¼¼Êõ£¨¿É½«Æä³ÆÖ®ÎªÖ÷¹Û¼¼Êõ£©µÄºËÐÄ£¬²âÊÔÕß½«ÄÜÖ÷¹ÛµØÈ·¶¨Ó¦ÓóÌÐòÖпÉÄܵ¼ÖÂʧ°ÜµÄÖØÒª»·½Ú¡£
¿ÉÒԲο´ÕâÕÅÐýתÎèÕߵ͝Á¦Ñ§´í¾õʾÒâͼ£º²»Í¬Ê±¿ÌÄÚ£¬ÎÒÃǵĴóÄÔ»òÅжÏÎèÕßÒÔÒ»¸öÌØ¶¨µÄ˳ÐòÐýת£ºÏò×ó»òÏòÓÒ¡£²âÊÔ¹¤×÷Ò²»áÃæÁÙÀàËÆÇé¿ö£ºÎÒÃÇ¿ÉÄÜ¿¼ÂÇʹÓò»Í¬Á÷³ÌʵÏÖÏàͬ½á¹û£¬»òÏàͬÁ÷³Ìµ¼ÖÂË䲻ͬµ«·ûºÏÔ¤ÆÚµÄ½á¹û£¬»òÕߣ¬àÅ¡¡ÈÎºÎÆäËû½á¹û¡£
Õû¸ö²âÊÔÖ´Ðйý³ÌËùÓõÄÖ÷¹Û¼¼Êõ¿ÉÒÔͨ¹ý¸÷ÖÖ³ÉÊìµÄ·ÖÎö˼άºÍ¡°Ëæ»úÐÔ¡±µÄÓÅÊÆ¼ÓÒÔÒýµ¼¡£ÆäÖкóÕßÊÇÒ»¸ö¸üÖØÒªµÄÒªËØ£¬±¾ÎÄ,½«½Ò¶×Ô¶¯»¯²âÊÔÖС°Ëæ»ú»¯¡±µÄÉñÃØÃæÉ´¡£
Ã÷È·Æð¼û£¬²âÊÔ×Ô¶¯»¯²¢²»ÊÇÒ»ÖÖ´´×÷»î¶¯£¬¶øÊÇÒ»ÖÖÍ×ÉÆ¼Ç¼ÇÒÇåÎú¶¨ÒåµÄ·½·¨£¬½è´Ë¿ÉÒÔÈÃͬһÌײâÊԽű¾·´¸´ÔËÐÐʹÓá£ÎÊÌâÔÚÓÚ£¬ÎÒÃǸÃÈçºÎʹÓÃÕâЩ²âÊÔ×Ô¶¯»¯½Å±¾£¬Í¬Ê±¸ü¸ü¾ß´´Ò⣿
²úÆ·ÖÊÁ¿ËæÊ±¼ä¶ø±ä
²úÆ·ÖÊÁ¿Ä£ÐͺÍËù¼Ç¼µÄ²âÊÔ³¡¾°¿Éͨ¹ýÌØ¶¨µÄ״̬»úÒÔ¼°Íâ²¿ÌØÐÔ¼ÓÒÔ¸ÅÀ¨¡£ÕâÒ»µãÕýÊDzâÊÔ×Ô¶¯»¯ËùÈȰ®µÄ¡£²âÊÔ×Ô¶¯»¯Ëù¹Ø×¢µÄÕýÊǸù¾ÝһЩ·Ç³£¾ßÌåµÄ²âÊÔÐèÇ󼯱àд²âÊԽű¾¡£
ÕâÖÖ×ö·¨ºÜÊʺϹ¦ÄÜÐԻعé²âÊÔ£ºÇåÀí¡¢´òÄ¥¡¢È«Ð·¢²¼£¬ËæºóÓÉ¿ª·¢´óʦ´´½¨¡£¹ÃÇÒ½«Æä³ÆÖ®ÎªShiny°É¡£

µ«¾¹ýÒ»¶ÎÈß³¤¡¢¾«Æ£Á¦½ßµÄ¿ª·¢Ê±¼äÏߺ󣨰éËæ×Ŷà´Î·¢²¼£¬³¤´ïÊýÄêµÄÖ§³Ö£¬Êý°Ù¸öBugµÄÐÞ¸´ºÍ¹¦ÄÜÇëÇóµÈ£©£¬ÏµÍ³»á±ä³ÉʲôÑù£¿

ȷʵ£¬´ÓÓû§½Ó¿ÚµÄ½Ç¶ÈÀ´¿´£¬¿ÉÄܷdz£ÀàËÆÓÚÄÇÖÖËäÈ»ÀϾɵ«ÒÀÈ»¹¤×÷Á¼ºÃµÄϵͳ£¬µ«±íÃæÖ®Ï£¬ÕâÖÖÇé¿öͨ³£±»³ÆÖ®Îª¡°´óÄàÇò¡±¡£
¶ÔÓÚÕâÑùµÄϵͳ£¬¾ÍËãʹÓÃ×Ô¶¯»¯½Å±¾£¬¾ßÌ幦ÄܵÄÄÄЩ²¿·ÖÒÀÈ»ÄÜ»ñµÃºÍ×î³õÉú²ú·¢²¼Ê±Í¬µÈ³Ì¶ÈµÄ²âÊÔ£¿Ò²ÐíÖ»ÓÐ30%-80%µÄ²¿·Ö¿ÉÒÔ°É¡£ÄÇôÆäËû¹¦ÄÜÄØ£¿²»ÖªµÀ¡£
µ±È»£¬´Ëʱ×î¼òµ¥µÄ°ì·¨¿ÉÄÜÊÇÉó²éËùÓÐÏÖÓеÄÖÊÁ¿Îĵµ£¬¸ÄÁ¼ÔÓеij¡¾°£¬£¨¼´Ê±£©ÒýÈëеij¡¾°µÈ¡£µ«¿¼Âǵ½ÒµÄڵľÑé£¬Ëæ×ÅÒÅÁôϵͳµÄ¹æÔò²âÊÔÎĵµÖð½¥¹ýʱ£¬ËäÈ»¸üй¤×÷ÒÀÈ»ÖØÒª£¬µ«ÕâÖÖ×ö·¨²¢·Ç×ÜÊÇ¿ÉÐС£
Ϊ²âÊÔ×Ô¶¯»¯½â¾ö·½°¸´òÔìÍ×ÉÆ¶¨ÒåµÄ¼Ü¹¹
ÏÂͼÊÇÒ»¸ö¾«¼òµÄ²âÊÔ×Ô¶¯»¯½â¾ö·½°¸µÄ·¶Àýͼ£¬ÆäÖаüº¬Èý²ã£¨ÀàËÆÓÚ»ùÓÚUI¡¢ÒµÎñÂß¼ºÍÊý¾Ý¿âʵÏÖÒµÎñÓ¦ÓóÌÐòµÄ·½·¨£©£ºUI/APIÓ³Éä¡¢ÒµÎñÂã»ú£¬ÒÔ¼°²âÊԽű¾¡£

1.UI/APIÓ³Éä´ú±í¸Ã½â¾ö·½°¸µÄ¼¼Êõ¶Ë£ºUI×Ô¶¯»¯¹¤¾ß³Ì¶ÈÓë×Ô¶¯»¯ÏµÍ³µÄUI¸ß¶È°ó¶¨£¬ÕâÒ»²ãËùÓõķ½·¨¿ÉÄÜÀàËÆÓÚfocus()¡¢type_text()¡¢click_button()¡£
2.ÒµÎñÂß¼ÊÇÒ»ÖÖÓÉÀ´×ÔÒµÎñ²Ù×÷µÄ¹Ø¼ü×Ö×é³ÉµÄ¿â¡£ÒµÎñ²Ù×÷ÊÇÖ¸¿ÉÒÔÔÚÓ¦ÓóÌÐòÖÐÖ´ÐеÄij¸ö²½Ö裨Èçlogin()¡¢create_user()¡¢validate_user_created()£©¡£
3.²âÊԽű¾¸ºÔðÖ´ÐÐһϵÁÐÁ´ÔÙÒ»ÆðµÄÒµÎñ²½Öè¡£
ÉîÈëÁ˽â¶ÀÁ¢²âÊÔ£¨Separate Test£©
¿¼ÂÇÕâÑùÒ»ÖÖ¼òµ¥µÄ¼Ç¼²âÊÔÓÃÀý£ºÖ´ÐÐÕâ¸ö ¨C ÑéÖ¤Õâ¸ö£¬Ö´ÐÐÄǸö ¨C ÑéÖ¤ÄǸö£¬Ö´ÐÐijij ¨C Ñé֤ijij¡£ºÏ¸ñµÄ×Ô¶¯»¯¿ª·¢Õ߻ᴴ½¨Ò»ÏµÁÐÀàËÆÏÂÃæÕâÑùµÄ·½·¨£º
do_that(), verify_that(), do_this(), verify_this(), do_bla(). |
²âÊԽű¾»á°´ÕÕijÖÖÌØ¶¨µÄ˳Ðòµ÷ÓÃÕâÑùµÄ·½·¨£º
mySpecifiedCase_1(){ do_that(); verify_that(); do_this(); verify_this(); do_bla(); verify_that(); verify_this(); } |
ÓÉÓڽű¾Ã»ÕÒµ½ÈκÎBug£¬ÎÒÃÇÔÚÄ³Ð©ÌØ¶¨½×¶ÎµÄÈÎÎñ¾Í±ä³ÉÈÃËü²éÕÒDZÔÚµÄϵͳÎÊÌâ¡£
Ëæ»ú»¯·½·¨1 ¨C ÂãËæ»ú
´ÓÒµÎñ½Ç¶ÈÀ´Ëµ£¬×Ô¶¯»¯½â¾ö·½°¸ÖÐÈκβ½Öè¶¼ÊÇÓÐЧµÄ¡£Òò´Ë̽Ë÷ʽ²âÊÔʹµÃÎÒÃÇ¿ÉÒÔ×ÔÓɵØÔÚÈκÎʱ¼äµãÖ´ÐÐÈκβ½Öè¡£ÕâЩ²½ÖèµÄ»ì´îÒ²ºÜ¼òµ¥¡£ÎÒÃÇÐèÒªÔÚÖ´ÐйýÉÙÊý¼¸´Î²âÊÔºó£¬×ñÑÒÑʵÏÖ²½Öè´òÔì¡°Ëæ»ú¡±²âÊÔÓÃÀý¡£
ÊäÈ룺½â¾ö·½°¸ÖÐËùÓÐÒµÎñ·½·¨µÄÊýÁ¿£¬ÒªÉú³ÉµÄ²âÊԽű¾ÊýÁ¿£¬Éú³Éÿ¸ö²âÊԽű¾ËùÐè²½ÖèÊýÁ¿¡£
Êä³ö£ºÀàËÆÓÚÏÂÁнű¾£º
myRandomCase_1(){ do_that(); do_bla(); verify_this(); } |
ºÜÃ÷ÏÔ£¬¾ÍËãijЩ²âÊÔÓÃÀý¿ÉÄÜ£¨ÉõÖÁÒѾ£©³É¹¦ÔËÐУ¬´ó²¿·ÖÒÀÈ»»áʧ°Ü£¬ÒòΪ´óÁ¿ÓÃÀýʵ¼ÊÉÏÊÇÔÚÊÔͼÍê³ÉÎÞЧ²Ù×÷¡£Èç¹û»¹Ã»Ö´Ðйýdo_this()£¬ÄÇôverify_this()ÎÞÒÉ»áʧ°Ü¡£
Ëæ»ú»¯·½·¨2 ¨C ÓÐÏȾöÌõ¼þµÄËæ»ú·½·¨
ÕâÖÖ·½Ê½µÄÏë·¨ÔÚÓÚÖ»ÓÐÔÚ¹¤×÷Á÷ÖÐÒѰüº¬ÏȾõ²½Öèºó£¬²ÅÏò¹¤×÷Á÷ÖмÓÈëºóÐø²½Ö裬µ«ÕâÐèÒª¶Ô´úÂë¿â½øÐбØÒªµÄÀ©³ä£¬È·±£²âÊÔ°¸ÀýÉú³ÉÆ÷¿ÉÒÔÀí½â²¢±£Ö¤×¼È·µÄÐòÁС£Îª´Ë¿ÉÔÚ·½·¨Ö®ÉÏÌí¼ÓÌØÐÔ»ò×¢½â£º
@Reguires(do_this) verify_this() {¡} |
ÕâÑùÎÒÃǾ͵õ½ÁË£º
myRandomCase_2(){ do_bla(); do_this(); verify_this(); //can be added, because prerequisite step is already in test } |
ÕâÊÇÒ»ÖÖ¸ü¿ÉÔ¤²âµÄ·½·¨¡£µ«Èç¹ûdo_this()ºÍverify_that()ÐèÒªÔÚͬһ¸öPage1ÉÏÖ´ÐУ¬¶ødo_bla()ÒѾµ½ÁËPage2ÓÖ¸ÃÔõÑù£¿
´ËʱÎÒÃÇÃæÁÙÒ»¸öÐÂÎÊÌ⣺verify_that()¾ø¶Ô»áʧ°Ü£¬ÒòΪÎÞ·¨ÕÒµ½Ö´ÐÐËùÐèµÄ¿ØÖÆ/ÉÏÏÂÎÄ¡£
È˹¤Ëæ»ú»¯·½·¨3 ¨C ÉÏÏÂÎĸÐÖª
²âÊÔÉú³ÉÆ÷±ØÐëÁ˽âÖ´ÐÐλÖÃÉÏÏÂÎÄ£¨ÀýÈçWeb¿ª·¢Öеġ°Ò³Ã桱£©¡£µ±È»£¬´ËʱҲ¿ÉÒÔͨ¹ýÌØÐÔ/×¢½âΪÉú³ÉÆ÷Ìṩ»îÔ¾ÉÏÏÂÎÄ¡£
@ReguiresContext(pageThis) verify_this() {¡} @ReguiresContext(pageThis) do_this() {¡} @ReguiresContext(pageThis) @MovesContextTo(pageThat) do_bla() {¡} |
±¾ÀýÖÐdo_this()ºÍverify_this()²»»á·ÅÔÚ½«ÉÏÏÂÎĸÄΪpageThatµÄ·½·¨£¬»òÉÏÏÂÎÄΪpageThatµÄ·½·¨Ö®ºó¡£
Òò´ËÎÒÃÇ¿ÉÒԵõ½Ò»¸öÀàËÆÏÂÃæÕâÑùµÄ²âÊԽű¾£º
myRandomCase_3(){ do_this(); do_bla(); do_that(); } |
»òÕßÒ²¿ÉÒÔͨ¹ý·½·¨Á´ÊµÏÖ¡£¼ÙÉèÒµÎñ·½·¨·µ»ØµÄ¶ÔÏóÎªÒ³Ãæ£¬²âÊÔ°¸ÀýÉú³ÉÆ÷»á³ÖÐø×·×ÙÖ´ÐС°²½Ö衱ǰºóä¯ÀÀÆ÷ÖÐÏÔʾµÄÒ³Ãæ£¬Òò´Ë¿ÉÒÔÈ·¶¨ÐèÒªµ÷ÓÃÑéÖ¤»ò¡°²½Ö衱·½·¨µÄÕýÈ·Ò³Ãæ¡£ÕâÖÖ·½·¨ÐèÒª¶îÍâ¼ì²éÒÔÑéÖ¤Á÷³ÌÊÇ·ñÕýÈ·£¬µ«Õâ¸ö²Ù×÷¿ÉÒÔÎÞÐë×¢½âʵÏÖ¡£
ɸѡǡµ±µÄÓÃÀý
ÖÁ´Ë½éÉܵķ½·¨ÒѾ¿ÉÒÔÉú³ÉÏ൱´óÁ¿µÄ²âÊÔÓÃÀý¡£
Ö÷ÒªÎÊÌâÔÚÓÚ£¬ÑéÖ¤¹ý³Ì±¾Éí£¬ÒÔ¼°Ñé֤ʧ°ÜµÄ²âÊÔ³¡¾°ÊÇ·ñÊÇÓ¦ÓóÌÐòÄÚµÄBug£¬¶ø·Ç×Ô¶¯»¯²âÊԽű¾Âß¼µ¼Öµģ¬ÕâЩ¹¤×÷Ò²ÐèÒªºÄ·Ñ´óÁ¿Ê±¼ä¡£
Òò´Ë¿ÉÒÔʵÏÖÒ»ÖÖ¡°Ô¤ÑÔ¡±À࣬½è´ËÔ¤²âËù»ñµÃµÄ½á¹ûÊÇ·ñÂúÒ⣬»òÊÇ·ñ´ú±íÈκδíÎóÐÅÏ¢£¬²¢ÇÒ±ØÒªÊ±¿É½øÐкóÐø·ÖÎö¡£È»¶ø±¾ÀýÎÒÃÇÑ¡ÔñÁËÒ»¸öÂÔ΢²»Í¬µÄ·½·¨¡£
¿ÉÒÔͨ¹ýÏÂÁÐÕâÒ»Ì×¹æÔò´ú±íÓ¦ÓóÌÐòµÄʧ°ÜÊÇBugÒýÆðµÄ£º
1.500´íÎó»òÀàËÆÒ³Ãæ
2.JavaScript´íÎó
3.¡°Î´Öª´íÎó¡±»òÒòΪÎóÓÃÔì³ÉµÄÀàËÆµÄ´íÎóÐÅÏ¢
4.Ó¦ÓóÌÐòÈÕÖ¾ÖÐÓйØÒì³£ºÍ/»ò´íÎóÇé¿öµÄÐÅÏ¢
5.·¢ÏÖÓëÈÎºÎÆäËû²úÆ·ÓйصĴíÎó
±¾ÀýÖУ¬¿ÉÔÚÿ¸ö²½ÖèÖ´ÐÐÍê±ÏºóÑéÖ¤Ó¦ÓóÌÐò״̬¡£Òò´Ë×Ô¶¯Éú³ÉµÄ½Å±¾¿´ÆðÀ´ÊÇÕâÑùµÄ£º
myRandomCase_3(){ do_this(); validate_standard_rules(); do_bla(); validate_standard_rules(); do_that(); validate_standard_rules(); } |
ÆäÖÐvalidate_standard_rules()·½·¨¿ÉÒÔËÑË÷ÉÏÎÄÌáµ½µÄ¸÷ÖÖÎÊÌâ¡£
×¢Ò⣺ͨ¹ýÓëOOP½áºÏ£¬ÕâÖÖ·½·¨»áÏԵøüΪǿ´ó£¬¿ÉÒÔ¼ì²â³öʵ¼ÊµÄBug¡£ÔÚPage Object³¬ÀàʵÏÖ³£¹æ¼ì²éÐèÒª²éÕÒ¡°³£¹æÎÊÌ⡱£¬ÀýÈçJavaScript´íÎó¡¢ÈÕÖ¾ÖеÄÓ¦ÓóÌÐò´íÎóµÈ¡£¶ÔÓÚÓëÌØ¶¨Ò³ÃæÓйصĺÏÀí¼ì²é£¬¿ÉÒÔÈÆ¹ýÕâÖÖ·½·¨¶îÍâÔö¼ÓÕë¶Ô¾ßÌåÒ³ÃæµÄ¼ì²é¡£
ʵÑé
ΪÁ˽øÐÐʵÑ飬ÎÒÃǾö¶¨Ê¹Óù«¿ªµÄÓʼþϵͳ¡£¿¼Âǵ½GmailºÍYahooµÄÁ÷Ðжȣ¬ÕâЩϵͳÖÐËùÓдæÔÚµÄBug¶¼Òѱ»·¢ÏֵĿÉÄÜÐÔÏ൱¸ß¡£Òò´ËÎÒÃÇÑ¡ÔñÁËProtonMail¡£
Taking Over Random
¼ÙÉè×Ô¶¯»¯½â¾ö·½°¸ÒѾ¾Í룬ÎÒÃÇ¡°²ÉÓá±ÁËShinyϵͳµÄ×Ô¶¯»¯²âÊÔ»úÖÆ£ºÊ×ÏȽ¨Á¢Ò»¸öͨÓõÄJava/Selenium²âÊÔÏîÄ¿£¬ÆäÖаüº¬¼¸¸öʹÓÃPage
ObjectģʽʵÏÖµÄðÑ̲âÊÔ¡£Ëæºó°´ÕÕ×î¼Ñʵ¼ù£¬ËùÓÐÒµÎñ·½·¨¿ÉÒÔ·µ»ØÒ»¸öеÄPage Object£¨Õë¶ÔÒµÎñ·½·¨½áÊøÊ±ÒÀÈ»ÏÔʾÔÚä¯ÀÀÆ÷ÖеÄÒ³Ãæ£©»òµ±Ç°Page
Object£¬³ý·ÇÒ³Ãæ±»¸ü¸Ä¡£
Ϊ½øÐÐ×Ô¶¯»¯Ì½Ë÷ʽ²âÊÔ£¬ÎÒÃÇÔö¼ÓÁ˰üº¬ÔÚexplr.core°üÖеÄÀ࣬ÆäÖÐ×î¸ÐÐËȤµÄµ±ÊôTestCaseGeneratorºÍTesCaseExecutor¡£
TestCaseGenerator
ΪÁËÉú³Éеġ°Ëæ»ú¡±²âÊÔÓÃÀý£¬¿ÉÒÔͨ¹ýTestCaseGeneratorÀàµ÷ÓÃÁ½¸ögenerateTestCase·½·¨Ö®Ò»¡£ÕâÁ½¸ö·½·¨¶¼ÄÜÒÔ²ÎÊýµÄ·½Ê½½ÓÊÜ´ú±íËùÉú³É²âÊÔÓÃÀýÖС°²½ÖèÑéÖ¤¶Ô¡±ÊýÁ¿µÄÕûÊý¡£µÚ¶þ¸ö·½·¨»¹¿É¶îÍâ½ÓÊÜÒ»¸ö´ú±íҪʹÓõġ°ÑéÖ¤²ßÂÔ¡±ÊýÁ¿µÄ²ÎÊý£¨µÚÒ»¸ö·½·¨Ê¹ÓÃĬÈϲßÂÔ£¬±¾ÀýΪUSE_PAGE_SANITY_VERIFICATIONS£©¡£
ÑéÖ¤²ßÂÔ´ú±íÔÚÏò²âÊÔÓÃÀýÌí¼Ó¡°¼ì²é¡±²½ÖèʱËùÓõķ½·¨¡£Ä¿Ç°ÎÒÃÇÓÐÁ½¸öÑ¡Ï
1.USE_RANDOM_VERIFICATIONS£ºµÚÒ»¸ö£¬Í¬Ê±Ò²ÊÇ×îÃ÷ÏԵIJßÂÔ¡£¸Ã²ßÂÔµÄÏë·¨ÔÚÓÚ£¬Ê¹ÓÃÀ´×ÔÒ³¶ÔÏóµÄµ±Ç°ÑéÖ¤·½·¨¡£µ«²»×ãÖ®´¦ÔÚÓÚÑÏÖØÒÀÀµÉÏÏÂÎÄ¡£ÀýÈ磺ÎÒÃÇËæ»úÑ¡ÔñÁËÒ»¸ö·½·¨À´ÑéÖ¤ÌØ¶¨Ö÷ÌâµÄÏûÏ¢ÊÇ·ñ´æÔÚ¡£Ê×ÏÈ£¬ÎÒÃDZØÐëÖªµÀÒª²éÕÒÄĸöÖ÷Ì⡣Ϊ´ËÎÒÃÇÒýÈëÁË@Default×¢½âºÍDefaultTestDataÀà¡£DefaultTestData°üº¬µÄ³£¹æ²âÊÔÊý¾Ý¿ÉÓÃÓÚËæ»ú²âÊÔ¡£@Default×¢½â¿ÉÓÃÓÚ½«¸ÃÊý¾Ý°ó¶¨¸øÌض¨µÄ·½·¨²ÎÊý¡£ËæºóÎÒÃÇÐèҪȷ±£°üº¬¸ÃÖ÷ÌâµÄÏûÏ¢ÏÈÓÚÑéÖ¤²Ù×÷¾ÍÒÑ´æÔÚ£¨¿ÉÔÚÖ´Ðиù淶µÄ¹ý³ÌÖУ¬»ò֮ǰµÄÈκβâÊÔ¹ý³ÌÖд´½¨£©¡£Îª´Ë¿Éͨ¹ý@Depends×¢½â¸æËßTestCaseGenerator¼ì²éÌØ¶¨·½·¨µÄµ÷Óã¬Èç¹ûµ±Ç°²½Öè֮ǰûÕÒµ½ÔòÖ±½ÓÌí¼Ó¡£´ËÍâÎÒÃÇ»¹ÐèҪȷ±£ÏûϢûÓÐÔÚÑé֤֮ǰɾ³ý¡£ÎÒÃÇ·¢ÏÖ¶ÔÓÚÉú³ÉµÄ²âÊÔÓÃÀý£¬ÒÀÀµÐÔÎÊÌâ´ó·ù½µµÍÁËËæ»ú»¯³Ì¶È£¬²¢ÇÒÕâÖÖ·½·¨µÄÎȶ¨ÐÔÒ²ÎÞ·¨Âú×ãÒªÇó¡£
2.USE_PAGE_SANITY_VERIFICATIONS£º¸Ã²ßÂԿɼì²éÏÔ¶øÒ×¼ûµÄÓ¦ÓóÌÐòʧ°Ü£¬ÈçÏÔʾÁË´íÎóµÄÒ³£¬´íÎóÐÅÏ¢£¬JavaScript´íÎó£¬Ó¦ÓóÌÐòÈÕÖ¾ÖеĴíÎóµÈ¡£ÔÚÒÀÀµÐÔ·½ÃæÕâ¸ö²ßÂÔ¸üÁé»î£¬¿ÉÔÚÐèҪʱʵÏÖÕë¶Ô¾ßÌåÒ³µÄ¼ì²é£¬ÀýÈçÒѾ×ã¹»Áé»îµ½¿ÉÒÔÕÒ³öʵ¼ÊµÄBug¡£Ä¿Ç°ÎÒÃǽ«ÆäÓÃ×÷ĬÈϵÄÑéÖ¤²ßÂÔ¡£
TestCaseGeneratorÀà¿É°´ÕÕÀàÃûËÑË÷Page¶ÔÏó£ºÃ¿¸öÃû³ÆÖаüº¬¡°Page¡±×Ö·û´®µÄÀà¶¼»á±»¿´×÷ÊÇÒ³¶ÔÏó¡£Ò³¶ÔÏóµÄËùÓй«¿ª·½·¨»á±»ÊÓ×÷ÒµÎñ·½·¨¡£Ãû³Æ°üº¬¡°Verify¡±×Ö·û´®µÄÒµÎñ·½·¨»á±»ÊÓ×÷ÑéÖ¤£¬ËùÓÐÆäËû·½·¨»á±»ÊÓ×÷²âÊÔ²½Öè¡£@IgnoreInRandomTesting×¢½â¿ÉÓÃÓÚ´ÓÁбíÖÐÅųýijЩ¹¤¾ß·½·¨»òÕû¸öÒ³¶ÔÏó¡£
Ëæºó¿É´ÓÁ½¸öÁбíÖÐËæ»úÑ¡Ôñ·½·¨Éú³É²âÊÔÓÃÀý£ºÒ»¸öÁбí°üº¬²âÊÔ²½Ö裬һ¸öÁбí°üº¬ÑéÖ¤²½Ö裨Èç¹ûËùÑ¡ÑéÖ¤²ßÂÔÐèÒªÑéÖ¤²½ÖèµÄ»°£©¡£Ñ¡ÔñµÚÒ»¸ö·½·¨ºó£¬½«¼ì²éÆä·µ»ØÖµÊÇ·ñΪÁíÒ»¸öÒ³¶ÔÏó¡£Èç¹û·µ»ØÖµÊÇÁíÒ»¸öÒ³¶ÔÏó£¬ÄÇô½«´ÓÆä·½·¨ÖÐÑ¡ÔñÏÂÒ»¸ö²½Ö裨²Î¼ûÉÏÎı¸×¢£©¡£Îª±ÜÃâÔÚÁ½¸öÒ³Ö®¼äÑ»·Íù¸´£¬ÓÐÒ»³ÉµÄ¸ÅÂÊ»áÌø×ªÖÁÒ»¸öÍêÈ«Ëæ»úµÄÒ³Ãæ¡£Èç¹û·½·¨Ê¹ÓÃ@Depends×¢½â±ê×¢ÁËÈκÎÒÀÀµÏÔò»á°´Ðè½â¾öÕâЩÎÊÌâ²¢Ìí¼Ó¡£
Ϊ±ÜÃâ³öÏÖ´Óµ±Ç°ËùÏÔʾҳ֮ÍâÆäËû¶ÔÏóµ÷ÓòâÊÔ·½·¨µÄÇé¿ö£¬Éú³ÉµÄ²âÊÔÓÃÀý»á´«µÝÒ»¸ö¶îÍâµÄÑéÖ¤£¬½è´ËÌí¼ÓȱÉٵĵ¼º½µ÷Óá£
TesCaseExecutor
Éú³ÉÖ®ºó£¬²âÊÔÓÃÀý»ù±¾ÉϾÍÊÇÒ»ÖÖ¡°Àà-·½·¨¶Ô¡±ÁÐ±í£¬¿Éͨ¹ýÌØ¶¨·½Ê½Ö´Ðлò±£´æ¡£¾¡¹Ü¿ÉÔÚÔËÐÐʱִÐУ¬µ«´Óµ÷ÊԺͺóÐø·ÖÎöµÄ½Ç¶ÈÀ´¿´£¬±£´æÎªÎļþÊÇÒ»ÖÖ¸üºÃµÄ×ö·¨¡£
Éú³ÉµÄ²âÊÔÓÃÀý¿Éͨ¹ý¶àÖÖ·½Ê½Ö´ÐУ¬¿ÉÒÔTesCaseExecutor×÷ΪÆä½Ó¿Ú£¬ÒÔSaveToFileExecutor×÷ΪΨһµÄʵÏÖ£¬½è´Ë¿É¼òµ¥µØ´´½¨Ò»¸ö´ú±íËùÉú³É²âÊÔÓÃÀýµÄ.javaÎļþ¡£ÁîÈ˾ªÒìµÄÊÇ£¬ÕâÖÖÏ൱¼òµ¥µÄ½â¾ö·½°¸ÍêÈ«Âú×ãÁËÎÒÃǵÄÐèÇó£ºÊµÏÖËٶȿ죬¿É¶Ô²âÊÔ½á¹û½øÐÐÉîÈë·ÖÎö£¬²¢ÄÜÁ˽â¾ßÌåµÄÉú³É·½Ê½¡£Î¨Ò»µÄ²»×ãÔÚÓÚ£¬±ØÐëÊÖ¹¤±àÒë²¢ÔËÐÐÉú³ÉµÄ²âÊÔÓÃÀý£¬²»¹ý¶ÔÓÚʵÑéÀ´Ëµ£¬ÕâÒ²Ëã²»µÃʲô´óÎÊÌâ¡£
SaveToFileExecutorÉú³ÉµÄ²âÊÔÓÃÀý´úÂë¿Éͨ¹ýÄ£°åת»»Îª¿É±àÒëµÄÎļþ¡£ÕâÑùÉú³ÉµÄ²âÊÔ·¶ÀýÈçÏ£º
@Test(dataProvider = "WebDriverProvider") public void test(WebDriver driver){ login(driver); //****<Generated>**** ContactsPage contactspage = new ContactsPage(driver, true); InboxMailPage inboxmailpage = contactspage.inbox(); inboxmailpage.sanityCheck(); ComposeMailPage composemailpage = inboxmailpage.compose(); composemailpage.sanityCheck(); composemailpage.setTo("me@myself.com"); composemailpage.send(); inboxmailpage.sanityCheck(); List list = inboxmailpage.findBySubject("Seen that?"); inboxmailpage.sanityCheck(); inboxmailpage.inbox(); inboxmailpage.sanityCheck(); DraftsMailPage draftsmailpage = inboxmailpage.drafts(); draftsmailpage.sanityCheck(); inboxmailpage.inbox(); inboxmailpage.sanityCheck(); inboxmailpage.sendNewMessageToMe(); inboxmailpage.setMessagesStarred(true, "autotest", "Seen that?"); inboxmailpage.sanityCheck(); TrashMailPage trashmailpage = inboxmailpage.trash(); trashmailpage.sanityCheck(); //****</Generated>**** } |
SaveToFileExecutorÉú³ÉµÄ´úÂëλÓÚ<Generated>±¸×¢Ö®¼ä£¬ÆäÓà´úÂëÓÉÄ£°åÌí¼Ó¡£
´ÓËùÖ´ÐеIJÙ×÷·½ÃæÀ´¿´£¬ÎÒÃÇÉú³ÉµÄÓÃÀý¶àÑù»¯³Ì¶ÈÒ»°ã£¬µ«Ö»ÒªÌí¼Ó°üº¬¸ü¶à²âÊÔ²½ÖèµÄ¸ü¶àÒ³¶ÔÏó¼´¿ÉÇáËɽâ¾ö¡£
ÔÚ½øÐйýÉÏǧ¸ö¡°Ëæ»ú¡±²âÊÔºó£¬ÎÒÃÇ·¢ÏÖProtonmailûʲô´óÎÊÌ⣨ÀýÈç´íÎóÒ³£©£¬µ«ä¯ÀÀÆ÷»ã±¨ÁËһЩJavaScript´íÎ󣬶ÔÓÚÒÀÀµJavaScript½øÐÐÓʼþ±à½âÂ빤×÷µÄϵͳ£¬ÕâЩÎÊÌâ·Ç³£ÖØÒª¡£ºÜÃ÷ÏÔ£¬Õû¸öʵÑéÖÐÎÒÃDz¢²»ÄÜ·ÃÎÊ·þÎñÆ÷ÈÕÖ¾£¬µ«¾ÍʵÑéµÄ½Ç¶ÈÀ´Ëµ£¬ÒѾ×㹻չʾ³öÕâÑùµÄ·½·¨¶Ô±»²âÊÔϵͳÖÊÁ¿µÄ´Ù½øÄÜÆðµ½¶à´óµÄ×÷Óá£
µ±È»£¬Ëæ»ú²âÊÔÎÞ·¨È¡´úÖ÷¹Û»ò´«Í³²âÊÔ¼¼Êõ£¬µ«¿ÉÔڻعé²âÊÔ¹ý³ÌÖÐÈÃÎÒÃǶÔÓ¦ÓóÌÐòÖÊÁ¿¸üΪ×ÔÐÅ¡£ |