Testing 如果没有';你不会真的写代码吗?

Testing 如果没有';你不会真的写代码吗?,testing,qa,Testing,Qa,例如,我假设SDET就是这样做的 他们实际上并不编写功能代码,但他们能够编写集成/单元测试,对吗 但是有人能学会阅读代码然后开始编写测试吗 这实际上是个好问题。当我只从事手工测试时,我也在同一个地方。下面是我在过渡到自动化时的经历。要回答您的问题,是的,有人可以阅读代码并开始编写测试,但您需要理解要测试的代码 在测试应用程序时,会使用不同类型的测试方法。这些测试是分层进行的,以便正确测试应用程序。以下是分层的外观: 1) 单元测试:这部分通常由开发人员编写。这是因为他们已经编写了代码,并且知道代

例如,我假设SDET就是这样做的

他们实际上并不编写功能代码,但他们能够编写集成/单元测试,对吗


但是有人能学会阅读代码然后开始编写测试吗

这实际上是个好问题。当我只从事手工测试时,我也在同一个地方。下面是我在过渡到自动化时的经历。要回答您的问题,是的,有人可以阅读代码并开始编写测试,但您需要理解要测试的代码

在测试应用程序时,会使用不同类型的测试方法。这些测试是分层进行的,以便正确测试应用程序。以下是分层的外观:

1) 单元测试:这部分通常由开发人员编写。这是因为他们已经编写了代码,并且知道代码的功能,因此更容易编写。我是一名SDET,我编写了单元测试。只有一个机会出现了,那就是当我们重构代码时,有很大的空间来编写单元测试。在单元测试中,通过给函数指定一些值并验证期望值,可以对函数进行隔离测试。这不是SDET所做的事情,但如果有机会,它应该能够做到

2) 集成测试:这部分通常也是由开发人员编写的,但是集成测试的定义有点模糊。这意味着要单独测试多个模块。这可以是后端的模块,也可以是前端的模块,但不能在一起。帮助实现这一点的框架是针对您正在使用的技术的代码级集成测试。与Angular应用程序一样,有测试组件的HTML和CSS的深度集成测试,也有只测试两个组件逻辑的浅层集成测试。这可以由SDET编写,但通常由开发人员编写

3) API测试(基于合同的测试):Pact帮助我们实现这一点。还有其他工具,如rest-assured、postman和jmeter,可以帮助测试API端点。Pact帮助测试前端API的集成,并验证后端API的集成。这在微服务中非常流行。这可以由开发人员或SDET编写

4) 端到端测试:这是SDET的唯一责任。这包括根据用户故事测试用户流。它正在一起测试整个堆栈。后端和前端。这允许SDET自动化用户将如何使用应用程序。这也称为黑盒测试。有不同的框架可以帮助实现这一点。硒、量角器、柏树、排毒等。这是SDET的唯一责任

5) 负载测试:这也是SDET所做的事情。使用诸如hey、jmeter、loadrunner等工具。这些测试允许SDET启动系统上的重载,并检查系统的断点

6) 性能测试:根据页面加载时间、SEO优化和页面元素的权重,为最终用户测试网页的性能。这是谷歌的lighthouse工具实现的,这是一个非常好用的工具。我不知道还有什么比灯塔更神奇的了,因为它给了我们很多数据,我们可以用来改进我们的网站。这是SDET的主要工作

7) CI/CD:持续集成和持续部署需要系统的体系结构知识。当您是SDET3或首席QA工程师时,您可以这样做。对于AWS和GCP这样的系统,使用Jenkins和CircleCI这样的CI构建工具,可以设置一个管道,在分支合并到主节点或创建拉请求时运行上述所有测试。创建管道需要您了解Docker、Kubernetes、Jenkins和您的测试框架。首先将测试固定化,然后构建映像并将其推送到云中的目录,然后使用映像创建kubernetes作业,每当代码中出现更改时,该作业都会运行


这些是SDET所做的工作级别。理解所有的测试框架以及所有东西是如何组合在一起的需要时间和艰苦的工作。SDET应该了解服务器、http协议、前端、后端、浏览器、缓存、管道管理和测试编排

是的,当然。您可以编写单元测试来增加代码库的测试覆盖率。这是来自软件测试工程的非常有资格的工作,因为您需要知道代码中发生了什么。这个技能绝对很棒


我建议你看看所谓的“突变保险”。使用变异覆盖率作为比简单单元测试覆盖率更好的指标。变异测试是改变代码库不同部分的逻辑运算符(产生所谓的“变异”),然后运行单元测试,以找出有多少单元测试会失败,从而显示其有效性(如果在注入突变体后,结果与未注入突变体时相同-单元测试质量较低,它们不会捕获任何新的注入代码库问题).

我不确定我是否理解您的问题。当您编写unittest时,您正在编写测试其他代码的代码。因此,您必须能够编写代码才能编写测试。确实不太清楚,但我可以向您提供相关元素。首先,有一些工具,如
cumber
,允许您在文本文件中定义测试,因此非技术人员可以理解、编辑和创建您的测试。其次,有一种称为
测试驱动开发
的方法,您总是在编写代码之前编写测试。