본문 바로가기
프로그래밍

프로그래밍 「 추천 편」품질 보증(QA) 자동화 엔지니어를 위한 Java: 배워야 할 것이 있습니까?

by grapedoukan 2023. 5. 29.
728x90

님이 촬영 한 사진 크리스 벤슨 on Unsplash

지난 겨울, 나는 경영진으로부터 특이한 일을 받았다. 저는 소수의 수동 테스터 그룹을 위한 교육을 조직하여 그들 중 최고가 QA 자동화로 전환될 수 있도록 하는 임무를 맡았습니다. 그러나 나는 한 가지 외에는 특별한 지시를받지 못했습니다 : Java 기본 사항을 숙지하고 나중에 가능한 한 빨리 QA 자동화 엔지니어 멘토에게 전달해야합니다. QA 멘토는 자동화의 기초(Selenium, Webdriver 등)를 훨씬 더 빨리 가르쳐야 합니다. 우리는 4 월까지 성공적인 학생들이 새로운 역할에서 일을 시작할 수 있도록 몇 달을 할당 받았습니다.

먼저 나는 꼬리 회전에 들어갔다. 글쎄요, 저는 테스터와 함께 일한 적이 없거나 테스터에게 코딩 방법을 가르친 적이 없습니다. 이 사람들에 대한 요구 사항은 프로그래머의 요구 사항과 확실히 다르므로 이론적으로 접근 방식이 달라야 합니다!

저에게 첫 번째는 QA 자동화 엔지니어가 무엇이고 무엇을 하는지에 대한 명확한 이해였습니다.

QA 자동화 엔지니어는 누구입니까?

QA Automation Engineer는 소프트웨어 도구를 사용하여 테스트를 생성하고 실행 결과를 검증하는 제품 품질 보증 전문가입니다.

QA 오토 메이터의 주요 임무는 QA 매뉴얼로 작성된 테스트 케이스를 기반으로 프로그램 작업을 확인하는 자동 스크립트를 만드는 것입니다. 이를 통해 테스트 시간을 줄이고 프로세스를 단순화할 수 있습니다.

QA Automation Engineer는 프로그래머의 기술과 테스터의 로직을 동시에 구현합니다. 수동 QA 전문가 또는 테스터와 같은 QA 자동화는 개발, 테스트 및 운영의 다양한 단계에서 제품의 품질을 모니터링합니다. 프로그래머 등 QA 자동화는 개발에 참여하지만 프로그래머의 코드를 확인하기 위해 특정 제품을 만듭니다.

QA 자동화 엔지니어의 고객은 동일한 작업을 반복해서 반복하지 않기 위해 일부 기능을 자동화해야 하는 수동 테스터입니다.

인비트윈

QA 자동화가 진정 누구인지 깨닫고 정신을 차렸을 때, 저는 평소와 같이 행동했습니다. 나는 구글을 열었고, 그 질문을 연구했고, 자동화 멘토 인 동료를 괴롭히기 시작했다. 그 후, 내 작업 계획이 내 머리 속에서 성숙 해졌고, 나는 그것을 개발하기 시작했다. 결과로 판단 한 과정이 성공한 것으로 판명 되었기 때문에 (아래에 이에 대해 쓸 것입니다)이 기사에서 제 생각을 공유하기로 결정했습니다. 그렇다면 자동화자가 되고자 하는 수동 테스터를 위해 Java를 배우는 올바른 방법은 무엇일까요?

언어 기초에 대한 자신감 있는 지식

QA 자동화는 구문과 도구를 정말 잘 알고 있어야 합니다. 개발자와 달리 Java의 아키텍처 기능에 너무 깊이 관여할 필요는 없습니다.

그들은 언어를 도구로 사용하고 그것을 잘하기만 하면 됩니다. 이를 일부 개발자 그룹에도 적용할 수 있지만 내부에서 언어가 작동하는 방식을 알고 있다면 도움을 받아 문제를 최적으로 해결하는 방법도 알고 있습니다.

QA 자동화 전문가의 주요 임무는 다른 사람의 코드를 자신의 코드로 확인하는 것입니다. 그들의 코드가 최선이거나 최적이어서는 안됩니다. 그들에게 더 중요한 것은 빠르고 자신 있게 코드를 작성하는 것입니다. 나쁜 뜻이 아니라 빠르고 자신 있게 말입니다. 따라서 QA 자동화 엔지니어에게는 구문을 정말 잘 알고 지연과 망설임 없이 간단한 작업을 수행하는 것이 특히 중요합니다. 이를 위해서는 학습 첫날부터 많은 코딩 작업을 해결해야 합니다. 코딩 작업은 정말 많은 작업이 있는 한 매우 간단할 수 있습니다!

미래의 프로그래머를 위해 이러한 문제를 수집 한 후에는 테스터를 위해 컬렉션의 첫 번째 부분을 사용하기로 결정했습니다. 그러나 이러한 작업이 항상 충분한 것은 아니며 인터넷에서 새로운 작업을 찾고있었습니다. 개발자뿐만 아니라 QA 자동화의 모든 초보자도 이러한 작업을 찾는 것이 좋습니다. 나는 학생들을 위해 그것을했고 초급부터 중급자까지 Java 코스가 포함 된 사이트 인 CodeGym을 찾았습니다. 이 사이트에는 모든 Java Core 주제를 다루는 수많은 코딩 작업이 포함되어 있습니다. 가장 좋은 점은 솔루션을 자동으로 검증하는 것이므로 멘토로서 매번 이러한 모든 작업을 확인해서는 안 됩니다.

두 번째 사이트는 GeeksForGeeks입니다. 좋은 Java 과정 별도로 코딩 작업 모음이 있습니다. 솔직히 말해서 이러한 작업의 대부분은 언어보다 프로그래밍 자체에 관한 것이 더 복잡하고 더 많습니다. 어쨌든, 프로그래밍을 더 깊이 이해하고자 하는 자동화 엔지니어에게 정말 유용합니다.

QA 자동화는 다른 사람의 코드를 읽어야 합니다.

... 그리고 충분히 빨리하십시오.

일주일에 한 번 학생들에게 교실에서 몇 가지 쉬운 과제를 해결하도록 요청했습니다. 작업 솔루션 (3에서 5까지)은 최대 20-30 분까지 할당되었습니다. 학생이 그 중 일부를 해결하는 방법을 모르거나 문제가 발생하면 어려운 과제를 남기고 다음 과제로 넘어갔습니다.

수업의 두 번째 부분은 1.5 시간 동안 지속되었습니다. 모두가 다른 학생의 작업을 받았고 솔루션을 테스트하고 코드 수정 방법에 대한 제안을 하도록 요청받았습니다. 마지막 단계에서 권장 사항이 포함된 코드가 작성자에게 제공되어 검토자의 권장 사항에 따라 작업을 수정하려고 했습니다. 그런 운동의 결과는 나조차도 놀랐다.

제 학생들은 변수의 이름을 명확히하기 시작했고, 코드가 코드 규칙에 더 잘 부합하기 시작했으며, 훨씬 더 이해하기 쉬운 주석이 작품에 나타났습니다. 같은 방식으로 버그 보고서가 내 눈앞에서 개선되었습니다.

나는 이런 종류의 일의 매혹적인 효과를 보았지만 일주일에 한 번 이상 이것을 할 시간이 없었습니다. 그래서 나는 다른 사람의 코드를 읽는 것에 대한 매일의 연습을 생각해 냈다 : 나는 학생들에게 CodeRanch 포럼 (초보자를위한 섹션)과 위에서 언급 한 CodeGym (도움말 섹션)에 갈 것을 제안했다. 거기서 그들은 많은 초보자 질문을 발견했는데, 대부분 코드에서 무엇이 잘못되었는지에 관한 것입니다. 그래서 그들은 문제를 해결하고 결과를 보여 주려고 노력했습니다.

이 코드는 좋은가요 나쁜가요? QA 자동화 엔지니어는 답을 알아야 합니다.

QA 자동화가 코드를 최적화할 수 있다면 말 그대로 전문가의 보석입니다. 이 과정에서 저는 학생들에게 리팩토링과 최적화의 기초를 가르칠 생각을 했습니다. 나는이 주제에 대해 여러 차례 강의를했다. 나는 그들에게 마틴 파울러 (Martin Fowler)의 아주 좋은 책 "리팩토링 (Refactoring)"을 읽도록 권했다. 학생들이 코드를 변경하기로 결정한 이유를 최적화하고 설명하는 데 필요한 몇 가지 길고 혼란스러운 예제를 준비했습니다. 나는 초보자를 위해 같은 포럼에서 나쁜 코드를 찾아 숙제로 개선 할 것을 제안했다.

몇 가지 테스트 작성

사실, JUnit 라이브러리를 공부하고 프로그래밍 학습 초기부터 테스트로 코드를 다룰 수 있습니다. 아마도 다음 수동 테스터 그룹과 함께 시험적으로 이 작업을 수행할 것입니다. 그러나 처음으로 학생들이 Java 구문, OOP 및 데이터 구조의 기초를 수용 가능한 수준으로 마스터한 이러한 순간에 대해 이야기하기로 결정했습니다. 그때까지 사람들은 거의 두 달 동안 공부를 했고 QA 멘토(웹 셀레늄 드라이버 등)와 함께 수업을 시작하려고 했습니다.

이 기간 동안 Spring 및 Maven 프로젝트, 기능, 통합 및 단위 테스트에 대해 이야기했습니다. 나는 JUnit과 Mockito 라이브러리로 작업하는 것을 가르쳤다. 이때 그들이 해결 한 모든 작업은 훨씬 더 어려워졌고 단일 프로젝트로 결합되었습니다. 모든 사람은 3일 동안 몇 가지 작업을 완료하고 파트너에게 전달해야 했으며, 파트너는 코드의 작동 가능성을 최적화하고 테스트로 코드를 처리했습니다. 이 기간 동안 교실에서 우리는 어려움을 논의하고 극복하는 법을 배웠습니다.

다음은 예시적인 코스 일정입니다.

1. Java 기초 학습: 구문,

2. 이런,

3. 컬렉션,

4. 람다 표현식 학습

5. 정규식 학습; 이 단계에서 그들은 많은 작은 작업을 해결합니다.

6. 단위 테스트; 우리는 그러한 테스트로 우리의 작업을 다루기 시작합니다. 다른 사람의 코드를 테스트하기 시작합니다. 우리는 급우들의 임무를 수행하고 단위 테스트로 그들을 다룹니다. 인터넷에서 질문을 찾고 테스트로 다루십시오.

7. 디자인 패턴

8. 작은 작업으로 리팩토링

9. Spring Basics(입문 강연)

10. Gradle로 작업하기

11. Maven으로 작업하기

12. 기본 SQL 및 데이터베이스 작업

13. 모의 테스트의 기초: 모키토; 필자는 테스트를 통해 다루어야 하는 버그가 있는 일반 프로젝트를 위한 작은 개인 코드 파트를 제공하고, 이를 위한 모의 테스트를 만들고, 가능한 한 많은 버그를 잡아야 합니다. 매일 더 작은 물건들.

14. 최종 프로젝트. 모든 사람은 얻은 지식을 사용하여 테스트해야 하는 프로그램의 특정 부분을 얻습니다.

결과

이 과정은 3 개월이 걸렸습니다. 그 후 학생들은 자동화 테스트 과정 (Selenium Webdriver, PageObject 및 PageFactory, Jenkins, 서비스 테스트 (REST, SOAP) 패턴 등)에 참여했습니다. 이 모든 작업을 수행하는 데 약간의 시간이 걸렸기 때문에 자동화 테스트 과정 멘토인 Chris와 저는 우리의 작업에 대처했습니다. Java에 대한 지식이 풍부하면 수동 테스터를 QA 자동화로 전환하는 것이 매우 간단해집니다.

그 결과, 프로그래밍 과정을 수료하고 Chris와 함께 자동화 과정을 이수한 8 명의 수동 엔지니어 중 7 명이 QA 자동화 엔지니어로 일하기 시작했습니다. 한 명은 Java 개발자가 되었습니다. Chris는 이 사람들의 프로그래밍 지식에 매우 만족했습니다.

독학을 위한 권장 사항

따라서 수동 테스터이고 QA 자동화가 되고 싶다면 Java와 프로그래밍을 같은 방식으로 배우십시오.

1. Java Core를 배우고 많은 작은 코딩 작업을 해결하십시오. 최소한 구문, OOP, 컬렉션 및 정규식을 알고 있어야 합니다.

2. 좋은 IDE에서 작업하십시오 (IntelliJ IDEA를 권장합니다).

3. 단위 테스트를 배웁니다.

4. System.out.println 없이 자체 단위 테스트를 사용하여 코드 결과를 확인합니다.

5. 코드 리팩토링에 대해 읽어보세요.

6. 초급 수준에서 SQL을 배우십시오.

7. Maven, Spring, Gradle에 대해 조금 알아보십시오.

8. 다른 사람들의 코드를 읽고, 확인하고, 개선하십시오. 이것을 찾으려면 특별한 포럼을 사용하십시오.

9. Mockito(또는 기타 모의 테스트 프레임워크)로 작업합니다.

10. 이제 테스트 도구에 대해 알아보십시오.

728x90