程序员面试宝典 - 软件测试

 

简答题

1. 自动化测试为什么重要?

答:自动化测试能够让测试人员从重复性工作中解放出来,并且能够提高工作效率。

 

2. 测试结束的准则?

答:首先是查看已提交的BUG是否已经全部解决并验证关闭,BUG验证率在95%以上,并且不存在有重大影响的BUG没有解决,可认为测试通过。

 

3. 一个测试计划中应该包含哪些内容?

答:测试产品的特点和主要的功能模块,首先,列出需要测试的功能点,并标明侧重点;其次是测试的策略和内容记录(包括测试工具的确认,测试用例等文档的撰写,以及测试方法的确定);最后,测试资源的分配(包括测试每一阶段的具体任务及所需的资源)。

 

4. 功能测试和可用性测试之间的区别?

答:功能测试主要是黑盒测试,由测试人员执行,主要验证产品是否符合设计需求;可用性测试是站在用户角度进行的测试,主要是测试产品是否可用,易用,好用。

 

黑盒测试

1. club函数用来模拟一个俱乐部的顾客。初始化情况是0个顾客,俱乐部最大规模只能有50个顾客,当用户超过了最大规模,他们必须等在外面。当一些顾客离开了,等待队列将减少,这个club函数将打印俱乐部里面的顾客人数,和外面等待的人数。函数声明如下:

  void club(int x); 

 整数x代表客人来了,负数x代表客人离开了俱乐部。

 1 #include <iostream>
 2 using namespace std;
 3 
 4 # define MAX_IN_CUSTOM (50)
 5 
 6 void club(int x)
 7 {
 8     static int in_custom = 0;
 9     static int out_custom = 0;
10     if(x > 0) 
11     {
12         if((x + in_custom) > MAX_IN_CUSTOM)
13         {
14             out_custom += x + in_custom - MAX_IN_CUSTOM;
15             in_custom = MAX_IN_CUSTOM;
16         }
17         else
18         {
19             out_custom = 0;
20             in_custom += x;
21         }
22     else if(x < 0)
23     {
24         if((out_custom + x) >= 0)
25         {
26             out_custom += x;
27         }
28         else 
29         {
30             in_custom += out_custom + x;
31             out_custom = 0;
32         } 
33     }  
34     if(in_custom < 0)
35     {
36         std::cout<<"N/A"<<std::endl;
37     }
38     else
39     {
40         std::cout<<in_custom<<","<<out_custom<<endl;
41     }
42 }
43 int main()
44 {
45   club(40);
46   club(20);
47   club(-5);
48   club(-30);
49   club(-30);
50   club(0);
51 }

 

2. int FIndMiddle(int a, int b, int c)和int CalMiddle(int a, int b, int c)分别是两个C函数,他们都能返回三个输入int中中间大小的那个int。你无法看到他们的源代码,那么该如何判断哪个函数的质量好?

首先,从函数命名上来看,FindMiddle更好;

然后,使用例如 0,0,0 或 0,0,1 或 非整数 来测试两个函数的排错功能,哪个更优;

最后,可以测试算法的效率,哪个更高;

 

3. 写一个函数测试输入数是否为回文数,给出算法和代码?

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int k = 12321;
 7     int p;
 8     int a[10];
 9     int ss;
10     int i = 0;
11     int begin,end;
12     cout<<"please input"<<endl;
13     cin>>k;
14     p = k;
15     while(p)
16     {
17         ss = p % 10;
18         a[i] = ss;
19         p = p/10;
20         i++;
21     }
22     begin = 0;
23     end = i - 1;
24 
25     while(begin < end)
26     {
27         if(a[begin] != a[end])
28             break;
29         else
30         {
31             begin++;
32             end--;
33         }
34     }
35     if(begin < end)
36         cout<<"False"<<endl;
37     else
38         cout<<"True"<<endl;
39 
40 
41     return 0;
42 }

 

4. 写一个测试用例和测试方案来测试手机。

    包括:打电话,短消息,通讯录

打电话:

  • 是否具有打电话这个功能;
  • 拨打正确号码能否接通,并正常通话,如果对方是关机状态,是否有提示;
  • 拨打不正确号码是否有提示,比如号码位数不正确,号码不存在等情况;

短消息:

  • 是否有发送和接收短消息的功能;
  • 输入正确号码能否发送短信成功,短信发生成功是否有提示,并测试对方能否成功收到短信;
  • 如果输入手机号位数不对或者不存在的号码是否有提示;
  • 发送成功的短信是否会自动保存到发件箱,编辑状态的短信能否不发送保存为草稿,所有短信能否进行删除操作;

通讯录:

  • 是否有通讯录这个功能;
  • 新建一个联系人,联系人信息为空是否有提示;
  • 新建联系人与已有联系人姓名或电话号码等信息重复是否有提示;
  • 删除联系人是否成功,删除时是否有提示信息;

 

posted @ 2017-10-30 10:48  笨笨最聪明  阅读(177)  评论(0)    收藏  举报