51
回答
高手问答第 169 期 —— 聊聊 Web 测试中的那些囧事
终于搞明白,存储TCO原来是这样算的>>>   

OSCHINA 本期高手问答(2017 年 9 月 6 日 — 9 月 12 日)我们请来了黄勇老师@hy1984427 和大家一起探讨 Web 开发中测试的种种问题。

黄勇,ThoughtWorks QA Lead。先后任职于博彦科技、普华永道 GTS 和 ThoughtWorks;曾多次参与 Oracle、微软、普华永道、澳洲电信等公司的大型项目。合作创办和多次组织 BQConf,在多届 BQConf 和第一届中国移动互联网测试大会分享。关注新的技术和业界趋势、热衷分享。著有《移动App测试的22条军规》等,博客:http://hy1984427.github.io/

测试是 Web 开发中十分重要的一环,因为它是与安全息息相关的,测试人员稍有不慎,遗漏了一个 bug,可能就会铸成大错。所以,测试可以很简单,也可以很复杂。可以说测试是一个与 Bug 斗智斗勇的岗位。

作为一名测试,相信都会遇到过这些问题 —— 产品上线了,Bug 出来了,为什么当初测试时把它遗漏了?开发过程中,不知道自己编写的代码质量怎样,哪些 Bug 会变身为“大笑话”?发现一个 Bug,提交请求修复时,却被要求提供更多信息。怎么提供,不知道,找不着,没头绪。 

因此本期高手问答我们邀请到了资深 QA 黄勇老师@hy1984427 和大家一起探讨 Web 测试中的种种问题。

本期问答内容:

  1. 功能测试
  2. 性能测试
  3. 安全性测试
  4. 自动化测试
  5. 移动Web测试
  6. 非功能性测试

或者有其他关于 Web 测试的问题,也欢迎大家积极提问。

为了鼓励踊跃提问,@华章 会在问答结束后从提问者中抽取 5 名幸运会员赠予《Web测试囧事》一书。

购买链接:https://item.jd.com/12110287.html

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就 Web 测试方面的问题向黄勇老师@hy1984427 提问,请直接回帖提问。

举报
局长
发帖于2个月前 51回/3K+阅
共有51个答案 最后回答: 5天前

引用来自“hbliyong”的评论

@hy1984427 自动化测试都有哪些比较好用的工具可以推荐?

大家如果对于开源的测试工具感兴趣的话,可以查看这个网站上的各种开源测试工具:http://www.opensourcetesting.org/

他之前回答其他人的,这个 答案应该符合你的问题,拿去不谢~~

引用来自“sca7”的评论

@hy1984427  目前自动化测试主流的框架是什么?大部分公司的自动化测试人员有多少个岗位需求?

针对Web测试的话,最主流的驱动工具还是Selenium-WebDriver。当然大家使用的都是Selenium-WebDriver加壳之后的框架,例如Capybara这些,然后再配套着Cucumber或者Concordion这些BDD框架。一般来说为了测试代码的整洁、维护性和重用性,也会使用页面模式的工具例如SitePrism。

引用来自“hyuan”的评论

@hy1984427 微信公众号web应用是否可以自动化测试(特别有些功能链接需要在微信授权时才能访问)

其实我们之前的项目过程中就对微信公众号的web应用进行过自动化测试,基本的测试方法都是一样的,除了要设置分辨率的大小。对于需要微信授权的情况,我们采取的是在测试环境中添加专门用来做授权的服务器,而不通过微信,也就是使用模拟的方式在测试环境中绕过授权。或者也可以在测试环境中长期保留并使用经过微信授权的token。当然这么做之后,我们还需要在类生产环境中再次测试授权功能本身是否正常。

引用来自“开源中国安全官”的评论

@hy1984427  自动化测试怎么搞?好像很多都是公司自研的,有什么开源好用的吗 ??

一般来说,我在做自动化测试之前并不会先考虑“怎么做”,而是考虑需不需要做。

我见过太多的项目有几万条自动化测试用例,一炮能跑几天甚至一周的,但是没人清楚这些测试是否有效,测试的究竟是什么。

这种自动化测试只是防御性的,而且会大大延长测试的时间,效率很低。而我们之所以采用自动化测试的初衷就是要提高测试的效率。

所以说我们先要规划好测试哪些功能模块,以及如何测试(测试金字塔的层级),采取哪些测试类型(功能,性能,安全性,探索测试等),之后才是使用什么样的工具和框架。

如果上面这些都明确了,针对不同类型的测试,业界基本都有很主流的测试工具,绝大多数我们碰到的问题都有人解决过了,所以实施起来并不会存在很大问题。

至于你说的很多自动化测试的工具都是自研的,却是我们看到很多好的工具都在某些公司内部使用,例如微软内部就有能记录探索测试中每个步骤,便于重现bug的工具。但是很多公司为了增强在业界的影响力,都会在自己使用成熟之后把这些项目开源,例如Protractor就是从Google开源出来的。而且现在主流的测试工具很多都是开源的,完全能满足我们的需要。

大家如果对于开源的测试工具感兴趣的话,可以查看这个网站上的各种开源测试工具:http://www.opensourcetesting.org/

引用来自“归园田居”的评论

@hy1984427 php 写单元测试意义有多重要?phpunit是最佳选择吗?公司的测试环节太弱了,没有专人负责测试,产品质量无法保证。

不好意思,没有做过PHP的单元测试,不了解有什么限制,以及效果如何。

但是我们做自动化测试(单元、集成、系统等测试)的目的在于提高测试效率,其核心是提高整个团队的测试水平和产品质量。

如果我们做单元测试并不能达到这一点,或者是使用别的途径做到这一点的效率更高,我认为单元测试并不是不可或缺的,因为我见过有些项目为了保证单元测试的覆盖率和通过率,不写任何的断言。

一般我们写自动化测试,都是针对故事卡来写的,所以我们首先会问针对这个故事卡,或者对于其他模块有影响的变化,我们能不能通过单元测试来覆盖,如果不能,那能不能通过集成测试来覆盖,如果还不行,是不是可以通过自动化的功能测试来覆盖。都不行的话只能通过手动测试覆盖了。所以并不是说一定非要用单元测试来覆盖所有模块的。例如iOS开发中的MVVM模式,对于Controller依赖UIKit库的情况,就很难对Controller进行单元测试,这时候我们就可以通过其他类型的测试来覆盖了。

针对你的后一个问题,其实很多创业公司都是没有专职测试的,而它们是如何保证质量的呢?其实和我在之前的回复中说明的一样,这些创业公司会更明确做测试的投入产出比,以及在那些模块/功能做什么样的测试才能最有效率。所以其实我认为,任何测试的核心都是测试设计和分析。

最后引用质量管理大师:威廉·爱德华兹·戴明(William Edwards Deming)的名言“质量不是测试出来的”,而应该“质量内建Build Quality In”。所以我认为测试人员更重要的能力是给开发人员以及整个团队进行测试赋能。

顶部