Después de trabajar como tester en ByteDance y Pinduoduo durante 5 años, la experiencia de remar obtenida tras quedarse despierto hasta tarde...

Permítanme explicar brevemente los antecedentes: un graduado desconocido de 985 con una licenciatura se unió a Byte después de graduarse en 2017. Después de eso, cambió de trabajo a Pinduoduo y se dedicó a pruebas de software. No tengo experiencia en prácticas antes, pero se consideran 5 años de experiencia laboral.

En los últimos cinco años, me ascendieron una vez y cambié de empresa. Ha habido momentos de felicidad y satisfacción, y días de confusión y lucha, sin embargo, me he transformado con éxito de un novato en el lugar de trabajo a un palista senior.

En este proceso, resumí algunas experiencias prácticas de remo, algunas las aprendí yo mismo y otras aprendí comunicándome con otros, me gustaría compartirlas contigo aquí.

 

1. Aprenda a pensar profundamente y resumir

Lo primero que quiero decir es que aprendan a pensar profundamente y resumir, esto es lo más importante y significativo en mi opinión.

Primero pensemos profundamente. En el círculo de programadores, a menudo se pueden escuchar algunos comentarios: Mi trabajo no tiene ningún contenido técnico. Solo hago un poco todos los días. ¿Qué puedo aprender de esto? Dejando de lado algunas burlas y argumentos en broma, esto tal vez sea De hecho, los verdaderos pensamientos de algunos compañeros de clase, al menos yo solía pensar así. Más tarde, con la acumulación de experiencia laboral y discusiones con algunos compañeros de alto nivel, descubrí que esta idea en realidad estaba muy equivocada.

La idea de que no hay nada que aprender es básicamente el resultado de un pensamiento perezoso. Cualquier pequeña cosa aparentemente discreta, siempre que pienses profundamente y profundices un poco más verticalmente o amplíes horizontalmente, es un océano de conocimiento que es suficiente para que la gente se entregue.

Hablemos del resumen . Creo que esto es lo que falta a la mayoría de los programadores: pueden hacer una cosa muy bien simplemente sumergiéndose en el trabajo. Pero casi nunca hago resúmenes abstractos, de modo que después de trabajar durante varios años, los conocimientos que he adquirido siguen siendo esporádicos y poco sistemáticos. No sólo es fácil de olvidar, sino que también hace que mi visión sea estrecha y mi visión de los problemas, ser limitado.

Es muy importante hacer algunos resúmenes y reflexiones oportunamente, este es un proceso de la técnica al Tao, que te permitirá ver el problema desde una perspectiva más amplia y a un nivel superior. Al encontrarte con el mismo tipo de problemas, puedes seguir la metodología resumida para avanzar y resolverlo de manera sistemática y jerárquica.

Como ejemplo. Para los servicios en segundo plano, hoy se optimizó 1G de memoria y mañana se optimizará el 50% del tiempo de lectura y escritura. ¿Puede resumir la optimización del rendimiento?

Por ejemplo, en la capa de aplicación, puede administrar las aplicaciones conectadas al servicio y ordenar la racionalidad de su acceso, en la capa de arquitectura, puede realizar almacenamiento en caché, preprocesamiento, separación de lectura y escritura, asíncrono, paralelo, etc.; en la capa de código, puede hacer cosas Hay más: agrupación de recursos, reutilización de objetos, diseño sin bloqueos, división de claves grandes, procesamiento retrasado, compresión de codificación, ajuste de gc y varias prácticas de alto rendimiento relacionadas con el lenguaje... nos vemos la próxima vez Para escenarios que requieren optimización del rendimiento, se puede aplicar un conjunto completo de ideas de inmediato, y el resto es una cuestión de herramientas y operaciones prácticas.

Algunos estudiantes dijeron que discutiría con el PM todos los días para trabajar en los requisitos y no optimizar el rendimiento. No discutamos si se puede optimizar el rendimiento. Solo en términos de necesidades comerciales, también hay cosas que se pueden resumir. Por ejemplo, ¿cómo construir un sistema? ¿Ha pensado en las capacidades centrales del sistema, los límites del sistema, los cuellos de botella del sistema, la división y capas de servicios y la gobernanza del servicio? Discute los requisitos con el PM todos los días. ¿Cómo debería hacerlo, como Como estudiante técnico, cultive el pensamiento sobre el producto y guíelo: tendencias de productos, cómo hacer que la arquitectura preceda a los negocios, estos temas también se pueden pensar y resumir, ¿verdad?

Por lo tanto, el aprendizaje y el crecimiento son un proceso impulsado por uno mismo. Si siente que no hay nada que aprender, lo más probable es que no sea porque realmente no haya nada que aprender, sino porque es demasiado vago, no solo demasiado vago en la acción, sino también También demasiado perezoso para pensar. Demasiado perezoso.

Puede escribir más artículos técnicos, compartir más y obligarse a pensar y resumir. Después de todo, si el artículo no es lo suficientemente profundo, todos se avergonzarán de compartirlo públicamente.

2. Aprender activamente y mantener el entusiasmo por la tecnología.

Una teoría de la ansiedad que ha circulado ampliamente en el círculo de Internet en los últimos dos años se llama el fenómeno del programador de 35 años. La idea general es que los programadores que trabajan en esta industria hasta los 35 años básicamente están esperando ser despedido. Es innegable que la industria de Internet es efectivamente inferior a los funcionarios públicos y otras profesiones institucionales en este sentido. Pero el programador de 35 años en esta pregunta no tiene 35 en el sentido fisiológico absoluto, debería referirse a aquellos programadores que han trabajado durante más de diez años y los que han trabajado durante dos o tres años, no hay mucha diferencia. Los siguientes trabajos son básicamente dormirse en los laureles sin tomar la iniciativa de aprender y recargar energías: 35 años es casi lo mismo que 25 años, y no hay deseo de aprender y crecer a los 25 años, sino que muchos asuntos triviales en Se añade la vida familiar y las exigencias salariales suelen ser más altas, lo que a la empresa le parece que esto no es muy competitivo.

Y si aprendemos activamente y mantenemos nuestras capacidades técnicas y reservas de conocimientos proporcionales a nuestros años de trabajo, ¿cómo podemos tener ansiedad cuando tengamos 35 años? Creo que las grandes empresas deberían apresurarse a conseguir expertos de este tipo, ¿verdad? Pero el aprendizaje es una La cuestión de es en realidad un proceso antihumano, que requiere que nos obliguemos a salir de nuestra zona de confort, tomar la iniciativa de aprender y mantener el entusiasmo técnico. Hay un dicho en Didi que dice más o menos así: toma la iniciativa de salir de tu zona de confort y siente la lucha y la presión. A menudo es de noche antes del amanecer, y es entonces cuando creces más rápido. Por el contrario, si sientes que vives una vida cómoda todos los días y que tu trabajo es sólo una pérdida de tiempo, entonces es posible que estés hirviendo una rana en agua tibia.

Durante el período posterior a la graduación, suele tener más tiempo libre, lo que es un buen momento para trabajar duro para aprender tecnología. Utilice este período de tiempo para sentar una base sólida, desarrollar buenos hábitos de estudio y mantener una actitud de aprendizaje positiva, lo que debería beneficiarlo a lo largo de su vida. En cuanto a cómo estudiar de manera eficiente, hay muchos expertos que escriben publicaciones de este tipo en Internet. Después de llegar a la empresa, también puede encontrar muchos de estos artículos compartidos en la intranet, por lo que no entraré en más detalles.

3. Tome la iniciativa y comunique sus comentarios de manera oportuna.

Los dos primeros son desde una perspectiva personal. Espero que todos puedan mejorar sus capacidades personales y mantener la competitividad central, pero desde la perspectiva de una empresa, al reclutar empleados, lo más importante es que creen valor comercial y contribuyan a la empresa. .

Aunque generalmente existe un determinado sistema de formación para el ingreso escolar, en realidad la empresa no tiene la obligación de ayudarnos a crecer. Cuando se trata de poder lograr cosas y crear valor para la empresa, creo que las dos palabras más importantes son tomar la iniciativa, tomar la iniciativa para asumir tareas, comunicar de manera proactiva, promover de manera proactiva el progreso del proyecto, coordinar recursos de manera proactiva, dar de manera proactiva. retroalimentación ascendente y creación proactiva de impacto, poder, etc.

Cuando entré por primera vez a la empresa, básicamente hacía bien mi trabajo de acuerdo con las tareas asignadas por el líder, y luego hacía lo mío, casi nunca tomaba la iniciativa de comunicarme con otros o pensar activamente en ideas que pudieran ayudar al desarrollo de el proyecto. Pensé que era suficiente con completar mi trabajo con calidad y cantidad, pero luego descubrí que en realidad eso no era suficiente, era solo el requisito más básico.

El enfoque de algunos estudiantes es que el líder solo necesita sincronizar la dirección que quieren tomar recientemente, y el líder básicamente no necesita preocuparse por la siguiente serie de cosas: Soy un líder como este compañero de clase y también me gusta. Una palabra que se escucha a menudo después de unirse a una empresa es conciencia del propietario, lo que probablemente signifique esto.

Otro punto muy importante en este proceso es la comunicación y retroalimentación ascendente oportuna. Si el proyecto no avanza sin problemas, si encuentra algún problema, sincronice con el líder a tiempo. Si no está seguro de la solución técnica, puede discutirla con el líder. Si no puede coordinar algunos recursos, puede preguntarle al Líder en busca de ayuda. No tenga demasiados escrúpulos, pensando que serán demasiado problemáticos. Los líderes realmente hacen lo que hacen. Esto importa.

Si el proyecto avanza sin problemas y realmente no hay necesidad de que el líder intervenga, entonces también es necesario brindar retroalimentación oportuna sobre el progreso del proyecto y los beneficios obtenidos, y si tiene alguna idea, también debe discutirla. Pregunte al líder por sus sugerencias sobre el progreso actual y qué otras áreas hay. Necesita mejorar para eliminar errores de información. Hacer estas cosas, por un lado, hace un uso razonable de los diversos recursos del líder y, por otro lado, también le permite comprender su carga de trabajo y controlar el proyecto en general. Después de todo, el líder también tiene líderes, y también necesitan informar.

Tal vez sea la gestión ascendente lo que a todo el mundo no le gusta. Es un poco ofensivo. En realidad, yo tampoco lo hago bien. Pero el punto más básico es: no aceptes una tarea y trabajes malhumorado o incluso te aísles del mundo. No te has sincronizado con el líder durante un mes, pensando en retrasar un gran movimiento o algo así, eso es básicamente genial.

Debes tomar la iniciativa, puedes empezar obligándote a hablar en varios lugares públicos, si tienes preguntas o ideas, puedes hacerlo uno a uno.

4. Cómo mejorarte a ti mismo

Finalmente, necesita un conjunto de buena información para mejorar el sistema y mejorar sus capacidades técnicas integrales.

Como evaluador, me gustaría compartir algunos de mis resúmenes y resúmenes de tecnología a lo largo de los años, así como mis notas sobre las habilidades que un evaluador automatizado avanzado debe dominar, espero que pueda ayudar a aquellos que estén interesados ​​en Este camino de la tecnología ¡Amigos que llegan hasta el final!

El contenido incluye: teoría de pruebas, conceptos básicos de Linux, conceptos básicos de MySQL, pruebas web, pruebas de interfaz, pruebas de aplicaciones, herramientas de administración, conceptos básicos de Python, relacionados con Selenium, pruebas de rendimiento, relacionados con LordRunner, etc.

1. Conocimientos teóricos básicos de pruebas de software:

  • Modelo de calidad del software: El proceso de prueba del software asegura la calidad del software ¿Qué aspectos de esta garantía se pueden considerar en base al modelo de calidad?
  • Clasificación de pruebas: El proceso de prueba de software se puede clasificar desde diferentes perspectivas, desde pruebas básicas hasta pruebas avanzadas.
  • Proceso de desarrollo: informe a los probadores sobre el ciclo de vida completo del software, el proceso del software desde cero hasta la muerte.
  • Proceso de prueba: dominar y guiar a los probadores sobre cómo realizar trabajos de prueba en proyectos reales. Esto requiere que los evaluadores tengan un conocimiento profundo de los procesos de prueba comunes. Encuentre diferentes proyectos de software y sepa dónde probar los defectos del software de manera más eficiente.
  • Plan y programa de pruebas: cómo planificar las actividades de prueba en el proyecto y garantizar que las actividades de prueba se lleven a cabo de manera ordenada.
  • Métodos de casos de diseño: algunos métodos de diseño de casos de prueba que deben dominarse durante la fase de prueba de caja negra. Por ejemplo, pruebas de caja negra: métodos de diseño de casos de uso, elementos de casos de prueba, etc.
  • Defectos de software: los defectos deben identificarse durante la ejecución de la prueba y deben enviarse informes de defectos.
  • Gestión de defectos: después de enviar un defecto, cómo ayudar al equipo de desarrollo a manejar los problemas de envío de verificación en el trabajo real. Por ejemplo: - Clasificación de prioridad del nivel de error, descripción del error, ciclo de vida del error, uso de herramientas de gestión de defectos, como ZenTao, etc.

 

2. Habilidades de prueba de software: sistema Linux

El sistema Linux es el principal sistema operativo del servidor y una de las tecnologías básicas que debe poseer la mayoría de las personas que trabajan en puestos de TI. Como ingenieros de pruebas de software, a menudo necesitamos ver los registros en el lado del servidor para localizar el origen del problema.

  • Conocimientos básicos del sistema Linux: multiusuario, multitarea, versión de distribución, etc.
  • Comandos de operación comunes de Linux: visualización de registros, compresión y descompresión de archivos, administración de usuarios, permisos de archivos, etc.
  • Implementará y configurará aplicaciones básicas jdk, mysql, tomcat.
  • Instalación y uso de Docker
  • Escribir scripts RAD de shell básicos
  • Herramientas de terminal remota utilizadas: shell, xftps, etc.

 

3. Habilidades básicas de prueba de software: base de datos SQL

Como sistema de aplicación esencial para los sistemas de software, las bases de datos a menudo necesitan operarse en procesos como pruebas de interfaz, pruebas de rendimiento, etc. para verificar la exactitud e integridad de los datos, que son inseparables de las operaciones de adición, eliminación, modificación y consulta. de la base de datos Durante la fase de implementación del proyecto, la base de datos también necesita ser Necesidad de cooperar con la implementación del proyecto. Se requiere soporte de base de datos en las pruebas de rendimiento y pruebas de automatización de interfaces.

  • Conceptos básicos de base de datos.
  • Base de datos relacional
  • MYSQL básico para agregar y modificar declaraciones de consulta y procedimientos almacenados
  • Consulta compleja MYSQL, consulta de varias tablas
  • Índice MYSQL y conceptos relacionados con transacciones.
  • Uso de herramientas de cliente de base de datos: como Navicat

 

4. Habilidades de prueba de software: lenguaje de programación.

Se recomienda que los amigos sin conocimientos de programación puedan aprender el lenguaje Python.

El contenido de aprendizaje del lenguaje Python incluye los siguientes puntos de conocimiento:

Conceptos básicos de Python: características del lenguaje Python, entorno de ejecución, sintaxis básica, estilo de codificación, programas de muestra

estructura de datos:

  • Estructuras de datos básicas: números, cadenas, juicio de tipos, conversión de tipos, corte, formato de cadenas, operaciones numéricas, parámetros posicionales y parámetros de palabras clave;
  • Combinar estructuras de datos: listas, tuplas, rangos, diccionarios, conjuntos, objetos que no se pueden dividir, descomprimir, direcciones de estructuras de datos en memoria, datos inmutables
  • Control del programa: estructura de secuencia, estructura de bucle, estructura de juicio, manejo de excepciones, operadores lógicos
  • Funciones: defina funciones, parámetros de funciones, valores de retorno, alcances de variables, funciones anónimas y funciones integradas de uso común
  • Módulos y bibliotecas: módulos y paquetes, palabra clave de importación, bibliotecas estándar de uso común, bibliotecas de terceros de uso común, herramienta de administración de paquetes pip
  • Orientado a objetos: el origen y las ventajas de la orientación a objetos, la relación entre las clases de propiedades y los objetos orientados a objetos, y los métodos especiales de los objetos.
  • Registro: baseConfig, registro de archivos, registro de correo electrónico, formato personalizado, marcador de posición integrado, filtrado de niveles, propagación jerárquica, archivo de configuración
  • Marco de prueba: unitest, pytest, etc.
  • Programación concurrente: multiproceso, multiproceso, corrutina, grupo de subprocesos, control de sincronización, comunicación de subprocesos, distribución, parche mono, sintaxis asíncrona, generador
  • Programación de red: conceptos básicos de programación de sockets, servidor y cliente TCP, procesamiento de solicitudes en paralelo, servidor y cliente HTTP

 

5. Automatización avanzada de pruebas de software: pruebas de interfaz

La prueba de interfaz es esencialmente un tipo de prueba funcional: simula que el cliente llama a la interfaz del servidor a través de scripts o herramientas. Debido a que se prueba desde la capa de interfaz, los problemas se pueden descubrir antes, lo que mejora la eficiencia de las pruebas y reduce los costos de reparación.

  • aprendizaje del protocolo http/httpst
  • Aprenda métodos de solicitud comunes: GET, POST
  • Aprendizaje de cookies y sesiones
  • Conceptos básicos de interfaces.
  • Comprensión del documento de interfaz
  • Escritura de casos de prueba de interfaz
  • Herramientas de prueba de interfaz utilizadas: cartero, Jmeter, SoapUl

 

6. Automatización avanzada de pruebas de software: pruebas de rendimiento

Los requisitos técnicos para las pruebas de rendimiento son muy altos y no solo requieren una comprensión profunda de los indicadores de las pruebas de rendimiento, las clasificaciones de las pruebas y el diseño de las pruebas. También necesita adquirir conocimientos sobre la arquitectura y el negocio del sistema para poder diseñar mejor escenarios de rendimiento y analizar los cuellos de botella de rendimiento del sistema. Las herramientas más utilizadas para las pruebas de rendimiento incluyen jmeter y loadrunner, y puede aprenderlas según sea necesario.

  • Conceptos básicos de desempeño: significado de las pruebas de desempeño, comprensión de los indicadores de desempeño comunes, clasificación de las pruebas de desempeño
  • Proceso de prueba de rendimiento: análisis de requisitos de rendimiento, diseño de escenarios de rendimiento, escritura de scripts de prueba, monitoreo de recursos de ejecución de pruebas, ajuste de rendimiento, pruebas de regresión
  • Utilizado por Jmeter y correcaminos
  • Salida del informe de prueba de rendimiento

7. Automatización avanzada de pruebas de software: automatización de aplicaciones

Cada vez más proyectos y sistemas brindan servicios a través de terminales móviles. La calidad del software en los terminales móviles es cada vez más importante y las pruebas automatizadas de aplicaciones se han convertido en una parte importante de las pruebas automatizadas. Con Appium, las pruebas automatizadas de aplicaciones y las pruebas automatizadas web tienen muchas similitudes, pero como ingeniero de pruebas, aún necesita dominar las herramientas y funciones de las aplicaciones móviles.

  • Construcción del entorno de prueba móvil de Appium: Appium ServerAppium y Desktop, construcción del entorno operativo Android, instalación y conexión del simulador, modo de depuración de dispositivos reales, adb, weditor, UiAutomator22, Monkey
  • Posicionamiento de elementos de Appium: posicionamiento de elementos de aplicación nativa, posicionamiento de elementos de aplicación web puro, posicionamiento de elementos de aplicación híbrida
  • Interacción con elementos de Appium: espera a que se carguen los elementos, atributos y métodos básicos de los elementos, operaciones de deslizamiento, arrastre, zoom, operaciones de selección desplegable, procesamiento de mensajes de brindis, análisis de control común, análisis de diseño común
  • Marco de prueba de paquetes: integre Appium, adb y otras herramientas, manejo de excepciones predefinido, registre registros de Appium, capturas de pantalla y cree un marco de prueba multipropósito

 

8. Automatización avanzada de pruebas de software: integración continua y pruebas continuas

La integración continua y las pruebas continuas son un proceso de creación, prueba de productos y corrección de errores en iteraciones. Ayuda a los equipos a encontrar defectos en las primeras etapas de la fase de desarrollo, cuando suelen ser menos complejos y más fáciles de solucionar. A través de la integración continua y las pruebas continuas, puede minimizar el riesgo de errores temprano y entregar software de mejor calidad más rápido.

  • Control de versiones Git: introducción en segundo plano, implementación del entorno, espacio de trabajo, área de preparación y área de envío, creación y fusión de ramas, resolución de conflictos, etiquetas, configuración y alias, almacén local y almacén remoto, GitHub y nube de código.
  • Integración continua con Jenkins: introducción en segundo plano, implementación del entorno, estructura de archivos, almacén remoto y servidor privado, dependencia de paquetes ja, gestión de complementos
  • Container Docker: comprenda las imágenes, los almacenes, los contenedores, el motor Docker y los diagramas de arquitectura, la configuración de red y la persistencia de datos de Dockers.

Finalmente me gustaría agradecer a todos los que leyeron atentamente mi artículo, la reciprocidad siempre es necesaria, aunque no es algo muy valioso, si puedes usarlo, puedes tomarlo directamente:

 

Estos materiales deberían ser el almacén de preparación más completo y completo para los amigos [de pruebas de software]. Este almacén también ha acompañado a decenas de miles de ingenieros de pruebas a través del viaje más difícil. ¡Espero que también pueda ayudarlos! Cualquiera que lo necesite Los socios pueden hacer clic en la pequeña tarjeta a continuación para recibirla

Supongo que te gusta

Origin blog.csdn.net/hlsxjh/article/details/132739054
Recomendado
Clasificación