软件测试面试中的自动化问题
2023-12-13 05:44:40
一、
你们的自动化是怎么做,流程是怎么样?
1.
答:先判断是否达到使用自动化的条件
2.
熟悉需求和系统操作的条件下,分析系统功能,参照功能测试用例编写自动
化测试用例,以保证测试覆盖全面(需要等价类边界值等不要考虑,只考虑
功能是否完整,能有
50%
的覆盖率就不错了)
3.
比如我们首先写一个脚本,然后使用
find_element_by_id,name,Xpath
等方式
抓取系统页面元素,编写这个场景的流程。再加入等待时间,检查元素对
象。
4.
为了实现自动化脚本加入不同场景的管理,无人值守完成所有用例测试并最
后生成
html
报告,我们测试组会编写自动化框架。我们使用的是
Python
的
unittest
,这个框架是由自动化项目的主要负责人编写,然后我会把我负责的
模块代码融合到框架中。如我们的那个
sales
运营管理平台项目,会有登录
模块,线索模块,客户模块,商机模块
5.
首先,我们会把一个场景分为数据层,控制层,逻辑层,用例层和执行总脚
本
6.
先根据测试用例在数据层中编写
excel
数据,以及调用数据的方法
7.
把场景中的操作,特别是一些公共操作封装在控制层中的代码
control
中
8.
为该模块的所有测试用例定义一个类。每个用例定义为类里面的一个方法,
方法的名称按照《自动化测试用例》
<testcase1….>
的用例编号命名;读取
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
中
为该模块的所有测试用例定义一个类。每个用例定义为类里面的一个方法,
方法的名称按照《自动化测试用例》
<testcase1….>
的用例编号命名;读取
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
文章来源:https://blog.csdn.net/weixin_53666393/article/details/134944073
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!