• 系统测试UI测试总结与问题(面试)


    一.系统测试

    1.易用性,功能,分支,边界,性能等功能性和非功能性需要都要进行测试

    2.介入需求一定要早 ,越早介入不仅可以减少成本,还避免了后续工作不必要的麻烦

    3.测试用例尽量覆盖全面,最好做到用少的测试用例测试出多的bug

    4.你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决。

    1)如果不是错误则应该主动承认不是缺陷。

    2)如果是需求不明确的则应和开发加强沟通补充需求。

    3)如果和开发争论不休应该邀请上级判断。

    5.软件的缺陷等级应如何划分?

    ​ 严重:

    ​ 1.由于程序所引起的死机,非法退出

    ​ 2.死循环

    ​ 3.数据库发生死锁

    ​ 4.因错误操作导致的程序中断

    ​ 5.功能错误

    ​ 6.与数据库连接错误

    ​ 7.数据通讯错误。

    ​ 较严重:

    ​ 1.程序错误

    ​ 2.程序接口错误

    ​ 3.数据库的表、业务规则、缺省值未加完整性等约束条件。

    ​ 一般性:

    ​ 1.操作界面错误(包括数据窗口内列名定义、含义是否一致)

    ​ 2.打印内容、格式错误

    ​ 3.简单的输入限制未放在前台进行控制

    ​ 4.删除操作未给出提示

    ​ 5.数据库表中有过多的空字段。

    ​ 建议:

    ​ 1.界面不规范

    ​ 2.辅助说明描述不清楚

    ​ 3.输入输出不规范

    ​ 4.长操作未给用户提示

    ​ 5.提示窗口文字未采用行业术语

    ​ 6.可输入区域和只读区域没有明显的区分标志 。

    UI测试

    一.自动化使用场景:

    1. 需求稳定,不会频繁变动的场景。
    2. 研发和维护周期长,需要频繁执行回归测试的场景。
    3. 需要在多个平台上重复运行相同测试的场景。
    4. 通过手工测试无法实现或成本太高的场景。
    5. 被测软件开发较为规范,并且能够保证系统可测试性的场景。
    6. 测试人员已经具备编程能力的场景。

    二.8种基础定位方法:

    #id定位
    driver.find_element_by_id() 
    
    #name定位
    driver.find_element_by_name()  
    
    #class定位
    driver.find_element_by_class_name()  
    
    #标签名定位,一般用于iframe;标签较少的也可以使用,用取下标的方式
    driver.find_element_by_tag_name() 
    
    #xpath定位,可以用firepath来获得这个定位
    driver.find_element_by_xpath()  
    
    #css定位
    driver.find_element_by_css_selector() 
    
    #a标签的文本定位
    driver.find_element_by_link_text()  
    
    #a标签的局部文本定位
    driver.find_element_by_partial_link_text()   
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    三.基本用法:

    from selenium import webdriver
    #导入selenium库
    
    driver = webdriver.Chrome()
    #这是Google驱动
    
    driver.get('https://www.baidu.com')
    #打开网页
    
    print(driver.title)
    #输出网页的title
    
    driver.quit()
    driver.close()
    #关闭浏览器
    
    #第二种
    driver_path=r"geckodriver.exe" #驱动
    cls.driver=webdriver.Firefox(executable_path=driver_path)#火狐浏览器
    cls.driver.get('https://www.baidu.com')
    cls.driver.maximize_window()
    
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    浏览器的常用方法

    driver.set_window_size(wide,high)
    #窗口宽、高
    
    driver.back()
    #页面后退
    
    driver.forward()
    #页面前进
    
    driver.refresh()
    #页面刷新
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    driver.title
    #用于获得当前页面的标题
    
    driver.current_url
    #用户获得当前页面的URL
    
    driver.find_element_by_id("").clear()
    #清除文本
    
    driver.find_element_by_id("").send_keys("selenium")
    #模拟按键输入selenium
    
    driver.find_element_by_id("").click()
    #单机元素
    
    driver.find_element_by_id("").submit()
    #回车提交
    
    driver.find_element_by_id("").text
    #获取元素的文本
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    鼠标操作

    #运行时需要导入
    from selenium.webdriver.common.action_chains import ActionChains
    
    apple = driver.find_element_by_id("wk")
    
    #执行所有 ActionChains 中存储的行为;
    ActionChains(driver).context_click(apple).perform()
    #右击
    
    ActionChains(driver).double_click(apple).perform()
    #双击
    
    ActionChains(driver).drag_and_drop(apple).perform()
    #拖动
    
    ActionChains(driver).move_to_element(apple).perform()
    #鼠标悬停
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    键盘操作

    driver.find_element_by_id("").send_keys(Keys.CONTROL,'a') 
    #全选(Ctrl+A)
    
    driver.find_element_by_id("").send_keys(Keys.CONTROL,'c') 
    #复制(Ctrl+C)
    
    driver.find_element_by_id("").send_keys(Keys.CONTROL,'x') 
    #剪切(Ctrl+X)
    
    driver.find_element_by_id("").send_keys(Keys.CONTROL,'v') 
    #粘贴(Ctrl+V)
    
    driver.find_element_by_id("").send_keys(Keys.F1)
    #键盘 F1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    问题&解决

    1.pyinstaller在pycharm中下载失败,在cmd的pip install pyinstaller下载依然失败

    ​ 解决方案:

    ​ 下载一个pyinstaller-3.6-py2.py3-non-any.whl文件,再输入

    ​ pip install pyinstaller-3.6-py2.py3-non-any.whl下载即可(要进入whl该文件所在目录 下载)

    【注意:要先配置好环境变量】

    1. pyinstaller打包后执行exe程序提示没有某模块
      解决方案:
      run放哪exe就放哪,不然就改模块里面的导入路径

    3.经常出现找不到该元素的错误,代码无误

    ​ 代码运行太快,页面还没加载出来,加一个time.sleep()

    4.用class定位不到元素

    ​ 单独用class属性定位,可能会有多个元素是相同的class属性,需要找目标元素的唯 一属性定位。

    5.implicitly_wait()与time.sleep()之间的区别

    ​ (1)implicitly_wait()表示隐式等待,如果找不到元素会一直循环访问直到时间用尽

    ​ (2)time.sleep()表示显式等待,固定等待时间

    ​ (3)WebDriverWait(driver, 20, 0.5).until(expected_conditions.alert_is_present())

    ​ 显式等待:显式等待是对元素的等待;在每次进行元素查找之前都需要强调一次:

    其中,20s表示最大等待时间,0.5s表示轮询时间间隔;检查到元素即停止等待,执行下一个操作;

    6.弹出窗口的处理

    如果是浏览器自带的弹出窗口,即元素定位不到的,用switch_to_alert()处理就可以。如果是开发人员自写的窗口,用元素定位直接操作即可。

    7.document的运用,移除增加元素

  • 相关阅读:
    摸鱼有理:大脑一思考就在积累毒素,必须休息才能清除|Cell子刊
    uboot - 驱动开发 - dw watchdog
    Java并发编程之可见性分析 volatile
    简单看懂编译链接
    基于Python开发的图片批量处理器(源码+可执行程序+程序配置说明书+程序使用说明书)
    《Mybatis 手撸专栏》第8章:把反射用到出神入化
    Hibernate认识与入门
    js验证字符串是否是时间日期格式
    尚医通 (十七) --------- 数据字典开发
    Linux中进程的创建过程
  • 原文地址:https://blog.csdn.net/qq_46158060/article/details/125469864