.net软件自动化测试笔记(API-2)


1.9获得测试运行时间
如何获得测试运行的总时间
设计:DateTime.Now属性记录测试开始运行时间,以及测试结束时间,用一个TimeSpan对象计算本次运行的总时间

 

 DateTime starTime = DateTime.Now;

            while ((line=sr.ReadLine())!=null)

            {

                //运行测试

            }

            DateTime endTime = DateTime.Now;

            TimeSpan testTime  = endTime - starTime;

            Console.WriteLine("Test use time="+testTime);
View Code

1.10处理输入为空或期望值为空的情况
如何验证待测程序的API方法能否正确的处理传给它的null参数
设计:使用一个特殊的字符串标记来表示测试用例数据文件的null值,在测试套件添加相应的处理逻辑,把null标记转换成null输入值

 public static double ArithmeticMean(params int[] vals)

        {

            if(vals==null)

            {

                return 0.0;

            }

            double sum = 0.0;

            foreach (int v in vals )

            {

                sum += v;

                return (double) (sum/vals.Length);

            }

        }
View Code

 

1.11处理“方法抛出异常”的情况

如何测试一个抛出异常的方法

设计:在测试用例数据文件嵌入一个特殊的字符串标记,用来表示应该有一个异常抛出,把待调用的待测方法放到一个try块里,可以捕获异常

*******
不要把那些调用不抛出异常的待测方法的代码放到try块里,因为如有异常抛出的话,你会得到pass的结果

如下测试数据:

004:GeometricMean:1 2 4 8 16 32:6.6569
005:GeometricMean:0 0 0 0:Exception
006:GeometricMean:2 4 8:4.0000

 MathLib.Methods m=new Methods();

                if (tokens[3] == "Exception")

                {

                    try

                    {

                        actual = m.GeometriMean(input);

                    }

                    catch (Exception ex)

                    {

                        Console.WriteLine(caseID+"Pass");

                        continue;

                    }

                    Console.WriteLine(caseID+"*Fail* no exception throw" );

                }

如果找到“Exception”输入值,就转到try块里执行GeometricMean();如果没有找到,程序转到catch块,并打印出结果,然后执行continu,进入下一关测试;

 

 

1.12处理输入参数为空字符串的情况

如何测试传给待测API方法的参数为空字符串的情况

设计:使用一个特殊字符串标记来表示测试用例文件中的空字符串,并在测试套件中加入相应的逻辑处理分支

001:SubString:put:computer:true
002:SubString:xyz:computer:flase
003:SubString:emptystring:computer:true(emptystring作为特殊标记字符串:空字符串)

 string ags;

                if (tokens[2]=="emptystring")

                {

                    ags = " ";

                }

                else

                {

                    ags = tokens[2];

                }

 

1.13在测试用例失败时发送警告邮件

如何编写程序让测试套件在测试用例失败的时候发送邮件信息

设计:使用System.Web.Mail命名空间的MailMessage类创建一个MailMessage对象,然后对这个对象提供To和Subject等属性,把测试用例失败详细信息添加到Body属性

 

 else

                    {

                     

                        Console.WriteLine("*Fail*.Sending e-mail");

                        try

                        {

                            MailMessage mail=new MailMessage();

                            mail.From = "Test Automation Harness";

                            mail.To = "[email protected]";//通知邮箱地址

                            mail.Subject = "Test Case Failure";//主题

                            mail.Priority = MailPriority.High();

                            mail.BodyEncoding = System.Text.Encoding.ASCII;//编码格式

                            mail.BodyFormat = MailFormat.Html;

                            mail.Body = "Test case"+caseID+"fail";//邮件内容

                            SmtpMail.SmtpServer = "127.0.0.1";

                            SmtpMail.Send(mail);





                        }

                        catch (Exception ex)

                        {

                            

                            Console.WriteLine("Fatal error sending mail:"+ex.Message);

                        }

                    }

 

 

1.14自动运行测试套件

如何让测试套件自动运行

设计:1)好几个轻量级自动化测试套件需要运行,可以创建一个.bat文件,在这个文件里加上运行他们的命令;

      2)用c#写一个主测试套件(master harness),让主测试套件来协调并调用其他自动化测试套件,

        使用System.Diagnostics.Process命名空间的Start()方法来编写代码用于调用其他测试套件

eg:1)

@echo off
echo Starting test automation sequence
echo.
d:\xxx\xxx\xxx.exe
d:\xxx\xxx\xxx.exe
d:\xxx\xxx\xxx.exe
echo.
echo Test autonmation sequence complete

 

如果测试套件没有把测试结果记录到外部文件

@echo off
echo Starting test automation sequence
echo.
d:\xxx\xxx\xxx.exe > d:\xxx\xxx.Result1.txt
d:\xxx\xxx\xxx.exe > d:\xxx\xxx.Result2.txt
d:\xxx\xxx\xxx.exe > d:\xxx\xxx.Result3.txt
echo.
echo Test autonmation sequence complete

 

 

eg2):

 public void MasterStart()

        {

            Console.WriteLine("Starting automation sequence\n");

            Process.Start("d:\\xxx\\xxx\\xxx.exe");

            Process.Start("d:\\xxx\\xxx\\xxx.exe");

            Process.Start("d:\\xxx\\xxx\\xxx.exe");

            Console.WriteLine("\n Test automation sequence complete \n");

        }

 

你可能感兴趣的:(自动化测试)