相关文档
软件测试定义
1.软件测试是为了发现错误。
2.软件测试应尽可能早的进行测试。
3.软件测试对象包括代码、文档、 数据。
4.软件测试的原则不包括能穷举各种情况。
5.回归测试是为了测试由于修正缺陷而更新的应用程序,以确保彻底修正了上一个版本的缺陷,并且没有引入新的软件缺陷。
6.单元测试是对软件的最小可测试单元的检查与验证。
7.测试用例包括_测试用例的编号,_测试用例的名称,输入数据,_操作步骤和预期输出结果。
8.从是否运行测试的角度可将软件测试分为动态测试和静态测试 。
9.测试不是调试的一个部分。
10.代码评审是检查源代码是否达到模块设计的要求。
11.测试是证明软件正确的方法。
白盒测试
12.在白盒测试中,(程序中存在很多判定条件,不可能实现100%的条件覆盖)( X)
13.对于逻辑表达式((a&b)||c),需要2 个测试用例才能完成条件组合覆盖。
14.逻辑覆盖法包括分支覆盖、修正条件判定覆盖、语句覆盖,不包括需求覆盖.
15.如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的判定覆盖.
16.使用白盒测试方法时,确定测试数据的依据是指定的覆盖标准和程序的内部逻辑.
17.(a,b,c)=(2,5,8),(-4,-9,-5)
18.白盒测试的逻辑覆盖方法通常有语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,条件组合覆盖以及路径覆盖
19.环路复杂度公式有V(G)=E-N+2和V(G)=p+1
黑盒测试
20.黑盒测试是一种重要的测试策略,其测试数据来源于软件需求规格说明书
21.黑盒测试不可以覆盖所有代码。
22.黑盒测试的方法:等价类划分、边界值分析、错误推测法。(静态结构分析法)(X)
23.划分软件测试属于白盒测试还是黑盒测试的依据是是否能看到被测原数据。
24.因果图方法最终生成的是决策表。
单元测试
25.单元测试中用来模拟被测模块调用者的模块是驱动模块。
26.单元测试的内容是模块接口测试、局部数据结构测试、独立路径测试。
27.单元测试时,常用的方法是采用白盒测试,辅以黑盒测试。
28.单元测试不可放在编程阶段。
29.自底向上的集成测试策略是首先对模块调用图上的最底层模块进行测试。
30.集成测试不一定要委托第三方进行。
31.大爆炸集成是把所有的模拟一次性集成为一个完整的系统后进行测试,很容易整体测试。
32.软件集成测试分析不包括局部数据结构分析。
33.不属于集成测试的原则:语句覆盖率和分支覆盖率应达到100%。
34.集成测试工作的开始时间是体系结构设计开始。
- 集成测试是单元测试的基础上将所有模块按照设计要求组装成系统或子系统。
- 集成测试策略有中自顶向下方法、自底向上和三明治方法。
- 单元测试时,模拟被调用模块的是桩模块 。
- 集成测试方案的完成时间是详细设计之前。
- 单元测试时,调用被测试模块的是驱动模块。
- 对于严重程序的缺陷,优先级是高优先级。
- 测试人员验证后认为缺陷已经成功修复,说明缺陷处于关闭状态。
- 缺陷来源第一大原因是需求分析。
- (禅道)是开源测试管理工具。
44.(录制脚本模块)不是自动化测试框架的组成部分。
45.缺陷严重程度可分为致命、严重、重要和较小。
46.测试覆盖率可分为需求覆盖和代码覆盖。
47.测试文档主要由三类组成分别是测试计划、测试用例和测试报告。
48.缺陷关闭,可以重新激活。
49.selenium不能够像页面发送鼠标滚轮操作。
50.selenium使用xpath比css选择器 性能更慢。
51.find_element_by_css_selector是通过css选择器查找网页控件。
52.find_element_by_xpath("…")通过绝对地址定位网页控件以/开头。
53.在浏览器的console要定位input的第1个元素可以使用以下$x(’//input’)[0]命令。
54.Webelement使用text可以获取标签的内容。
简答
1.有一段程序如下,请设计测试用例以满足语句覆盖要求。
if((a>2&&b<3)&&(c>4||d<5)){
statement1;}
else{
statement2;}
答案: 语句覆盖是基本的覆盖,只要能让statement1和statement2都被执行一次就达到语句覆盖的标准。测试用例(a=0,b=0,c=0,d=0)和(a=3,b=1,c=5,d=0)即满足语句覆盖标准的要求。
2.给定二元函数f(x,y),输入变量x,y分别满足x∈[1,16],y∈[1,51]。写出该函数采用边界值分析法设计的测试用例。
答案:采用一般性边界值分析,测试用例如下:
x y
1 26
2 26
8 26
15 26
16 26
8 1
8 2
8 50
8 51
3.针对以下问题:某一种8位计算机,其十六进制常数的定义是以0x或0X开头的十六进制整数,其取值范围为-7f~7f(不区分大小写字母),如0x13、0x6A、-0x3c。请采用等价类划分的方法设计测试用例。
答案:
① 划分等价类并编号,如下表所示。
十六进制整型常量输入条件的等价类表
输入数据 | 合理等价类 | 不合理等价类 |
---|---|---|
十六进制整数 | 1. 0x或0X开头1~2位数字串 2. 以-0x打头的1~2位数字串 | 3. 非0x或非-打头的串 4. 含有非数字且(a,b,c,d,e,f)以外字符 5. 多于5个字符 6. -后跟非0的多位串 7. -0后跟数字串 8. -后多于3个数字 |
十六进制数范围 | 9. 在-7f~7f之间 | 10. 小于-7f11. 大于7f |
② 为合理等价类设计测试用例,表中有三个合理等价类,两个例子。
测试数据 | 期望结果 | 覆盖范围 |
---|---|---|
0×23 | 显示有效输入 | 1,9 |
-0×15 | 显示有效输入 | 2,9 |
③ 为每个不合理等价类至少设计一个测试用例。
测试数据 | 期望结果 | 覆盖范围 |
---|---|---|
2 | 显示无效输入 | 3 |
G12 | 显示无效输入 | 4 |
123311 | 显示无效输入 | 5 |
-1012 | 显示无效输入 | 6 |
-011 | 显示无效输入 | 7 |
-0134 | 显示无效输入 | 8 |
-0x777 | 显示无效输入 | 10 |
0x87 | 显示无效输入 | 11 |
4.写以下函数的驱动模块。
int divide(int a,int b)
{
int c;
if(b==0){printf(“除数不能为0”);return 0;}
c=a/b;
return c;
答案: int main()
{
if(divide(6,2)==3)
printf(“测试通过”);
else
printf(“测试不能通过”);
if(divide(6,0)==0)
printf(“测试通过”);
else
printf(“测试不能通过”);
}
5.如下图所示,采用基于功能分解的集成方法分析模块图的集成测试会话,分别采用自顶向下、自底向上、三明治集成的方法。
答:
自顶向下:
先测M1,再测M2,M4,M3,
再测M5,M6,最后测M7.
其中需要编写桩模块stub2,stub3,stub4,stub5,stub6,stub7。
自底两上:
先测M7,M6,M5,其中编写驱动模块driver6,driver3
再测M2,M4,其中编写驱动模块driver1。
最后测M1。
三明治方法:
以M2,M3,M4为中间层,M1及中间层采用自顶向下测试方法。M5,M6,M7及中间层采用自底
向上测试方法,先测M7再测M6,M5最后测M2,M3,M4,要编写驱动模块driver6,driver3。
6.手工测试与自动测试的优缺点对比。
答案:
1.手工测试的优点有发现缺陷率高,容易实施,具有创造性和灵活性,缺点是重复测试效率低, 人工成本高,性能测试难以实现。 2.自动测试的优点有测试效率高,易于生成规范的测试报告,适用于性能测试和需要大量回归测 试,缺点是一次性投入大包括购买测试工具和开发测试脚本,某些方面测试质量不如手工测试如 复杂的功能测试和安全性测试。
7.常用的测试工具有Jmeter,LoadRunner,selenium,禅道,Junit,请问它们有什么作用?
答:Jmeter是开源的接口测试工具,也可作为web性能测试工具如并发性,网络容量,LoadRunner是 商用的性能工具,可以测试web性能。Selenium是web功能测试工具,能模拟人工访问网页进行测 试,禅道是缺陷管理工具也可以用于软件项目管理,Junit是java的单元测试工具。
8.“no such element"是selenium常用的错误,请分析产生这类错误的原因?
答案:
- 元素定位错误例如定位方法不正确或如控件ID动态更新。
2.页面加载时间过慢,需要查找的元素程序已经完成,单页面还未加载,此时可以加载页面等待 时间。 3.有可能元素包含在iframe或者frame里面,需要切换。
9.分析selenium的常见错误"no such element"的原因和解决方法。
答案:
1)标签有误,检查标签名是否有误或换一种定位方法。 2)浏览器的网页没有完全下载下来,等待访问网页几秒钟。 3)有frame的限制,先定位到控件所在的frame. 4)是动态控件无法使用name,id等进行定位,可以采用父控件和子控件相对位置来定位。
10.编程题:用selenium打开百度"http://www.baidu.com”,并输入Python进行搜索,其中搜索框的id是"kw",
可通过回车直接搜索。需要使用的库已给出。
#coding=utf-8 from selenium import webdriver import time from selenium.webdriver.common.keys import Keys
正确答案:
driver=webdriver.Firefox() driver.maximize_window() first_url=‘http://www.baidu.com’ driver.get(first_url)
time.sleep(5)
input = browser.find_element_by_id(‘kw’) input.send_keys(‘Python’) input.send_keys(Keys.ENTER)#input.send_keys(Keys.RETURN)