软件测试面试中的自动化问题

一、 你们的自动化是怎么做,流程是怎么样?
1. 答:先判断是否达到使用自动化的条件
2. 熟悉需求和系统操作的条件下,分析系统功能,参照功能测试用例编写自动
化测试用例,以保证测试覆盖全面(需要等价类边界值等不要考虑,只考虑
功能是否完整,能有 50% 的覆盖率就不错了)
3. 比如我们首先写一个脚本,然后使用 find_element_by_id,name,Xpath 等方式
抓取系统页面元素,编写这个场景的流程。再加入等待时间,检查元素对
象。
4. 为了实现自动化脚本加入不同场景的管理,无人值守完成所有用例测试并最
后生成 html 报告,我们测试组会编写自动化框架。我们使用的是 Python
unittest ,这个框架是由自动化项目的主要负责人编写,然后我会把我负责的
模块代码融合到框架中。如我们的那个 sales 运营管理平台项目,会有登录
模块,线索模块,客户模块,商机模块
5. 首先,我们会把一个场景分为数据层,控制层,逻辑层,用例层和执行总脚
6. 先根据测试用例在数据层中编写 excel 数据,以及调用数据的方法
7. 把场景中的操作,特别是一些公共操作封装在控制层中的代码 control
8. 为该模块的所有测试用例定义一个类。每个用例定义为类里面的一个方法,
方法的名称按照《自动化测试用例》 的用例编号命名;读取
1 data excel 的数据,调用 control 的方法编写操作步骤,调用逻辑判断层
business 里的 方法断言是否通
9. 编写一个总的测试脚本,将所有的测试用例类加入到框架的测试集 TestSuite
中,也就是相当于把所有测试用例类装入一个容器中,调用 生成 HTML
告的方法 ,并选择报告保存的路径;执行这个总脚本,这个自动化测试完
成后会生成一个 HTML 报告。
10. 最后根据 HTML 报告的 success fail error 的情况,编写测试报告汇报本
次自动化测试结果
二、 python 上怎样写程序,结果含两位小数的数字
答: 这里有三种方法,如下:
a=5
round(a,2)
'%.2f' % a
Decimal('5.000').quantize(Decimal('0.00'))
三、 python 上调用数据的方法
答:比如我们要去调用 excel 表里的数据的方法
首先要导入 import xlrd
然后定义一个方法
def readExcel(sheetx,row,col):
2 # 使用 xlrd 自带的 open_workbook 方法,打开 C:\dataExcel.xlsx 这个路径下的
EXCLE 文件
a=xlrd.open_workbook("C:\dataExcel.xlsx")
# 读取哪个 sheet 的值
b=a.sheet_by_index(sheetx)
#cell_value 读取第 row 行,第 col
c=b.cell_value(row,col)
return c # 调用 readExcel 方法的时候,返回 C 这个值给调用者
四、 自动化测试的优缺点?
答: 自动化测试的优点:
1、特别是在版本回归比较频繁时,效果是非常明显的。由于回归测试的动
作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试
自动运行,可以极大提高测试效率,缩短回归测试时间。
2、可以在较少的时间内运行更多的测试。
3、避免长期反复地测试同样的功能操作,将 测试技术 人员解脱出来投入更
多精力设计更好的 测试用例 ,增加员工的稳定性。
自动化测试的缺点:
1、不能取代手工测试
2、手工测试比自动测试发现的 缺陷 更多
4、测试自动化不能提高有效性
5、由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件
的开发
6、工具本身并无想像力
五、 你用 Python 用过封装吗?
答:比如把一堆变量打包写在类里面,这个就是封装,如下
class login
user=read(0,1,a)
pwd=read(0,1,a)
driver=webdriver.Chrome()
driver.get("http://10.0.0.90/xx")
driver.find_element_by_name("name").send_keys(user)
driver.find_element_by_name("password").send_keys(pwd)
driver.find_element_by_name("submit").click()
六、 selenium 这个工具怎么使用?
答:我们用 pycharm 编写 python 脚本,在 pycharm 我们通过导入 selenium ,使
用的是 selenium webdriver 的类和方法操作元素对象
七、 自动化测试具体怎么写脚本的?
答:比如我们首先使用 find_element_by_id,name,Xpath 等方式抓取系统页面
元素,如我们的那个 xxx 管理平台 :
我们会把一个场景分为数据层,控制层,逻辑层,用例层和执行总脚本 .
先根据测试用例在数据层中编写 excel 数据,以及调用数据的方法
把场景中的操作,特别是一些公共操作封装在控制层中的代码 control
为该模块的所有测试用例定义一个类。每个用例定义为类里面的一个方法,
方法的名称按照《自动化测试用例》 的用例编号命名;读取
data excel 的数据,调用 control 的方法编写操作步骤,调用逻辑判断层
4 business 里的 方法断言是否通 过编写一个总的测试脚本,将所有的测试用例
类加入到框架的测试集 TestSuite 中,也就是相当于把所有测试用例类装入
一个容器中,调用 生成 HTML 报告的方法 ,并选择报告保存的路径;执
行这个总脚本,这个自动化测试完成后会生成一个 HTML 报告
八、 你有没有写过 shell 脚本?举一个最基本的例子。
答:
脚本 showrpm ,其功能是打印一些 RPM 包的统计信息代码如下
for rpmpackage in $*; do
if [ -r "$rpmpackage" ]; then
echo "===== $rpmpackage ====="
rpm -qi -p $rpmpackage
else
echo "ERROR: cannot read file $rpmpackage"
fi
done
九、 你自动化写了多少行代码?
答:功能用例比较多的模块写上千行,小版本功能的时候写百十来行,没有具
体数过自己写了多少行,这么久几千行应该也有吧。
十、 自动化测试你们怎么决定做不做自动化测试?
答:
5 1 测试任务明确,不会频繁变动的
2 比如有些项目要敏捷开发,版本迭代较多,比较频繁的回归测试,
3 做自动化验证的界面相对稳定,不会频繁大改动,维护代码的代价较小
4 在多平台上运行相同的测试用例、组合遍历型的测试,大量重复的任务(如
APP 需要在多种手机上测试)
5 项目周期较长,时间比较充足。
6 有时候我们内部小组也想提升一下,研究一些技术分享
十一、 自动化抓取页面元素,为什么不用接口返回数据报文?
答:抓元素因为是 ui 的自动化,如果是接口的自动化肯定要获取并判断接口返
回的数据报文是否跟接口设计需求一致。
十二、 自动化测试的数据是装在一个 excel 文件,还是分开的?
答:都在一个 excel 文件里面,可以使用不同的 sheet 来管理不同模块的数据。
十三、 自动化测试是你一个人做的,还是大家一起来?
答:比较大的系统,功能比较多,需要开发的代码量比较大的时候,我们小组
有人和我一起做。如果时间充裕的,一些功能模块自动化我自己开发就可以
了。
6 十四、 你们有做过自动化测试吗?做自动化测试有没有收到效
果?
答:有,还是有效果,能节省不少的时间,很多重复性的回归测试就不需要投
入太多的时间。
十五、 python 语言的特点, selenium 的特点
答:
python 语言的特点 :
简单:良好的 Python 程序就感觉像是在读英语,你能够专注于解决问题而不是
去搞明白语言本身;
易学: Python 有极其简单的语法;
免费、开源:可自由发布软件的拷贝、阅读源代码、对它做改动、把它的一部分
用于新的自由软件中;
高层语言;无需考虑管理程序使用内存这类问题的底层细节;
可移植性:因开源本质, Python 已经被移植到许多平台上
selenium 的特点
开源,免费 , 多浏览器支持 :FireFox Chrome IE Opera 多平台支持 :linux
windows MAC 多语言支持 :java python ruby php C# JavaScript web
页面有良好的支持简单 (API 简单 ) 、灵活 ( 用开发语言驱动 ) 支持分布式测试用例
执行
十六、 你们怎么写脚本的?你负责哪个部分?框架谁写?
答:如我们的那个 xxx 管理平台:
我们会把一个场景分为数据层,控制层,逻辑层,用例层和执行总脚本 .
7 先根据测试用例在数据层中编写 excel 数据,以及调用数据的方法把场景中
的操作,特别是一些公共操作封装在控制层中的代码 control 中为该模块的
所有测试用例定义一个类。每个用例定义为类里面的一个方法;读取 data
excel 的数据,调用 control 的方法编写操作步骤,调用逻辑判断层
business 里的 方法,使用断言是否通 过。编写一个总的测试脚本,将所有的
测试用例类加入到框架的测试集 TestSuite 中,使用 HTMLTESTRUNNER
插件生成报告。
我负责过编写框架,有时候也配合团队写一些功能模块的脚本,维护现有脚
本等。
十七、 写一个小程序:输入分子,输入分母,输出小数
答:
#coding=utf-8
x=input(u"输入分子: ")
y=input(u"输入分母: ")
print u"结果等于:%s" %(x/float(y))
十八、 用定位元素写百度的点击
from selenium import webdriver
a=webdriver.Chrome()
a.get( http://www.baidu.com )
a.find_element_by_id(“su”).click()
8 十九、 你们做自动化测试数据怎么调用的?如果我一个模块用到
这个 Excel 的上面那部分数据,但是另一个模块用到下半部分,
你怎么去调用?
答:我们的代码是分层写的,为数据层,控制层,逻辑层,用例层和执行总脚
本。首选把所有测试用例写在 excel 里面,每个模块的测试数据写成一个页
签。页签里的每一行是一条用例数据,包括了用例名称,测试数据等。用例行
中的每个数据是一个单元格,把调用测试数据写成一个方法来读取 excel 的某
sheet 某个行某个列,这就是数据层。在写实际用例的方法的时候调用具体的
sheet 行列。这样的话就能达到数据分离方便统一维护的目的。
二十、 写一个最简单的 99 乘法表的 shell 脚本
答: #!/bin/sh
for (( i=1;i<=9;i++)
do
for (( j=1;j<=i;j++ ))
do
let “temp=i*j”
echo –n “$j*$i=$temp “ done echo “”
done
exit 0
#!/bin/sh
for (( i=1;i<=9;i++) do for (( j=1;j<=i;j++ )) do let “temp=i*j”
echo –n “$j*$i=$temp “ done echo “”
done exit 0
9 二十一、 你说你做过自动化、说一下预期与实际结果你是怎么用脚
本实现的
: 自动化是需要覆盖功能点的,所以自动化的预期结果就是来自于功能用例的
预期结果。预期结果就是抽取页面的这些检查点,首先获取这个检查点元素的
text 内容赋予给变量那么这个变量就是实际结果,然后写一个语句或者用断言
函数判断这个变量跟预期结果预设值是否相等,如果他们相等那么就通过,否
则就报错失败。
二十二、 自动化的函数有哪些?
: print , len , range ,type, assert, return, file, time, get, post,
二十三、 自动化调试的时候有遇到过那些问题
答:复习课程中的截图笔记,例如: 1 ,中文报错, 2 ,数据类型报错,
3 ,参数变量错漏报错, 4 ,最重要的经典类的继承举例报错笔记
二十四、 如何遍历字典和列表,用语句具体写出来?
答:
字典:
遍历输出键名
10 a = { " a":" 000" ,"b":" 111" ,"c":" 222" }
for name in a:
print name
遍历出键值
a = { " a":" 000" ,"b":" 111" ,"c":" 222" }
for key in a:
print a[key]
列表:
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8]:
print i
二十五、 你们的自动化测试用例有多少,覆盖率多少?
答:自动化测试用例数按照自己项目中的来;
覆盖率这个是按照测试用例数来定的,因为如果是一个比较大的项目的话,有
上千条用例,这个时候就只会挑选一些主要功能模块的用例来做自动化测试,
覆盖率的话大概在 30% ,如果是一个小的项目,就一两百条用例,那差不多都
可以用自动化来写,覆盖率在 80% 左右的样子。
二十六、 编写个冒泡程序
:
11 list=[9,5,3,4,7,6,1,8,2]
count = len(list)
for i in range(count):
for j in range(i + 1,count):
if list[i] > list[j]:
list[i], list[j] = list[j], list[i]
print "list1=%s"%list
12

你可能感兴趣的:(面试,自动化,服务器)