Advanced Level Test Automation Engineering v2.0ΑΓ(ׅހߨԋऀ͕༁ͨ͠ͷ) ▸ Test automation has many advantages. It: ▸ Allows more tests to be run per build compared to manual tests (खಈςετͱൺֱͯ͠ɺϏϧυ͝ͱʹΑΓଟ͘ͷςετΛ࣮ߦͰ͖Δ) ▸ Provides the ability to create and execute tests that cannot be executed manually (e.g., real time response, remote testing, and parallel testing) (खಈͰ࣮ߦͰ͖ͳ͍ςετʢϦΞϧλΠϜͷԠɺϦϞʔτςετɺฒྻςετͳͲʣΛ࡞͓Αͼ࣮ߦͰ͖Δ) ▸ Allows for tests that are more complex than manual tests (खಈςετΑΓෳࡶͳςετΛ࣮ߦͰ͖Δ) ▸ Executes faster than manual tests (खಈςετΑΓ࣮͘ߦ͞ΕΔ) ▸ Is less subject to human error (ਓҝతͳΤϥʔͷӨڹΛड͚ʹ͍͘) ▸ Is more effective and ef fi cient in use of test resources (ςετϦιʔεͷ༻͕ΑΓޮՌత͔ͭޮతͰ͋Δ) ▸ Provides quicker feedback regarding SUT quality (ςετରͷ࣭ʹରͯ͠ΑΓਝͳϑΟʔυόοΫΛఏڙ͢Δ) ▸ Helps improve system reliability (e.g., availability, and recoverability) (γεςϜͷ৴པੑʢՄ༻ੑ෮چੑͳͲʣͷ্ʹد༩͢Δ) ▸ Improves the consistency of test execution across test cycles (ςεταΠΫϧશମʹ͓͍ͯςετ࣮ߦͷҰ؏ੑΛ্ͤ͞Δ)
Advanced Level Test Automation Engineering v2.0ΑΓ(ׅހߨԋऀ͕༁ͨ͠ͷ) ▸ However, test automation has potential disadvantages including: ▸ Additional costs will be involved for the project as there may be a need to hire a test automation engineer (TAE), buy new hardware, and set up training (ςετࣗಈԽΤϯδχΞͷޏ༻ɺ৽͍͠ϋʔυΣΞͷߪೖɺτϨʔχϯάͷઃఆͳͲʹΑΓɺϓϩδΣΫτʹՃͷίε τ͕͔͔ΔՄೳੑ͕͋Δ) ▸ Requirement of initial investment to set up a test automation solution (ςετࣗಈԽιϦϡʔγϣϯΛηοτΞοϓ͢ΔͨΊͷॳظࢿ͕ ඞཁͰ͋Δ) ▸ Time to develop and maintain a test automation solution (ςετࣗಈԽιϦϡʔγϣϯͷ։ൃͱҡ࣋ʹ͕͔͔࣌ؒΔ) ▸ Requirement for clear test automation objectives to ensure success (ޭΛ࣮֬ʹ͢ΔͨΊʹɺ໌֬ͳςετࣗಈԽͷత͕ඞཁͰ͋Δ) ▸ Rigidity of tests, and less adaptability to changes in the SUT (ςετ͕ݻఆԽ͞ΕɺSUTͷมߋʹରͯ͠ॊೈʹదԠ͠ʹ͍͘͜ͱ͕͋Δ) ▸ Introduction of additional defects by test automation (ςετࣗಈԽʹΑͬͯ৽ͨͳ͕ܽؕಋೖ͞ΕΔՄೳੑ͕͋Δ)
▸ ςετΤϯδχΞͱSDETͷҧ͍ʢ2004࣌ʣʢॻ੶ʮHOW WE TEST SOFTWARE AT MicrosoftʯΑΓʣ ▸ Microsoftʹͯ2001,2002ࠒ͔Βଘࡏ͢ΔɻSTEͱSDET͕ฒྻͯ͠ɺ2005ʹSDETʹ౷Ұɻ ▸ ͨͩ͠ɺࠓͷMicrosoftͷ࠾༻αΠτͰɺຊ৬छͷืूͳ͍ Common SDE/T tasks Common STE tasks Develop test harness for test automation Write test plans Develop specialty test tools for security or performance testing Document test cases Automate API or protocol tests Run manual tests Participate in bug bashes Write automation for core tests Find, debug, fi le, and regress bugs Find, fi le, and regress bugs Participate in design reviews Participate in design reviews Participate in code reviews
> Software Engineers in Test (SET) develop test frameworks and build robust, scalable, and effective tests. SETs spend a majority of their time coding in either C++, Java, or scripting in Python. A SET is a software engineer, a core developer, who has a passion for test engineering. (Google Testing Blog "Google is hiring SETs" ΑΓ) ▸ Googleʹͯ2010ࠒ͔Βଘࡏͨ͠ ▸ 2016͔ΒSETI(Software engineer, tools and infrastructure)౷߹͞Εͨ ( Google Testing Blog "What Test Engineers do at Google" , Google Testing Blog "From QA to Engineering Productivity" ΑΓ)
Test Selectionʯͱ͍͏ςετͷ࣮ߦ݁ՌมߋใΛར༻ͨ͠ςετબ༏ઌॱҐ͚ςετ࣮ߦٕज़͕͋Γɺ ݱ࣮తͳ࣮ͱͯ͠ Launchable ͕πʔϧల։͍ͯ͠Δ ▸ ηΩϡςΟςετͷࣗಈԽ ▸ ύλʔϯϚονϯάػցֶशʹΑΔ੬ऑੑͷࢦఠൣғ͕֦େ͍ͯ͠Δ ▸ Amazon CodeGuru ηΩϡϦςΟ ▸ > ػցֶश (ML) ͱࣗಈਪΛΈ߹Θͤͨ੩తΞϓϦέʔγϣϯηΩϡϦςΟݕࠪ (SAST) πʔϧ ▸ Trivy ▸ > Scanners (what Trivy can fi nd there): OS packages and software dependencies in use (SBOM), Known vulnerabilities (CVEs), IaC issues and miscon fi gurations, Sensitive information and secrets, Software licenses