Моят партньор и аз имаме набор от тестове, изпълнявани всяка нощ на сървър за изграждане за нашия проект. Използваме CruiseControl.NET, за да стартираме сървъра, а тестовете са написани с помощта на WatiN и NUnit. Имаме CruiseControl.NET, работещ като услуга с достъп за взаимодействие с работния плот на локален системен акаунт. На всеки няколко пъти, когато изпълняваме компилация, определени тестове ще се провалят със съобщения за грешка като следното:
Test: cfarmweb.tests.Views.GeneralRegressionTest.DuplicateUsernameTest
Type: Failure
Message: SetUp : System.Runtime.InteropServices.COMException : Creating an instance of the COM component with CLSID {0002DF01-0000-0000-C000-000000000046} from the IClassFactory failed due to the following error: 800704a6. TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
at WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri, IDialogHandler logonDialogHandler, Boolean createInNewProcess)
at WatiN.Core.IE..ctor(String url)
at cfarmweb.tests.Navigator.SiteNavigator..ctor(String browserName, Boolean visible) in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Navigator\SiteNavigator.cs:line 35
at cfarmweb.tests.Views.GeneralRegressionTest.MakeNavigator() in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Views\GeneralRegressionTest.cs:line 34
--TearDown
at WatiN.Core.Browser.OnGetNativeDocument()
at WatiN.Core.DomContainer.get_NativeDocument()
at WatiN.Core.Document.ContainsText(String text)
at cfarmweb.tests.Navigator.SiteNavigator.HasText(String target) in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Navigator\SiteNavigator.cs:line 213
at cfarmweb.tests.Navigator.SiteNavigator.SignOut() in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Navigator\SiteNavigator.cs:line 110
at cfarmweb.tests.Views.GeneralRegressionTest.DisposeNavigator() in c:\ccworkdir\CFarm\builddir\cfarmweb.tests\Views\GeneralRegressionTest.cs:line 123
Успехът на компилациите не изглежда да зависи от промените в самия код, тъй като имахме компилации да се счупят или да бъдат коригирани след промени в части от програмата, които не са свързани с тестовете.
И двамата сме нови в областта на софтуерното тестване (и разработката като цяло), но нищо, което сме намерили онлайн за тази грешка, изглежда не се отнася за нашата ситуация. Виждали сме всичко - от чакащо рестартиране на системата до проблеми със съвместимостта с Internet Explorer 8 до грешки в JavaScript, но нищо, което сме опитали, не е отстранило проблемите. Една от най-трудните части е, че не е последователно възпроизводим. Как можем да решим този проблем?