Leonardo拥有超过十年的敏捷测试软件测试经验, load testing, continuous delivery, 主要是测试自动化. He’s capable of working with a wide variety of software quality tools and environments. 李奥纳多获得了测试人员基础水平和测试人员高级水平的认证,并拥有软件分析/开发的技术许可证和商业管理专业的研究生学习.
United KingdomToptal Member Since October 24, 2019
Fayaz is a DevOps engineer and architect with experience in designing end-to-end solutions. 他对多个AWS拥有丰富的云和基础设施专业知识, Azure, 和谷歌云认证. 他专门研究监控工具(ELK), Zabbix, 普罗米修斯)和Python自动化, Ansible, Terraform, and Docker. Fayaz实现了Jenkins CI/CD管道来构建, test, and deploy large apps, 包括microservices, with zero downtime.
没有Toptal就不会有Tripcents. Toptal Projects使我们能够与产品经理一起快速发展我们的基金会, lead developer, and senior designer. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. Toptal团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们像其他人一样贡献并拥有开发的所有权. 我们将继续使用Toptal. 作为一家初创公司,它们是我们的秘密武器.
Brantley Pace, CEO & Co-Founder
Tripcents
我对我们与Toptal的合作经验非常满意. The professional I got to work with was on the phone with me within a couple of hours. 在和他讨论了我的项目后,我知道他就是我想要的候选人. 我立即雇用了他,他没有浪费时间就完成了我的项目, 甚至通过添加一些很棒的设计元素来增加我们的整体外观.
Paul Fenley, Director
K Dunn & Associates
与我合作的开发者都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. Now it isn't.
Ryan Rockefeller, CEO
Radeeus
Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, from Day 1, 沉浸在我们的行业中, 与我们的团队无缝融合, understood our vision, 并产生了一流的结果. Toptal使与高级开发人员和程序员的联系变得非常容易.
Toptal's developers and architects have been both very professional and easy to work with. The solution they produced was fairly priced and top quality, reducing our time to launch. Thanks again, Toptal.
Jeremy Wessels, CEO
Kognosi
我们与Toptal合作非常愉快. They paired us with the perfect developer for our application and made the process very easy. 它也很容易超出最初的时间框架, 我们可以在整个项目中保持同一个承包商. We definitely recommend Toptal for finding high quality talent quickly and seamlessly.
Ryan Morrissey, CTO
应用商业技术有限责任公司
我对Toptal印象深刻. 我们的开发人员每天都和我交流,他是一个非常强大的程序员. 他是一个真正的专业人士,他的工作非常出色. 5 stars for Toptal.
Pietro Casoar, CEO
Ronin Play Pty Ltd
与Toptal合作是一次很棒的经历. Prior to using them, I had spent quite some time interviewing other freelancers and wasn't finding what I needed. After engaging with Toptal, they matched me up with the perfect developer in a matter of days. 与我一起工作的开发人员不仅提供高质量的代码, 但他也提出了一些我没有想到的建议. 我很清楚,阿莫里知道自己在做什么. Highly recommended!
在希格尔的早期, 我们需要一流的开发者, at affordable rates, in a timely fashion. Toptal delivered!
Lara Aldag, CEO
Higgle
Toptal能让你轻松找到合适的人选,让你放心,因为他们有能力. I would definitely recommend their services to anyone looking for highly-skilled developers.
Michael Gluckman,数据经理
Mxit
Toptal’s ability to rapidly match our project with the best developers was just superb. 开发人员已经成为我们团队的一部分, 我对他们每个人所表现出的敬业精神感到惊讶. For those looking to work remotely with the best engineers, look no further than Toptal.
Laurent Alis, Founder
Livepress
Toptal让寻找合格的工程师变得轻而易举. 我们需要一个有经验的ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. After making our selection, the engineer was online immediately and hit the ground running. It was so much faster and easier than having to discover and vet candidates ourselves.
Toptal offers a no-compromise solution to businesses undergoing rapid development and scale. 我们通过Toptal签约的每一位工程师都迅速融入了我们的团队,并在保持惊人的开发速度的同时,将他们的工作保持在最高的质量标准.
Greg Kimball,联合创始人
nifti.com
如何通过Toptal招聘Selenium开发人员
1
与我们的行业专家交谈
Toptal的工程总监将与您一起了解您的目标, technical needs, and team dynamics.
At Toptal, 我们对Selenium开发人员进行了彻底的筛选,以确保我们只为您匹配最优秀的人才. Of the more than 200,每年有5000人申请加入Toptal网络, 只有不到3%的人能达标. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, technical needs, and team dynamics. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.
Selenium项目源于Jason Higgins的日常工作, Paul Gross和Jie Tina Wang在2004年为ThoughtWorks工作过. 同时向他们的同事展示Selenium, 保罗·哈曼特看到了巨大的潜力, 并建议将Selenium开源,并使其以驱动模式工作,从而使其他编程语言可以访问它. 因为它从一开始就是开源的, 许多人的贡献使它成为今天强大的web自动化工具.
硒IDE也发挥了很大的作用,使 Selenium project 和它一样流行和广泛. 由Shinya Kasatani创建的Firefox插件, 该工具使用户能够记录浏览器操作,然后在浏览器中以一组Selenium核心命令的形式播放. They could then save those actions to a file and reuse them later as a self-contained script.
版本1被证明是一个有趣的框架, 这让很多人对自动化测试过程有了更多的认识. Version 2 built upon that, introduced WebDriver as an interface, and is about to become W3C standard. Selenium的WebDriver架构也被用作移动应用测试框架的起点,例如 Appium, Selendroid and iosdriver.
Selenium Library
Selenium使web应用程序和站点的自动化成为一个简化的过程. 它使用在HTML4/HTML5/CSS标准中找到带有选择器的网页元素的方法. That way, 使用一些聪明的脚本可以减轻手动测试web应用程序的负担. Selenium WebDriver接口可以使用任何现代浏览器,并使用HTML/CSS选择器自动化网站和应用程序,这些选择器以类似于实际用户使用浏览器的方式进行交互-只是快一点.
硒实际上由三个独立的成分组成:
Selenium WebDriver (Selenium 2)
Selenium IDE
硒遥控器
Selenium WebDriver知识是所需的关键技能, 使用Selenium驱动程序编写测试是我们正在寻找的. 硒遥控器是Selenium Server的一部分, a component that allows Selenium browser tests to run in parallel on dedicated servers grid, 并且只是构建自动化系统的附加组件.
Selenium被设计成一个易于使用的框架, 这样技术经验较少的人就可以使用它来满足日常需求. Anyone can actually write a script using Selenium IDE without even leaving the browser. 但实际上,在可以使用它的人之间不仅仅只有一条细微的界限, 一个擅长于此的人, 以及精通Selenium开发和测试过程的人. Selenium developers need to be more than just coders and data driven in most of the cases. 在接下来的章节中,我们将看到在选择完美的候选人时可以评估哪些技能.
这个问题没有直接的答案, 因为这取决于很多不同的因素,比如项目规模, solution complexity, manpower, and deadlines. If a web developer needs to spend half of his working time automating and coding tests, 这并不是真正的高效. 有经验的专门的Selenium开发人员将花费更少的时间进行自动化, 从一开始就知道如何以最好的方式组织代码, 还将创建一个测试的质量层. 他们还可以提供见解和技巧,使这些功能更加用户友好和高效. 覆盖在没有自动化的情况下不容易测试的边缘情况和情况,可以帮助为最终产品创建另一层安全性. 这取决于你对产品的最终质量有多坚定,并从第一天起就让它发挥应有的作用.
问:自动化一个项目及其所有特性是否总是合适的?
然而,不可否认的是,自动化在日常开发中是非常有用的, 有些情况下自动化是不合适的, or even possible. 同时,考虑到 test pyramid, 有太多的自动化UI测试并依赖于它们是不明智的, 由于所有主要的应用程序特性都必须在单元之外的级别上进行覆盖, services). 因此,只有关键的应用程序特性才需要使用UI覆盖率进行测试. 一些次要的应用程序功能可以在无人参与的情况下通过主要应用程序工作流进行测试,并对这些组件使用特定的单元测试.
QA,开发者或两者兼而有之?
问:作为开发者或QA,你是如何看待自己的?
你要找的既不是严格意义上的QA也不是开发人员. 在一个不断发展的世界里, 您正在寻找一个拥有适合敏捷开发理念的广泛技能的人. 对于Selenium开发人员来说尤其如此, 也许比你团队中的其他角色更重要. 他们当然不是传统的QA, and most of the time, 他们没有产生任何值得通过公司大门发布的代码. 他们所做的是提供支持代码,这对于减少测试时间和费用至关重要, 并给予产品远远超出常规测试工作的支持.
尽管如此,他们还是需要具备QA技能. 创建有效且有意义的测试场景, testing edge cases, 然后将它们编码为脚本应该是他们日常工作的一部分. Selenium开发人员需要理解复杂的业务逻辑和规则, because that is one of the requirements for making automation effort really worthwhile.
Selenium developers should not fear about getting their hands dirty doing manual testing, 因为让我们面对现实吧, 你可以自动化很多, 但你不必把一切都自动化. 在自动化测试效率不高以及人类判断提供的信息比计算机所能提供的更多的情况下,手动测试仍然是非常有效的. 计算机在执行方面很好,但在判断方面不行. 所以让人类做他们最擅长的事. 自动化从手工测试结束的地方开始. 使用Selenium WebDriver的自动化始终是手工工作的继承者, 因为它进一步验证了在手动测试应用程序时做出的正确判断.
需要“selenium-webdriver”
需要的小型试验/自动运行
class TestToptal < Minitest::Unit::TestCase
def setup
@driver = Selenium::WebDriver.for :firefox
end
def test_title
@driver.get 'http://pseudowhorl.weixindaka.com'
assert_equal @driver.标题:“雇佣自由职业者中最优秀的3%的开发者、设计师和其他技术人才."
end
def teardown
@driver.quit
end
end
事实上,一个人可以使用Selenium WebDriver自动化web页面或应用程序测试,而不需要任何HTML或CSS技能. Selenium can provide selectors and action specifications, and these can be used directly. But there is a big advantage if the candidate has knowledge and understanding of HTML and CSS.
Domain Object Model, or in short DOM, 是HTML页面的编程接口吗, 并且在每次加载页面时构造. 它是一个树,将页面的元素表示为具有自己属性的对象, 操作方法和它们所响应的事件. By using HTML object model, pages and their elements can be manipulated using JavaScript.
如果候选人懂JavaScript,这也是一个很大的优势. 在某些情况下,JavaScript可能是自动化部分应用程序工作流的唯一方法. 在95%的情况下,这是不需要的. But it can still be a distinguishing factor, specifically if the project is JavaScript heavy. Since it is possible to run or trigger JavaScript in the context of the Selenium WebDriver, 使其成为自动化解决方案的一部分是一个直截了当的过程.
id > name > class >= css_selector > tag > text > xpath
这也是有争议的, 但总结一下背后的逻辑, IDs are locators that are most distinctive per page and therefore should be used first. 元素名称也可以非常独特. CSS类也很棒, 特别是在使用独特的CSS类形成的网页上.
WebDriverWait = new WebDriverWait(driver, 5);
wait.直到(ExpectedConditions.elementToBeClickable(通过.id("myid")));
As you can see, 隐式等待是在驱动级完成的, 这样每当打开一个新页面, 在实际的元素查找完成之前, 司机将等待至少5秒. In reality, 在某些情况下,你必须将两者结合使用, 尽管显式等待通常被认为是更好的实践. Implicit waits are definitely better in situations where tests can be made more reliable. Using explicit waits will make tests work much faster, which can also be quite important. 明智地使用等待是关键. 如果应用程序使用大量AJAX, 适当的等待状态对于使自动化可靠地工作至关重要.
HTTP Rules
那么,当你从一个页面导航到另一个页面时,浏览器中实际发生了什么? web上的一切都是从向服务器发出HTTP GET请求开始的,并从服务器获得各种不同形式的响应, 是完整的网页, images, 保存应用程序上下文中使用的数据的声音或简单响应. 今天的互联网是多种技术的混合体, but in its core, 它仍然是那个从一开始就统治互联网的旧HTTP协议. 拥有来自众多供应商的大量api, 今天的应用程序之间的联系更加紧密,有时很难将一个应用程序与其他应用程序隔离开来. 最近出现了一种两层应用程序的趋势, 一个API层,其中所谓的微服务(后端)和UI层(前端)作为相互通信的独立工作单元. 这样的分离, Selenium测试实际上已经不仅仅是功能了, 而是一种集成测试, 它们的价值正变得更加明显.
虽然Selenium开发人员并不迫切需要了解很多关于HTTP的知识, 它可以帮助他们在很多方面实现自动化, 特别是当应用程序使用大量外部api时. He could record responses and then mock them inside tests for their speed and reliability, 他也可以直接进行HTTP调用,因为它们是应用程序的一部分. He could even make separate tests for API application layer, using tools of his choice.
问:哪些方法在浏览器中被认为是安全的?
出于安全考虑,web浏览器中只允许使用OPTIONS、GET、HEAD、POST、PUT和DELETE. 不允许使用TRACE和CONNECT等方法. Old browsers such as Internet Explorer had even more limited support for HTTP methods.
By this approach, 在不经过整个应用程序工作流的情况下,可以对测试进行参数化并验证条件行为.
将Selenium与其他工具和库结合使用
While you can do a lot by automating web sites and applications using Selenium WebDriver, 会出现需要更多东西的情况. For example, 您可以将Selenium自动化与数据库测试结合起来, 验证数据是否正确存储在数据库中. 您甚至可以创建测试报告,记录自动化测试中所做的一切,并将其保存为各种格式, 以供将来参考或CI报告.
Speaking of CI, it would be more than beneficial for Selenium developers to have knowledge about them. CI服务器是用来运行各种测试的, 构建应用程序并将它们打包成独立的包. One can use headless drivers / browsers, such as PhantomJS to run tests on CI servers, or use xvfb 运行真正的浏览器而不实际运行显示服务器. Whatever you choose, CI are invaluable for making test automation a tool that every member of team can rely on. 了解如何设置它们并为运行Selenium或任何其他类型的单元或集成测试做准备,对于开发的成功至关重要.
Communication
编程的核心是沟通. 不仅是人与机器之间,还有程序员之间. 使用代码与每个团队成员进行沟通是一项容易被忽视的技能, 因为让我们面对现实吧, 没有人知道明天会发生什么:其他人会加入这个项目, some parts of application will miss documentation and no one will know how it was coded, 或者你会发现自己在每次有人尝试使用它之前都要解释代码的某些部分. 不可读的代码会让您感到悲伤,觉得您或其他人首先应该做得更好. Documentation is great, but code itself needs to be clear and as communicative as possible.
对于Selenium开发人员, 最重要的是他们对项目中的每件事都给出客观的意见, be it code, design, 特性集和实现, 并且在团队的每个成员之间来回交流. 这并不像看起来那么容易, 因为我们都是人, 有自己的看法, have our own pride, 有时,这种混合会成为做出正确决策和推动项目进展的障碍. 掌握沟通不是学校能教的, 至少没有作为任何官方研究的一部分. 这是社会智力的一部分,不是每个人都有.