51Testing软件测试论坛

标题: 【你来问我来答第84期】:从手工测试到Selenium自动化(活动结束) [打印本页]

作者: lsekfe    时间: 2017-8-1 10:33
标题: 【你来问我来答第84期】:从手工测试到Selenium自动化(活动结束)
[attach]108102[/attach]
论坛IDjessie_verson
真实姓名: 丁佳晶
现任公司: 博为峰
现任职位: 测试讲师
工作经验:上海交通大学本科毕业,14年以上的软件测试行业从业经验,软件质量检验高级工程师。曾任迪比特的测试主管、软通动力和西本新干线的测试经理。在通信、物流、金融期货、医疗等行业都有丰富的软件测试和团队管理经验。从事大宗商品交易平台和物流ERP测试期间,获上海市科学技术奖三等奖和中国物流与采购联合会科技进步一等奖。在软件测试培训行业亦有多年的测试培训主管经历,对授课技巧和学生心理把握上皆有丰富的经验。
丁老师课程推荐:
《Selenium自动化测试通关(基于java)》http://www.atstudy.com/course/270
还有Jmeter、QTP、Linux、QC等更多课程可浏览http://www.atstudy.com/user/5678

另《Selenium+RobotFramework直播课(基于Python)》正在报名中,详情咨询QQ 2852509883或http://h.atstudy.com/atstudy/python/

各位会员可以在8月10日前以回帖的方式向客座专家提问。
(请大家围绕本期客座专家的擅长领域进行提问、探讨)
客座专家将在8月11日—8月31日为大家集中解答。

机会难得,欢迎大家踊跃提问!


作者: applepen    时间: 2017-8-1 13:25
提问:
1.就目前Selenium只能做Web跟Android App方向的自动化是吗?
  像IOS App跟 Windows桌面应用的自动化就无法用Selenium实现对吗?

2.Selenium的Web自动化,除了用Fire bug和Fire path 来获取页面元素进行定位,还有其他更好的方式吗?
3.DOM定位,Xpath等,项目中使用何种定位更加准确?
4.QTP跟Selenium中Selenium的优势有哪些(除了开源性跟价格以外)?
作者: jingzizx    时间: 2017-8-1 13:29
顶一个先!
作者: voicetester    时间: 2017-8-1 13:35
必须支持!
作者: 清晨一缕阳光    时间: 2017-8-1 14:44
先顶一个再说!
作者: 梦想家    时间: 2017-8-1 16:18
顶一下
作者: seagull1985    时间: 2017-8-1 16:19
唉哟。。不错哦。。顶一个
作者: Cherish308    时间: 2017-8-1 16:52
本帖最后由 Cherish308 于 2017-8-1 16:56 编辑

老师,您好:
目前我已经学习了Selenium的一些基础API,操作web上页面基本元素,结合python的unittest框架,能写一些测试代码,
但是想进一步提高自己的技术水平,应该要从哪些方面入手呢?
麻烦您给一些意见。

作者: jessie_verson    时间: 2017-8-1 17:13
applepen 发表于 2017-8-1 13:25
提问:
1.就目前Selenium只能做Web跟Android App方向的自动化是吗?
  像IOS App跟 Windows桌面应用的自 ...

1、selenium的创作团队很明确说了,他们只专注WEB测试.
     你如果想测试APP,给你找了个帖子,讲的很好。https://www.zhihu.com/question/19716849
     如果你想测试CS的,QTP是个不错的选择,当然价格不在考虑范围内。
2、Firebug和Firepath,基本上足够你去定位元素了,如果你对XPATH熟悉,Firebug一个就足够了。
     主要的定位方式:id,name,identifier,js,link,css如果这些都不行,那么用xpath几乎能百发百中的。
3、能用固定的属性,比如id,name(当然要唯一),tagname等的,尽量去用。没办法了再用XPATH,这样后期维护会省很多力气,减少因为程序员调皮改代码影响你的脚本。
4、QTP跟Selenium打起来的话,很难说谁会赢。开源和价格不谈以外,QTP有keyword view不会编程的照样做自动化,webdriver就会傻瞪眼,除非谁还把seleniumIDE挖出来玩玩。
另外,QTP很多功能都做了封装,留给用户的可能就填一个数据或者改个配置就能完成一项自动化测试,比如,QTP的参数化,简化到了你只需要填写excel表格就可以自动循环和调用,而webdriver,完成一个参数化绝不少于4页A4的代码。所以从易用性上来说,selenium估计是打不过QTP的。
但是,事情的转机往往就在价格上面了,QTP要加一个插件,或者定制个什么功能,代价不菲;selenium自然都是开源的。这一点,如果你不让我谈的话,我觉得真没啥好说了,还有比这个更能打动老板的心吗?
如果再要掰一点出来,QTP用了那么多年,会的人比较多,招人比较好招吧;webdriver对招人来说,要求就高很多很多了,要做过多年测试(会设计数据)+多年开发(会编写脚本)。
作者: jessie_verson    时间: 2017-8-1 17:14
Cherish308 发表于 2017-8-1 16:52
老师,您好:
目前我已经学习了Selenium的一些基础API,操作web上页面基本元素,结合python的unittest框架 ...

看实例,看好的实例,看效率高的实例,最后把好的实例收藏起来
作者: 杨米苏    时间: 2017-8-2 09:35
担心学QTP被淘汰
作者: giggs456    时间: 2017-8-2 17:37
我做自动化已经6年了,最近发现seleniumhq官网上说selenium支持Winium.Desktop, Winium.StoreApps,我的理解是现在selenium应该已经能支持手机端和桌面应用程序的测试了,只是目前功能还不算很强大。我使用了一下Winium.Desktop的对应功能的jar包,用selenium的driver调起本地的calc计算器实现简单的运算,我自己写了一点代码,但是最大的困难还是在于很难识别桌面应用程序的各个组件的元素(微软的小工具UISpy.exe不太好用,虽然也是通过name, id, xpath去定位元素),请问楼主您是否了解,是否有好的工具或者其他办法,可以识别桌面应用程序中各组件元素呢?十分感谢。
作者: 黑色的杰克    时间: 2017-8-2 18:14
提问:selenium测试能与开发同步进行吗,请从多方面详细解答,谢谢!
作者: 自动化小白    时间: 2017-8-3 15:49
提问:
老师 你好,我是一个刚接触测试行业自动化测试的萌新,请问能怎样快速的上手selenium工具呢?
作者: 宋苏川    时间: 2017-8-3 16:20
我试了一下win7+apium,这个确实没有iOS图标,Mac上有
作者: 宋苏川    时间: 2017-8-3 16:23
试了一下win7和appium,确实没有iOS图标,Mac上有。selenium那8种定位都失败的话,可以使用js,然后执行js。比如定位scroll和操作scroll
作者: 菜鸟小丸子    时间: 2017-8-4 10:44
大神,你好:
最近在用selenium+java+testng写的页面自动化,遇到一个问题,用下面的方法实现模拟F12页面出现开发者工具的操作总是不生效,但是用例执行也不报错,就是预期结果没有出现(跟debug看的),能帮忙看一下不?多谢!我的脚本如下:
driver.get(https://www.baidu.com/);
driver.manage().window().maximize();
Actions builder = new Actions(driver);
builder.sendKeys(Keys.F12).perform();
作者: zyzyzx1    时间: 2017-8-9 10:48
丁老师 您这么年轻 就能积累这样多年的工作经验和技术知识 而且还是位大美女
不由得暗自叹息 同为测试从业者 差距之大 天壤之别
言归正传 特来请教您发布的相关课程问题
1、QTP 类的 请问相关课程对于win平台下的COM对象 讲解有多少
有没有全面详细的COM对象资料参考 毕竟win平台下脚本 靠的就是各种COM对象的便捷方法对吧
2、selenium 类的 请问相关课程对于JS脚本对象验证 有没有详细的资料
在selenium UI自动化中加入JS脚本验证 有没有好的资料和方法去学习
3、Jmeter和LR 性能类的 请问在定位接口性能问题外
然后应该去学习分析定位哪些方面的性能问题 数据库或服务器还是系统所用框架
有没有途径或资料去学习去研究
作者: zyp9091    时间: 2017-8-10 16:51
老师,什么是插件包测试,测试的对象是什么?
作者: jessie_verson    时间: 2017-8-10 18:15
giggs456 发表于 2017-8-2 17:37
我做自动化已经6年了,最近发现seleniumhq官网上说selenium支持Winium.Desktop, Winium.StoreApps,我的理 ...

我主要的经验都是WEB,C/S以及桌面应用确实测得很少,要测也是手工测试的。所以这个领域不太敢造次。
这些年来,对于cs的测试,大部分网友还是推荐QTP。另外还有个工具不知道你用过没有TestComplete。据用过的网友说,还是不错的。
也许只能帮到你这里了。
作者: jessie_verson    时间: 2017-8-10 18:19
黑色的杰克 发表于 2017-8-2 18:14
提问:selenium测试能与开发同步进行吗,请从多方面详细解答,谢谢!

可以的,而且是必须的。
虽然界面不稳定,会给你的脚本带来很多维护量。但是一旦软件做好了,你发现有些东西不能识别到,想让开发给你加点属性,估计开发是不愿意的。
所以开发在做一些核心控件的时候,你完全可以用selenium先识别下,看下能不能识别到,不能识别到的,让开发帮下忙加点属性,这个时候,也不会影响他们工作太多。
对于一些完整的流程,大可到了界面稳定后再串起来。
作者: jessie_verson    时间: 2017-8-10 18:21
自动化小白 发表于 2017-8-3 15:49
提问:
老师 你好,我是一个刚接触测试行业自动化测试的萌新,请问能怎样快速的上手selenium工具呢?

先选一个自己熟悉的selenium能支持的语言吧。
然后找一些实例去看。自己动手再实践,做过几个实例就慢慢上手了
作者: jessie_verson    时间: 2017-8-11 10:23
zyzyzx1 发表于 2017-8-9 10:48
丁老师 您这么年轻 就能积累这样多年的工作经验和技术知识 而且还是位大美女
不由得暗自叹息 同为测试从业 ...

第一个问题,你指的COM对象是桌面应用或者C/S的吗?因为这个外面用得少,所以咋们这个QTP课程中没有这块,主讲web。给你找了个帖子,我看了一下写的挺详细。http://blog.sina.com.cn/s/blog_62b8fc330100lwrp.html
第二个问题,在讲selenium课程的时候,讲到一部分js的内容,主要是有的控件无法识别,采用JS的方式去识别。
第三个问题,这两个性能工具,无论哪个,做完测试后,都需要对性能指标进行一下分析,我在jmeter这个课程中,穿插了一些性能指标的分析内容,比如如何判断内存泄漏,CPU瓶颈,如何定位性能问题,性能调优需要注意的点响应时间图分析等等。
作者: jessie_verson    时间: 2017-8-11 10:25
杨米苏 发表于 2017-8-2 09:35
担心学QTP被淘汰

这个怎么说呢,现在还是有一些公司在用QTP的,不过都是些大公司,因为毕竟售价比较贵,公司的项目成本会提高;但是从易用性和上手度上来说,这个都是selenium所不及的。
作者: jessie_verson    时间: 2017-8-11 11:04
菜鸟小丸子 发表于 2017-8-4 10:44
大神,你好:
最近在用selenium+java+testng写的页面自动化,遇到一个问题,用下面的方法实现模拟F12页面 ...

这个我笔记本是fn+F12的,不知道你是不是也是,所以单纯用action是驱动不起来的。
所以我改用Robot了。package test;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class F12 {
        public static WebDriver driver=null;

        @BeforeClass
        public static void setUpBeforeClass() throws Exception {
                System.setProperty("webdriver.chrome.driver","C:\\browserdriver\\chromedriver.exe");
                driver=new ChromeDriver();
        }

        @AfterClass
        public static void tearDownAfterClass() throws Exception {
                driver.quit();
        }

        @Test
        public void test() throws InterruptedException, AWTException {
                driver.get("https://www.baidu.com/");
                Robot robot = new Robot();
                robot.keyPress(KeyEvent.VK_F12);
                robot.keyRelease(KeyEvent.VK_F12);
                Thread.sleep(3000);
        }

}



作者: jessie_verson    时间: 2017-8-11 11:19
zyp9091 发表于 2017-8-10 16:51
老师,什么是插件包测试,测试的对象是什么?

不知道你指的插件包有没有什么特殊性,我理解的插件包无非是安装好了插件后,某个软件中多了一个功能,然后做正常的功能测试即可,然后就是不要忘记测试,卸载了插件包后,软件有没有什么异常
作者: 小扳手    时间: 2017-8-16 17:50
提问:    1,编写测试用例时,如何进行思考。如,我现在工作的公司经常对app内部功能进行改版,我编写用例时,总会忽略一些重要的细节,但是事后会马上想起来。所以想问一下如何能够做的更好。
作者: testingabc    时间: 2017-8-21 19:44
努力啊!!!!!
作者: kexinqw11    时间: 2017-8-25 10:32
老师,您好!我想让你解答下我的问题,非常感谢~
1.数据驱动你们是怎么做的,用的是testng的dataprovider+xml/excel 吗? 如果是这样数据回写你们是怎么处理的呢?
2.UI自动化做成什么样,才能使其他手工测试人员更容易上手,让不怎么懂代码的他们也能建议使用自动化?
作者: jessie_verson    时间: 2017-8-28 13:59
小扳手 发表于 2017-8-16 17:50
提问:    1,编写测试用例时,如何进行思考。如,我现在工作的公司经常对app内部功能进行改版,我编写用例 ...

编写测试用例,就像我们写作文,一般都要先打个大纲稿,先把要写的东西提一下,再细化里面的细节。
在测试用例里面,这个大纲就是测试需求,写的时候只要点到为止,并不需要怎么去测试的细节,这样就能把精力集中在思考要测试哪些东西上面。
比如,测试一个输入框,就要考虑要测哪些东西,正常的输入,异常的输入数据,用户易用性测试等等。等想完了要测试哪些点后,再逐一去思考每个点的测试步骤。
作者: jessie_verson    时间: 2017-8-28 14:10
kexinqw11 发表于 2017-8-25 10:32
老师,您好!我想让你解答下我的问题,非常感谢~
1.数据驱动你们是怎么做的,用的是testng的dataprovider+ ...

1、我用的比较多的还是POI的那一套。数据还是写在excel里面的。这样后期维护比较方便。读取excel的代码可以这样写:
  //读取excel文件
        InputStream is = new FileInputStream(filesrc);
        POIFSFileSystem fs = new POIFSFileSystem(is);
        HSSFWorkbook wb = new HSSFWorkbook(fs);
        HSSFSheet sheet = wb.getSheetAt(0);
        if(sheet==null){
            System.out.println("暂无数据,请输入测试数据");
        }
        //获取文件行数
        int rows = sheet.getLastRowNum();

2、自动化测试,一般测试人员都比较犯憷,无非就是那些代码太长,不好理解,所以,有些公司就在QTP或者SELENIUM的基础上,做了封装,对外只留了一些数据输入的接口,这样普通的测试人员,只要把精力放在设计测试数据上就好了,然后再执行,中间的逻辑代码对他们都是黑盒。你上面第一个问题的数据驱动不就是一个典型,excel留给他们去设计就简单了。


作者: Luby    时间: 2017-8-30 17:55
提问丁老师:目前是一名手工测试人员,想从功能向自动化提升,但是没有代码基础,应该怎么进步呢?先学语言还是先学工具?谢谢
作者: jessie_verson    时间: 2017-8-31 16:34
Luby 发表于 2017-8-30 17:55
提问丁老师:目前是一名手工测试人员,想从功能向自动化提升,但是没有代码基础,应该怎么进步呢?先学语言 ...

你应该先选定一个你想使用的自动化的工具,很多自动化工具都有一些基本使用操作是不需要编程技能的,都是图形化的,你可以先从这个图形化的操作开始,熟悉了工具的机制后,再学习语言,进行深层次的编程。

或者,我们大学里面多少都学过一些编程语言,这些是你熟悉的,你可以通过这个熟悉的语言去挑选工具。不过还是推荐看第一条
作者: dswka    时间: 2017-11-17 05:17
应该加分呀
作者: 梦想家    时间: 2018-1-2 11:51
selenium    如何判断测试结果
作者: cclovely    时间: 2018-1-2 11:52
围观大神回答,学习了~
作者: 清晨一缕阳光    时间: 2018-1-2 12:02
赞一个!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2